邵彥錕,高志良

當(dāng)前,參數(shù)化繪圖已成為工業(yè)領(lǐng)域的主流繪圖方式之一,參數(shù)化繪圖水平體現(xiàn)了企業(yè)的設(shè)計(jì)實(shí)力。如今Auto CAD軟件依然是平面繪圖中受眾面最廣的軟件,但Auto CAD軟件的基礎(chǔ)繪圖工作完成的僅是逐項(xiàng)添加對(duì)象和圖元,圖元與圖元之間不具備良好的參數(shù)聯(lián)動(dòng)性。能否通過對(duì)CAD軟件的二次開發(fā)實(shí)現(xiàn)以交互方式進(jìn)行參數(shù)化繪圖,甚至實(shí)現(xiàn)一鍵生成圖紙的功能,這是本文重點(diǎn)探討的問題。本文以第四代兩段篦冷機(jī)液壓系統(tǒng)的電氣控制柜圖紙?jiān)O(shè)計(jì)為例,介紹在CAD軟件基礎(chǔ)上二次開發(fā)的參數(shù)化繪圖軟件。
不同項(xiàng)目的產(chǎn)量不同,其篦冷機(jī)篦床篦板列數(shù)和液壓泵數(shù)量也會(huì)有很大變化,同時(shí)第四代篦冷機(jī)是雙段篦床,搭配時(shí)可能會(huì)出現(xiàn)兩段不一致的情況,如一段9列、二段6列。另外,在不同項(xiàng)目中,根據(jù)篦床列數(shù)及所提供傳感器種類的不同,液壓廠家提供的電氣接口數(shù)量及信號(hào)位置等的組合方式也非常多。這就導(dǎo)致不同項(xiàng)目中,即便是同一產(chǎn)量甚至同一型號(hào)的篦冷機(jī)液壓控制柜內(nèi),電氣元件的變化也非常大,無法真正實(shí)現(xiàn)電氣設(shè)備的標(biāo)準(zhǔn)化作業(yè)流程。每個(gè)項(xiàng)目的篦冷機(jī)控制柜圖紙繪制約消耗工時(shí)2~5d/人,在工期被嚴(yán)格控制的工程項(xiàng)目面前,這部分的工時(shí)消耗不容忽視。
為解決上述問題,推進(jìn)標(biāo)準(zhǔn)化作業(yè)流程,決定對(duì)篦冷機(jī)液壓控制柜的CAD制圖方式進(jìn)行二次開發(fā)。Auto Desk公司旗下的Auto CAD對(duì)外發(fā)布了Object ARX、.net、Auto Lisp、VBA等多種開發(fā)途徑。
Object ARX是Auto Desk公司針對(duì)Auto CAD二次開發(fā)推出的開發(fā)包,它提供以C++為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能快速訪問Auto CAD圖形數(shù)據(jù)庫,具有強(qiáng)大的功能。.net使開發(fā)人員可在.net框架下使用VB.net、C#、C++等多種編程語言對(duì)CAD進(jìn)行開發(fā),其比Object ARX結(jié)構(gòu)簡(jiǎn)單。Auto Lisp是直接由Auto CAD產(chǎn)生的語言,往往需配合其他語言一起使用。
VBA是以VB語言為基礎(chǔ)嵌入在CAD內(nèi)部的一種開發(fā)環(huán)境,無需額外的編譯環(huán)境(IDE),無需引用外部庫,能夠?yàn)橛脩籼峁┝己玫慕换バ越缑妫浅_m合非計(jì)算機(jī)專業(yè)的技術(shù)人員學(xué)習(xí)使用。通過幾行簡(jiǎn)單的VBA代碼即可實(shí)現(xiàn)CAD中簡(jiǎn)單圖元的自動(dòng)參數(shù)化繪制,能夠顯著提高設(shè)備圖紙二次開發(fā)的工作效率。
CAD圖紙繪制的二次開發(fā)工作由圖紙?zhí)幚砗痛a構(gòu)建兩部分組成。
3.2.1 圖紙優(yōu)化
優(yōu)化控制柜CAD圖紙,將設(shè)備所有的非標(biāo)特性元素集成為同一套圖紙,并將所有同一特性的圖元整理規(guī)劃成圖塊,并對(duì)每一種圖塊單獨(dú)命名。完成這一步驟即完成圖紙圖元“數(shù)據(jù)庫”的搭建,避免后續(xù)使用VBA代碼重復(fù)構(gòu)建圖紙圖元,能夠節(jié)省大量代碼編制時(shí)間,提高軟件運(yùn)行效率。如圖1所示,亮藍(lán)部分表示同類塊的所有圖元。

