邵彥錕,高志良
當前,參數(shù)化繪圖已成為工業(yè)領(lǐng)域的主流繪圖方式之一,參數(shù)化繪圖水平體現(xiàn)了企業(yè)的設(shè)計實力。如今Auto CAD軟件依然是平面繪圖中受眾面最廣的軟件,但Auto CAD軟件的基礎(chǔ)繪圖工作完成的僅是逐項添加對象和圖元,圖元與圖元之間不具備良好的參數(shù)聯(lián)動性。能否通過對CAD軟件的二次開發(fā)實現(xiàn)以交互方式進行參數(shù)化繪圖,甚至實現(xiàn)一鍵生成圖紙的功能,這是本文重點探討的問題。本文以第四代兩段篦冷機液壓系統(tǒng)的電氣控制柜圖紙設(shè)計為例,介紹在CAD軟件基礎(chǔ)上二次開發(fā)的參數(shù)化繪圖軟件。
不同項目的產(chǎn)量不同,其篦冷機篦床篦板列數(shù)和液壓泵數(shù)量也會有很大變化,同時第四代篦冷機是雙段篦床,搭配時可能會出現(xiàn)兩段不一致的情況,如一段9列、二段6列。另外,在不同項目中,根據(jù)篦床列數(shù)及所提供傳感器種類的不同,液壓廠家提供的電氣接口數(shù)量及信號位置等的組合方式也非常多。這就導(dǎo)致不同項目中,即便是同一產(chǎn)量甚至同一型號的篦冷機液壓控制柜內(nèi),電氣元件的變化也非常大,無法真正實現(xiàn)電氣設(shè)備的標準化作業(yè)流程。每個項目的篦冷機控制柜圖紙繪制約消耗工時2~5d/人,在工期被嚴格控制的工程項目面前,這部分的工時消耗不容忽視。
為解決上述問題,推進標準化作業(yè)流程,決定對篦冷機液壓控制柜的CAD制圖方式進行二次開發(fā)。Auto Desk公司旗下的Auto CAD對外發(fā)布了Object ARX、.net、Auto Lisp、VBA等多種開發(fā)途徑。
Object ARX是Auto Desk公司針對Auto CAD二次開發(fā)推出的開發(fā)包,它提供以C++為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能快速訪問Auto CAD圖形數(shù)據(jù)庫,具有強大的功能。.net使開發(fā)人員可在.net框架下使用VB.net、C#、C++等多種編程語言對CAD進行開發(fā),其比Object ARX結(jié)構(gòu)簡單。Auto Lisp是直接由Auto CAD產(chǎn)生的語言,往往需配合其他語言一起使用。
VBA是以VB語言為基礎(chǔ)嵌入在CAD內(nèi)部的一種開發(fā)環(huán)境,無需額外的編譯環(huán)境(IDE),無需引用外部庫,能夠為用戶提供良好的交互性界面,非常適合非計算機專業(yè)的技術(shù)人員學(xué)習(xí)使用。通過幾行簡單的VBA代碼即可實現(xiàn)CAD中簡單圖元的自動參數(shù)化繪制,能夠顯著提高設(shè)備圖紙二次開發(fā)的工作效率。
CAD圖紙繪制的二次開發(fā)工作由圖紙?zhí)幚砗痛a構(gòu)建兩部分組成。
3.2.1 圖紙優(yōu)化
優(yōu)化控制柜CAD圖紙,將設(shè)備所有的非標特性元素集成為同一套圖紙,并將所有同一特性的圖元整理規(guī)劃成圖塊,并對每一種圖塊單獨命名。完成這一步驟即完成圖紙圖元“數(shù)據(jù)庫”的搭建,避免后續(xù)使用VBA代碼重復(fù)構(gòu)建圖紙圖元,能夠節(jié)省大量代碼編制時間,提高軟件運行效率。如圖1所示,亮藍部分表示同類塊的所有圖元。
圖1 同一種圖塊中的所有的圖元元素
優(yōu)化完成后的圖紙擁有設(shè)備全部可選特性,并擁有大量圖塊,后續(xù)的所有代碼工作都將在這張優(yōu)化后的圖紙上進行相應(yīng)的減法和局部的排序、統(tǒng)計等工作。
3.2.2 代碼構(gòu)建
在CAD的VBA環(huán)境中設(shè)計窗口面板,規(guī)劃需要的功能區(qū),如圖2所示。窗口面板分為三個功能區(qū),一部分是統(tǒng)一的圖紙項目信息;一部分是圖紙設(shè)計人和審核人的電子簽名,這部分可以將已記錄的電子簽名塊和拾取的簽名塊自動布置到每張圖相應(yīng)的簽名區(qū)域,同時也可選擇文本格式的簽名方式;最后一部分是對設(shè)備非標特性的選擇,這部分可根據(jù)不同類型的設(shè)備隨時進行調(diào)整。
圖2 參數(shù)化繪制軟件的窗口面板
(1)代碼方面
首先創(chuàng)建選擇集,選擇集是被提取圖元的“暫存器”,會多次出現(xiàn)在后續(xù)代碼中。
定位每張圖紙的位置,并傳輸面板的項目信息。
(2)簽名方面
提前在圖中創(chuàng)建所需的簽名塊,放在任意位置,再通過代碼復(fù)制粘貼面板所選擇的簽名,并部署到每張圖紙相應(yīng)的位置。
以上代碼只是其中的一小部分,但已能夠說明程序的主要思路,在代碼執(zhí)行面板設(shè)定命令并執(zhí)行后,會在原有“標準庫”圖紙上進行修改。代碼執(zhí)行前后“標準庫”圖紙畫面如圖3、4所示。
圖3 代碼執(zhí)行前“標準庫”圖紙的內(nèi)容
圖4 代碼執(zhí)行后“標準庫”圖紙的內(nèi)容
綜上所述,最終的運行結(jié)果是在原“標準庫”的基礎(chǔ)上進行了相應(yīng)的“減法”、排序、統(tǒng)計等操作,以VBA模式對設(shè)備圖紙繪制方式進行二次開發(fā),不需要龐大的代碼量,前期的圖紙優(yōu)化承擔(dān)了大部分工作量,二次開發(fā)的軟件結(jié)構(gòu)清晰,便于學(xué)習(xí),可供其他類型設(shè)備圖紙的開發(fā)工作參考。若僅依靠代碼來繪制圖形,圖元重復(fù)生成的工作量非常大,而且還會涉及到外接數(shù)據(jù)庫等相關(guān)操作。執(zhí)行參數(shù)化繪制軟件的一鍵出圖功能后,幾秒鐘即可自動生成項目所需圖紙,極大節(jié)省了圖紙設(shè)計時長。
基于VBA模式的圖紙開發(fā)工作同樣適用于其他的設(shè)備,如DCS控制柜、輥壓機液壓控制柜、輥磨液壓控制柜、變頻控制柜、軟啟動柜等設(shè)備,甚至工藝或電氣系統(tǒng)的藍圖設(shè)計,只要整理出設(shè)計內(nèi)容的共性和非標特性,并將其量化和優(yōu)化,再進行功能細分和代碼構(gòu)建,即可達到同樣的效果。