陳茂勇 黃祖欽
(上海外高橋造船有限公司 上海200137)
船舶的詳細(xì)設(shè)計(jì)正由二維設(shè)計(jì)趨向于三維設(shè)計(jì),在后者成熟應(yīng)用之前,傳統(tǒng)的二維設(shè)計(jì)模式仍是主流。作為二維繪圖通用軟件,AutoCAD在船體制圖中使用率較高,但受到軟件的跨行業(yè)通用性限制,其繪圖功能對(duì)船體結(jié)構(gòu)專業(yè)領(lǐng)域的契合度仍顯不足。然而,AutoCAD支持二次開發(fā)以強(qiáng)化現(xiàn)有功能或?qū)崿F(xiàn)新的功能[1-3],行業(yè)內(nèi)也有諸多具有針對(duì)性的輔助工具被開發(fā)出來用以實(shí)現(xiàn)特定的繪圖功能。此類工具在一定程度上能替代手工完成某些復(fù)雜的繪圖過程,但其單一功能較為零散,對(duì)繪圖效率的提升不夠全面。而且,由于所采用的繪圖標(biāo)準(zhǔn)不一致,導(dǎo)致各類輔助工具在行業(yè)內(nèi)的通用性不佳,也無法被有效共享。針對(duì)以上現(xiàn)狀及存在問題,本文提出一種基于AutoCAD二次開發(fā)的船體結(jié)構(gòu)圖快速繪圖新模式(下文簡(jiǎn)稱快速模式)作為解決方案。
AutoCAD 提供了幾種可用于控制圖形和數(shù)據(jù)庫的應(yīng)用程序編程接口,其中內(nèi)嵌的AutoLISP是一種功能全面的解釋性編程語言,可用于調(diào)用AutoCAD 命令、系統(tǒng)變量和對(duì)話框??焖倌J交贏utoLISP編程語言和用于增強(qiáng)AutoLISP的Visual LISP編程語言開發(fā)而成。
二次開發(fā)程序?qū)凑湛焖倮L圖流程進(jìn)行設(shè)計(jì),如圖1所示。
圖1 快速繪圖流程
在普通的AutoCAD環(huán)境下,設(shè)計(jì)人員主要通過繪圖命令配合修改命令進(jìn)行結(jié)構(gòu)圖形的繪制,同時(shí)需在繪圖前或繪圖后進(jìn)行圖層、線型、顏色等標(biāo)準(zhǔn)項(xiàng)的調(diào)整。對(duì)于稍復(fù)雜的圖形,還需要額外輔助線的支持。這種模式下完成一個(gè)目標(biāo)圖形的繪制,需全程手工干預(yù),不僅低效,還存在易產(chǎn)生人為錯(cuò)誤的風(fēng)險(xiǎn)。相比之下,基于二次開發(fā)程序,結(jié)構(gòu)圖形的繪制過程趨于格式化,通常經(jīng)過兩個(gè)步驟即可完成目標(biāo)圖形的繪制。
快速模式通過二次開發(fā)程序?qū)崿F(xiàn),而程序的二次開發(fā)又以繪圖標(biāo)準(zhǔn)為指導(dǎo),因此,在程序開發(fā)中系統(tǒng)地融入標(biāo)準(zhǔn)是建立完善繪圖模式的前提??焖倌J缴婕暗降幕A(chǔ)標(biāo)準(zhǔn)項(xiàng)包括文字及標(biāo)注樣式、線型定義、圖層定義和繪圖節(jié)點(diǎn),如圖2所示。這些標(biāo)準(zhǔn)項(xiàng)分別在標(biāo)準(zhǔn)配置文件(ASCII文本文件)中逐行定義,其中每個(gè)文本行包含一項(xiàng)“鍵,值”組合。如:文本中對(duì)文字高度的定義為“text_height,1.8”。
圖2 標(biāo)準(zhǔn)的組成
在開始制圖前,通常要根據(jù)繪圖標(biāo)準(zhǔn)對(duì)當(dāng)前繪圖環(huán)境做初始化設(shè)置,如建立標(biāo)準(zhǔn)的文字及標(biāo)注樣式、線型和圖層等。傳統(tǒng)的做法是在標(biāo)準(zhǔn)的樣板文件基礎(chǔ)上繪制新圖,但其存在有以下幾點(diǎn)不足:
(1)依賴于標(biāo)準(zhǔn)樣板;
(2)樣板只能在新建的文檔中應(yīng)用;
(3)在樣板應(yīng)用后產(chǎn)生的標(biāo)準(zhǔn)項(xiàng)的變更仍需手工干預(yù)。
快速模式下,設(shè)計(jì)者可通過程序界面對(duì)標(biāo)準(zhǔn)配置文件進(jìn)行修改和確認(rèn),并由程序自動(dòng)實(shí)現(xiàn)標(biāo)準(zhǔn)的初始化,初始化流程見下頁圖3。在程序設(shè)計(jì)中,初始化的本質(zhì)是將每個(gè)標(biāo)準(zhǔn)項(xiàng)設(shè)為一個(gè)變量,并將對(duì)應(yīng)的配置值賦給該變量。變量被用來生成標(biāo)準(zhǔn)的文字及標(biāo)注樣式、線型和圖層等,并為繪圖輔助程序提供參數(shù)。
圖3 初始化流程
初始化分成以下兩種形式:
(1) 被動(dòng)初始化
文字及標(biāo)注樣式、線型定義和圖層定義等內(nèi)容的初始化,會(huì)對(duì)文檔造成更改并隨文檔保存,因此,這部分內(nèi)容需在設(shè)計(jì)者下達(dá)指令后,由被動(dòng)初始化程序完成。
(2) 主動(dòng)初始化
繪圖節(jié)點(diǎn)配置、圖形與圖層的關(guān)聯(lián)等不對(duì)文檔造成更改的內(nèi)容,由主動(dòng)初始化程序靜默完成,不需設(shè)計(jì)者下達(dá)指令。
這種模式不但彌補(bǔ)了傳統(tǒng)做法的不足,還使標(biāo)準(zhǔn)變得量化可見,初始化的過程也更加簡(jiǎn)潔和規(guī)范,具體表現(xiàn)在以下四個(gè)方面。
2.2.1 文字樣式和標(biāo)注樣式
文字和標(biāo)注都是結(jié)構(gòu)圖中最常規(guī)的圖面元素,文字樣式和標(biāo)注樣式一般相對(duì)固化,其標(biāo)準(zhǔn)樣式的建立過程可通過程序進(jìn)行簡(jiǎn)化。在程序界面中確認(rèn)樣式名稱及細(xì)節(jié)后,文字及標(biāo)注樣式將在被動(dòng)初始化程序運(yùn)行后自動(dòng)建立。
2.2.2 線型定義
輔助程序提供直觀的界面進(jìn)行線型創(chuàng)建和修改,并將線型實(shí)時(shí)加載或更新到當(dāng)前文檔,如圖4所示。
圖4 線型定義
設(shè)計(jì)者可用兩種方式定義標(biāo)準(zhǔn)線型:
(1)通過輸入框創(chuàng)建或修改標(biāo)準(zhǔn)線型;
(2)將現(xiàn)有文檔中的線型保存為標(biāo)準(zhǔn)線型。
2.2.3 圖層定義
圖層是一項(xiàng)重要的繪圖標(biāo)準(zhǔn),用于有效組織和管理圖面內(nèi)容。圖層通常按不同的圖面元素和構(gòu)件類型來分類。如將文字歸入TEXT圖層,標(biāo)注歸入DIMENSION圖層,構(gòu)件線根據(jù)主次類型分別歸入LAYER1、LAYER2等。設(shè)計(jì)人員依據(jù)傳統(tǒng)的繪圖方法,需借助樣板引入或手動(dòng)建立這一系列標(biāo)準(zhǔn)圖層。在快速模式下,標(biāo)準(zhǔn)圖層由被動(dòng)初始化程序自動(dòng)建立,顏色、線型、線寬等圖層要素可由設(shè)計(jì)者自行定義,參見圖5。
將所繪圖形歸入正確的標(biāo)準(zhǔn)圖層是一項(xiàng)必不可少的工作。使用傳統(tǒng)的繪圖方式,在交替繪制不同類型的圖形元素時(shí),設(shè)計(jì)者需反復(fù)切換圖層以實(shí)現(xiàn)圖層的標(biāo)準(zhǔn)化;而且屬于同一圖層的圖形可能需要設(shè)置不同的顏色或/和線型,這些情況無疑增加了繪圖過程中的手工干預(yù)量。在快速模式下,主動(dòng)初始化程序?qū)D形元素關(guān)聯(lián)到指定的標(biāo)準(zhǔn)圖層,如圖6所示。通過輔助程序所繪的圖形將自動(dòng)歸入所關(guān)聯(lián)的圖層,無需手動(dòng)進(jìn)行圖層調(diào)整。
圖5 圖層定義
圖6 圖形與圖層的關(guān)聯(lián)
2.2.4 繪圖節(jié)點(diǎn)
繪圖節(jié)點(diǎn)包含一些控制圖形細(xì)節(jié)和形狀的設(shè)置項(xiàng),如下頁圖7所示。在主動(dòng)初始化程序運(yùn)行后,這些設(shè)置項(xiàng)以全局變量的形式駐留在當(dāng)前文檔的內(nèi)存空間中,并被輔助程序調(diào)用以達(dá)到按節(jié)點(diǎn)繪圖的目的。若節(jié)點(diǎn)與打印比例關(guān)聯(lián),則節(jié)點(diǎn)將按比例縮放,如文字高度。
圖7 節(jié)點(diǎn)配置
快速模式下,基于二次開發(fā)輔助程序,繪圖過程具有自動(dòng)化、智能化、構(gòu)件化和批量化的特點(diǎn),這些特點(diǎn)使該模式能夠有效提升繪圖效率。
自動(dòng)化是快速模式最主要的特點(diǎn)。以繪制一個(gè)肘板為例,其輪廓形狀由若干關(guān)鍵點(diǎn)(和半徑)控制,通過程序計(jì)算這些關(guān)鍵點(diǎn)的坐標(biāo)并連接成多段線實(shí)現(xiàn)自動(dòng)化。因此,設(shè)計(jì)者只需輸入或指定邊長(zhǎng)、半徑、角隅孔、邊界線等用于計(jì)算關(guān)鍵點(diǎn)的數(shù)據(jù),即可自動(dòng)完成肘板繪制。程序界面如圖8所示。
圖8 肘板繪制
程序提供材質(zhì)、板厚等可選項(xiàng),供設(shè)計(jì)者按需輸入,這些信息將被提取用以進(jìn)行肘板的規(guī)格和焊腳高度等自動(dòng)標(biāo)注。
AutoCAD支持對(duì)圖形添加擴(kuò)展數(shù)據(jù)[4],通過擴(kuò)展數(shù)據(jù),設(shè)計(jì)者可以將任何圖形貼上自定義標(biāo)簽,并賦予額外的屬性。有效組織這些標(biāo)簽和屬性能實(shí)現(xiàn)圖形的分組歸類,使程序能夠識(shí)別特定圖形組,從而具備智能化的特點(diǎn)。以下程序代碼可實(shí)現(xiàn)擴(kuò)展數(shù)據(jù)的添加,將貫穿孔圖形貼上“CUTOUT”的標(biāo)簽,并賦予“T-BAR”屬性:
智能化體現(xiàn)在兩方面(以繪制貫穿孔和補(bǔ)板為例):
(1)智能識(shí)別結(jié)構(gòu)類型
繪制貫穿孔時(shí),程序在框選范圍內(nèi)智能識(shí)別型材截面,并自動(dòng)生成由設(shè)計(jì)者指定類型的貫穿孔;繪制補(bǔ)板時(shí),程序在框選范圍內(nèi)智能識(shí)別貫穿孔,并自動(dòng)生成由設(shè)計(jì)者指定類型的補(bǔ)板,如圖9所示。
圖9 貫穿孔和補(bǔ)板繪制
(2)智能識(shí)別結(jié)構(gòu)尺寸
通常,型材的貫穿孔和補(bǔ)板在《船體結(jié)構(gòu)節(jié)點(diǎn)圖冊(cè)》中有詳細(xì)的外形尺寸要求,如下頁圖10所示。只要確定型材截面的尺寸,就可以得到指定類型的貫穿孔尺寸;同理,只要確定貫穿孔的尺寸,也可以得到指定類型的補(bǔ)板尺寸。而采用傳統(tǒng)的手動(dòng)方式,在繪制型材截面、貫穿孔和補(bǔ)板時(shí),都要輸入外形尺寸數(shù)據(jù),造成這些數(shù)據(jù)的重復(fù)輸入。快速模式下,輔助程序能夠自動(dòng)識(shí)別型材截面或貫穿孔尺寸,并借以計(jì)算對(duì)應(yīng)貫穿孔或補(bǔ)板的尺寸。因此,在型材截面、貫穿孔和補(bǔ)板這一系列結(jié)構(gòu)的繪制過程中,設(shè)計(jì)者只需在繪制型材截面時(shí)輸入一次即可。圖9中貫穿孔和補(bǔ)板的繪制,僅需指定類型而無需輸入結(jié)構(gòu)尺寸。
圖10 貫穿孔和補(bǔ)板的尺寸
智能化的特點(diǎn)可避免結(jié)構(gòu)尺寸的重復(fù)輸入,不但提高繪圖過程的自動(dòng)化程度,而且能有效杜絕因重復(fù)輸入而產(chǎn)生人為錯(cuò)誤。
所謂構(gòu)件化是指圖形由封閉或半封閉的連續(xù)線條組成,自成一個(gè)單獨(dú)構(gòu)件,并具有材質(zhì)、板厚、尺寸等屬性。相比于使用零散線條組成結(jié)構(gòu)圖形的傳統(tǒng)方式,構(gòu)件化的圖形更貼近實(shí)際,且易于選擇和管理,如圖11所示。構(gòu)件化的圖形所具有的屬性能夠被輔助程序提取和分析,用于支持智能化的實(shí)現(xiàn)。
圖11 構(gòu)件化的圖形
不同于通過復(fù)制粘貼所實(shí)現(xiàn)的批量化繪制,在快速模式下,輔助程序能批量繪制形狀、大小和角度等不完全相同的圖形,例如批量繪制圖9中不同規(guī)格T型材對(duì)應(yīng)的貫穿孔和補(bǔ)板。
本文闡述快速繪圖模式的總體思路和實(shí)施流程,并對(duì)二次開發(fā)輔助程序的功能特點(diǎn)進(jìn)行分析,初步展示該模式的基本框架。相比于已公開的多數(shù)應(yīng)用于船體制圖領(lǐng)域的零散AutoCAD插件,承載該快速模式的輔助程序在功能上具有更好的系統(tǒng)性、連續(xù)性和通用性。經(jīng)過若干實(shí)船項(xiàng)目的持續(xù)應(yīng)用和跟蹤優(yōu)化,證明該模式達(dá)到了提升結(jié)構(gòu)圖繪圖效率的預(yù)期目標(biāo)。在尚未應(yīng)用三維自動(dòng)化設(shè)計(jì)軟件進(jìn)行船體詳細(xì)設(shè)計(jì)的情況下,基于AutoCAD二次開發(fā)的船體結(jié)構(gòu)圖快速繪圖模式具有明確的實(shí)際應(yīng)用價(jià)值。