圖1 同一種圖塊中的所有的圖元元素
優(yōu)化完成后的圖紙擁有設(shè)備全部可選特性,并擁有大量圖塊,后續(xù)的所有代碼工作都將在這張優(yōu)化后的圖紙上進(jìn)行相應(yīng)的減法和局部的排序、統(tǒng)計(jì)等工作。
3.2.2 代碼構(gòu)建
在CAD的VBA環(huán)境中設(shè)計(jì)窗口面板,規(guī)劃需要的功能區(qū),如圖2所示。窗口面板分為三個(gè)功能區(qū),一部分是統(tǒng)一的圖紙項(xiàng)目信息;一部分是圖紙?jiān)O(shè)計(jì)人和審核人的電子簽名,這部分可以將已記錄的電子簽名塊和拾取的簽名塊自動(dòng)布置到每張圖相應(yīng)的簽名區(qū)域,同時(shí)也可選擇文本格式的簽名方式;最后一部分是對(duì)設(shè)備非標(biāo)特性的選擇,這部分可根據(jù)不同類型的設(shè)備隨時(shí)進(jìn)行調(diào)整。

圖2 參數(shù)化繪制軟件的窗口面板
(1)代碼方面
首先創(chuàng)建選擇集,選擇集是被提取圖元的“暫存器”,會(huì)多次出現(xiàn)在后續(xù)代碼中。

定位每張圖紙的位置,并傳輸面板的項(xiàng)目信息。


(2)簽名方面
提前在圖中創(chuàng)建所需的簽名塊,放在任意位置,再通過代碼復(fù)制粘貼面板所選擇的簽名,并部署到每張圖紙相應(yīng)的位置。


以上代碼只是其中的一小部分,但已能夠說明程序的主要思路,在代碼執(zhí)行面板設(shè)定命令并執(zhí)行后,會(huì)在原有“標(biāo)準(zhǔn)庫”圖紙上進(jìn)行修改。代碼執(zhí)行前后“標(biāo)準(zhǔn)庫”圖紙畫面如圖3、4所示。

圖3 代碼執(zhí)行前“標(biāo)準(zhǔn)庫”圖紙的內(nèi)容

圖4 代碼執(zhí)行后“標(biāo)準(zhǔn)庫”圖紙的內(nèi)容
綜上所述,最終的運(yùn)行結(jié)果是在原“標(biāo)準(zhǔn)庫”的基礎(chǔ)上進(jìn)行了相應(yīng)的“減法”、排序、統(tǒng)計(jì)等操作,以VBA模式對(duì)設(shè)備圖紙繪制方式進(jìn)行二次開發(fā),不需要龐大的代碼量,前期的圖紙優(yōu)化承擔(dān)了大部分工作量,二次開發(fā)的軟件結(jié)構(gòu)清晰,便于學(xué)習(xí),可供其他類型設(shè)備圖紙的開發(fā)工作參考。若僅依靠代碼來繪制圖形,圖元重復(fù)生成的工作量非常大,而且還會(huì)涉及到外接數(shù)據(jù)庫等相關(guān)操作。執(zhí)行參數(shù)化繪制軟件的一鍵出圖功能后,幾秒鐘即可自動(dòng)生成項(xiàng)目所需圖紙,極大節(jié)省了圖紙?jiān)O(shè)計(jì)時(shí)長(zhǎng)。
基于VBA模式的圖紙開發(fā)工作同樣適用于其他的設(shè)備,如DCS控制柜、輥壓機(jī)液壓控制柜、輥磨液壓控制柜、變頻控制柜、軟啟動(dòng)柜等設(shè)備,甚至工藝或電氣系統(tǒng)的藍(lán)圖設(shè)計(jì),只要整理出設(shè)計(jì)內(nèi)容的共性和非標(biāo)特性,并將其量化和優(yōu)化,再進(jìn)行功能細(xì)分和代碼構(gòu)建,即可達(dá)到同樣的效果。