胡小林,於黃萍
(1. 中國船舶及海洋工程設計研究院,上海 200011;2. 滬東中華造船(集團)有限公司,上海 200129)
AutoCAD .NET API在管系原理圖設繪中的應用
胡小林1,於黃萍2
(1. 中國船舶及海洋工程設計研究院,上海 200011;2. 滬東中華造船(集團)有限公司,上海 200129)
船舶管系原理圖設繪過程中涉及諸多操作,如管線繪制、閥件附件及管子的編號、信息錄入及統(tǒng)計、表單生成、圖塊操作、背景圖制作等。使用.NET API開發(fā)出與上述操作相應的輔助設計功能,以及為Auto CAD文字操作開發(fā)出的文本編輯功能,由此大大減少管系原理圖設繪過程中的重復操作,節(jié)約大量無技能操作的時間,提高設計效率。詳細闡述了Auto CAD二次開發(fā)的主流工具VisualLISP、VBA、ObjectARX、.NET API及其各自的特點,演示了不同開發(fā)工具的代碼對比,介紹了Auto CAD最新的二次開發(fā)工具.NET API的優(yōu)勢及采用.NET API代碼的長遠適用性。減少了設計人員的重復類操作,提高設計效率。
Auto CAD;.NET API;二次開發(fā);管系原理圖;設繪
目前,船舶行業(yè)的管系原理圖的設計工具基本上都是選擇AutoCAD軟件。設計過程中既有體現(xiàn)設計人員設計理念的操作,也有分類、統(tǒng)計等操作,此外還有文字排版操作。這些操作有相當一部分是重復或類似的操作,占用了設計人員大量的時間。越來越多的設計人員希望能從大量重復或類似的操作中解放出來,從而可以有更多的時間去了解更多的前沿知識,優(yōu)化設計理念,提高設計水平。
Autodesk公司為AutoCAD提供了好幾種編程接口,設計人員可以根據(jù)自己的需求和編程能力,選擇適合自己的編程語言,對AutoCAD進行二次開發(fā),從而利用二次開發(fā)的功能完成設計過程中大量的重復或類似操作。
1.1VisualLISP
VisuaILISP語言是具備面向對象功能的編程語言,它除了具備為擴展和自定義AutoCAD功能而設計的AutoLISP的功能外,還支持ActiveX對象模型。開發(fā)者用VisuaILISP開發(fā)程序能夠使用ActiveX對象及其事件進行更深層次的開發(fā)。
1.2VBA
VBA(Visual Basic for Applications)與AutoCAD中強大的ActiveX自動化對象模型的結合,開辟了一種新的AutoCAD定制架構,為開發(fā)人員訪問AutoCAD圖形庫中對象開辟了新途徑。
1.3ObjectARX
ObjectARX是采用面向對象編程原理,以C++為編程語言的ARX(AutoCAD Run-Time Extension),即AutoCAD運行時擴展編程語言。ObjectARX應用程序實質上是一個Windows動態(tài)鏈接庫(DLL)文件,其與AutoCAD運行在同一內(nèi)存地址上,并能直接利用AutoCAO核心數(shù)據(jù)結構和代碼,減少了系統(tǒng)資源占用量,提高了程序的運行速度。
1.4.NET API
自AutoCAD2006版開始,Autodesk公司為AutoCAD增加了一種新的開發(fā)方式,即.NET API。.NET API提供開發(fā)人員大量的托管封裝類,便于開發(fā)人員使用任何.NET支持的程序設計語言編程訪問程序集或者開放類庫來操作AutoCAD和圖形文件。通過.NET API開發(fā)AutoCAD的優(yōu)點:
1) 有更多的編程環(huán)境可以編程訪問 AutoCAD圖形。在.NET API出現(xiàn)之前,開發(fā)人員只限于使用ActiveX? Automation 和支持COM的語言、AutoLISP?和 用C++的ObjectARX;
2) 通過使用應用程序本地化的.NET API或開放的ActiveX/COM庫與其他Windows?應用程序(例如Microsoft Excel和Word)結合比以前更容易;
3) .NET框架是為32位及64位操作系統(tǒng)而設計,而VBA只為32位操作系統(tǒng)設計;4) 與那些傳統(tǒng)編程語言相比,如 C++,.NET 具有更低的學習要求來訪問高級接口。鑒于AutoCAD已經(jīng)逐漸趨于不再支持VBA,且64位操作系統(tǒng)也逐漸成為主流操作系統(tǒng),該次開發(fā)采用.NET API[1]。
為了方便更進一步了解.NET API,下面以繪制一條直線作為例子,以不同的語言來演示它們之間的區(qū)別。
2.1ObjectARX
2.2VBA
2.3Visual LISP
2.4VB .NET
在船舶管系原理圖設繪后期,最重要的工作就是對原理圖中的閥件和附件進行明細統(tǒng)計。每一份原理圖一般都附有一份閥件、附件和管路的明細表,這是一份相當繁瑣的工作,好在AutoCAD本身提供了屬性提取功能,目前通用的做法是將閥件、附件和管路做成屬性塊,設繪過程中對屬性塊中各屬性的值進行定義,最后進行屬性提取,生成明細表。
為了實現(xiàn)上述的屬性提取,首先要在AutoCAD中進行屬性塊的定義。閥件、附件的屬性塊應包括的屬性主要有標記、通徑、材料、標準、證書等,管路的屬性塊應包括的屬性主要有標記、通徑、外徑、壁厚、材料、證書等。屬性塊的塊名可以自己定義命名規(guī)則,一般閥件的塊名用Vxxx(xxx為001到999的數(shù)字)表示,附件的塊名用Fxxx(xxx為001到999的數(shù)字)表示,管路的屬性塊只有一種,命名就比較簡單,塊名用P01或P001等均可,只要方便程序讀取且不與其他塊名沖突即可。
4.1繪制管線
在船舶管系原理圖設繪時,首先要繪制管線,管線中的介質的流向有單向也有雙向。管線繪制功能有:繪制單箭線、繪制雙箭線、單雙箭線轉換。為了滿足在外來圖紙上的更改,程序集還可實現(xiàn)直線轉為單箭線或雙箭線的功能。
繪制箭線命令執(zhí)行時,命令行會出現(xiàn)“是畫單箭線還是雙箭線[單箭線(S)/雙箭線(D)]<單箭線(S)> [S/D]<S>:”的提示,同時屏幕繪圖區(qū)會彈出相應的快捷菜單。既可在命令行輸入,也可通過鼠標在快捷菜單選擇您要實現(xiàn)的功能。
單箭線轉雙箭線時程序可自動轉換,雙箭線轉單箭線時需要用戶指定箭線方向。
直線轉箭線時,命令行會出現(xiàn)“是改單箭線還是雙箭線[單箭線(S)/雙箭線(D)]<單箭線(S)> [S/D] <S>:”的提示,同時屏幕繪圖區(qū)會彈出相應的快捷菜單。同理,轉雙箭線時程序可自動轉換,單箭線時需要用戶指定箭線方向。
4.2插入塊參照
在船舶管系原理圖設繪過程中,一個重要的操作就是插入各種系統(tǒng)所需的閥件和附件,該程序提供閥件附件外部屬性塊參照的插入功能。命令執(zhí)行后程序彈出對話框,選擇所需的閥件或附件即可直接插入。
4.3背景圖顏色更改
在繪制原理圖過程中,有時候會需要將其他圖紙作為背景,而其他圖紙中往往會有許多圖塊以及嵌套圖塊,這些圖塊中圖元的顏色往往各種各樣,更改圖塊的顏色往往無法改變圖元的顏色,逐個圖塊更改費時費力,在圖元數(shù)量巨大時甚至會造成AutoCAD內(nèi)存不足。該程序提供的功能可調(diào)出“顏色選擇”對話框按用戶指定的顏色作為背景色更改所有圖塊中的所有圖元。
4.4閥件附件屬性匹配
一份原理圖中某些閥件、附件的某些屬性有時是相同的,比如同一管路上的閥件其材料、通徑等屬性是一樣的,但逐個輸入繁瑣且耗時。屬性匹配功能與AutoCAD及Office的格式刷類似,可批量更改閥件附件的屬性(見圖1~3)。
4.5管子屬性匹配
功能與“4.4”類似(見圖2)。
4.6更改屬性值寬度因子
由于圖幅關系,有時候需要將一批閥件、附件或管路的屬性值的寬度因子進行調(diào)整,以使各圖元之間不互相影響。該功能可批量將指定的屬性值的寬度因子調(diào)整為用戶指定的值。
4.7顯示指定的閥件附件管子
原理圖在繪制過程中經(jīng)常會更改管路及閥件附件通徑及材料,完成后有時會出現(xiàn)漏改的情況,為了檢查是否有遺漏,該程序提供了檢查功能。在對話框中輸入用戶的要求,圖形中就會高亮顯示符合條件的圖塊(見圖3)。
圖1 閥件屬性匹配
圖2 管子屬性匹配
圖3 顯示
4.8閥件附件編號
按對話框中的要求輸入,程序會按用戶要求進行閥件附件編號,同時,如果用戶需要,還可以將閥件附件屬性全部導出到一個Excel文件中(見圖4)。
圖4 閥件附件編號
4.9管子編號
同“4.8”(見圖5)。
圖5 管子編號
4.10 導入Excel表
如果用戶更改了Excel文件,通過該功能可將Excel內(nèi)容同步到AutoCAD中。
4.11 生成閥件附件清單
一份完整的原理圖都配有一份包含圖中所有閥件附件的清單,在圖中選擇插入點,程序可自動生成完整的閥件附件清單。
4.12生成管材清單
功能同4.11。
4.13 生成閥件附件統(tǒng)計清單
有時船東要求原理圖的閥件附件清單應為統(tǒng)計形式的,比如:FTV001~009,A16015 CB/T309-2008,直通截止閥,通徑15,青銅,數(shù)量9;……。程序也可同時滿足此要求。
4.14 標記旋轉
不管是閥件附件標記還是管子標記,在實際繪圖過程中都經(jīng)常需要調(diào)整其文字方向,屬性塊文字方向的調(diào)整與寬度因子調(diào)整類似,為了快速地調(diào)整,程序提供了批量快速的操作。
4.15 管子參數(shù)計算
在設繪過程中,經(jīng)常會碰到流量、內(nèi)徑及流速的計算,程序提供了這三者的切換計算界面,方便用戶快速獲得想要的結果(見圖6)。
4.16通徑公制英制互換
通常原理圖中的閥件附件清單中的通徑是公制的,但現(xiàn)在有些船東要求通徑用英制。如果從零開始繪制是沒有什么問題的,但有些圖紙可以部分借用以縮短設計周期,如果單位制要求不一致就會有一定的修改量。該功能可以讓用戶在清單中自由切換公制和英制。
4.17 插入符號表
原理圖中有著許多的閥件附件符號,代表著不同的閥件附件,有些船東要求每份原理圖中應該嵌有一份包含圖中所有閥件附件符號的符號表。該功能可自行讀取所有的閥件附件符號并列表。
首先是要求用戶指定符號表的插入點,然后要求用戶選擇符號表的說明文字是中文、英文還是中英文,用戶完成后程序便按要求列出符號表(見圖7)。
4.18 屬性塊內(nèi)容轉換
在設計過程中,由于客戶要求不一樣,屬性塊包含的屬性內(nèi)容就不一樣,比如,通常塊包含“MARK”、“STANDARD”、“DIAMETER”、“MATERIAL”等,但有的用戶要求的屬性內(nèi)容為“ITEMNO”、“STD”、“NOMDIA”、“MAT”等。屬性內(nèi)容不一致,程序便無法使用。為了解決這個矛盾,程序提供了屬性轉換功能,使用時切換為程序可以使用的格式,客戶使用時再切換回去即可(見圖8)。
圖6 管子參數(shù)計算
圖7 符號表
圖8 屬性轉換
原理圖繪制完成后,還需要寫關于系統(tǒng)的相關說明,程序還提供了關于說明操作的一些輔助功能,使AutoCAD具有類似Word的排版功能。盡管AutoCAD提供了多行文字功能,但許多設計人員仍舊習慣于單行文字,這些文字排版功能作用就凸顯了出來。
同時,這些輔助的功能也可用于AutoCAD其他類型的圖紙文本編輯,這些功能既方便操作,又節(jié)約時間,而且圖面整潔美觀。
5.1大小寫互換
說明中的英文多數(shù)時候是要求大寫,也有用小寫的。用戶無論是復制其他內(nèi)容還是自行輸入內(nèi)容,無需在意其是大寫還是小寫,輸入完成后點擊需要的大小寫功能即可。
5.2文字對齊
文字對齊包括文字左對齊和文字上下對齊。
5.3文字等間距
多行的說明文字輸入完成后,執(zhí)行該命令可按用戶要求設置各行的文字間距。
5.4項目編號
項目編號包括純數(shù)字編號和說明內(nèi)容編號。原理圖的說明編號按設計人員的習慣不同而不同,有的喜歡將數(shù)字序號獨立出來,有的喜歡與說明放在一起。執(zhí)行該命令可按用戶要求編序號,不用再單獨輸入或更改。
通過AutoCAD .NET API針對船舶管系原理圖設繪中的操作進行的二次開發(fā),大大減少了重復或類似的操作,提高了設計人員的設計效率。當然,程序也可按照用戶的需求進行定制,一方面可對目前的功能進行優(yōu)化,另一方面也可賦予程序更多的功能,最大程度地為設計人員服務。
[1] Autodesk官網(wǎng).Managed .NET Developer's Guide (.NET), http://help.autodesk.com/view/ACD/2015/ENU/? guid= GUID-C3F3C736-40CF-44A0-9210-55F6A939B6F2
[2] 王文波,等. AutoCAD 2010二次開發(fā)實例教程(Object ARX)[M]. 北京:機械工業(yè)出版社,2008.
[3] 曾洪飛,等. AutoCAD VBA&VB.NET開發(fā)基礎與實例教程[M]. 北京:中國電力出版社,2013.
[4] Marion Cottingham[美]. AutoCAD VBA從入門到精通[M]. 孔祥豐,等譯. 北京:電子工業(yè)出版社,2001.
[5] 周樂來,等. AutoCAD 2008: Visual LISP二次開發(fā)入門到精通[M]. 北京:機械工業(yè)出版社,2008.
[6] 李冠億. 深入淺出AutoCAD .NET二次開發(fā)[M]. 北京:中國建筑工業(yè)出版社,2012.
Application of AutoCAD.NET API in Piping Diagram Preparation
HU Xiao-lin1, YU Huang-ping2
(1. Marine Design& Research Institute of China, Shanghai 200011;2. Hudong-Zhonghua Shipbuilding (Group) Co., Ltd., Shanghai 200129)
In the course of ship piping diagram preparation a number of operations will be involved such as pipeline rendering, valve fittings and pipe numbering, information entering and statistical analysis, form generation, segment operation, background drawing and so on. Design-aiding functions corresponding to the above operations have been developed by means of .NET API, as well as the text editor function developed for AutoCAD text operation, which will significantly reduce repetitive work during the piping diagram preparation process, saving a lot time from the unskilled operation and increasing design efficiency. This paper elaborates in detail the main stream tools for secondary development of AutoCAD such as VisualLISP, VBA, Object ARX, .NET API and their respective characteristics;demonstrates the code comparison among different development tools; introduces the advantages of .NET API, the latest secondary development tool of AutoCAD, as well as its long-term applicability, which can reduce repetitive work of designers and improve design efficiency.
AutoCAD; .NET API; secondary development; piping diagram; preparation
U662.9
A
2095-4069 (2016) 01-0045-06
10.14056/j.cnki.naoe.2016.01.009
2015-03-23
胡小林,男,高級工程師,工程碩士,1977年生。1999年畢業(yè)于武漢理工大學船舶動力裝置專業(yè),現(xiàn)主要從事船舶輪機設計工作。