張培媛
(忠旺(遼陽)鋁模板制造有限公司, 遼寧 遼陽111003)
AutoCAD為我們提供了一個(gè)很好的繪圖平臺(tái),但在生產(chǎn)實(shí)際中會(huì)遇到一些大量的重復(fù)工作,需要按生產(chǎn)實(shí)際對(duì)AutoCAD進(jìn)行二次開發(fā)。例如生產(chǎn)實(shí)際中會(huì)遇到從大量圖中選出部分圖,然后將這些圖樣分配到滿足加工條件的生產(chǎn)線上,或者是把已有的圖樣調(diào)整前后順序等工作。如果一張張圖樣地查找、排序,效率會(huì)比較低,而且長(zhǎng)時(shí)間的重復(fù)工作也易發(fā)生一些錯(cuò)誤。這就需要我們確定好排圖順序,例如將需要的順序放在確定格式的Excel表格中,要處理的圖樣也統(tǒng)一格式,然后通過二次開發(fā),實(shí)現(xiàn)高地效完成按序排圖,讓設(shè)計(jì)人員有更多的時(shí)間來開展優(yōu)化設(shè)計(jì)與工藝研究工作。
生產(chǎn)實(shí)際中分類情況較多,用到的圖樣張數(shù)也比較多,為了方便演示程序,對(duì)實(shí)際情況進(jìn)行了簡(jiǎn)化。例如共有圖1~圖10這10張圖樣,3條生產(chǎn)線,生產(chǎn)線和產(chǎn)品圖樣的對(duì)應(yīng)關(guān)系為:線1 使用圖樣為TZ-1和TZ-10,線2使用圖樣為TZ-3、TZ-5。將其列入表格如圖1所示。
在CAD中通過GetOpen-FileName打開選擇文件界面[1],由操作人員打開指定的Excel文件, 讀取排圖順序,并將其放入一個(gè)數(shù)組中。CAD中的產(chǎn)品圖樣如圖2所示,邊框是一個(gè)多段線,邊框所在圖層名稱為“圖框”。
如圖2示例所示,表格中數(shù)據(jù)在A列與B列。在生產(chǎn)實(shí)際中,每批的圖樣分配情況不同,Excel表格中表格的使用范圍也不同,這就需要將獲取表格的數(shù)據(jù)寫為動(dòng)態(tài)判斷使用區(qū)域的行數(shù)[2]。打開表格文件并獲取數(shù)據(jù)的關(guān)鍵語句如下:B" & endA)
圖1 生產(chǎn)線與產(chǎn)品對(duì)應(yīng)關(guān)系
圖2 產(chǎn)品圖樣示例
在圖樣中先過濾圖層為“圖框”的多段線,放入SSet選擇集[3],遍歷每個(gè)圖框,用GetBoundingBox獲取每個(gè)圖框的左下角坐標(biāo)和右上角坐標(biāo)。關(guān)鍵語句如下:
然后將圖框的左下角坐標(biāo)和右上角坐標(biāo)作為新的選擇范圍,在此范圍內(nèi)選文字,放入一個(gè)新的選擇集SSetbh。如果文字中含有“TZ”則表示這個(gè)文本為圖樣編號(hào),符合條件的文字作為該圖樣的擴(kuò)展數(shù)據(jù)[4]。關(guān)鍵語句如下:
逐個(gè)取出圖樣的擴(kuò)展數(shù)據(jù),將其與數(shù)組中的圖樣編號(hào)進(jìn)行對(duì)比。如果兩者相同,說明找到了符合要求的圖樣,可以將其放到指定位置;如果不同則繼續(xù)對(duì)比下一張圖樣的擴(kuò)展數(shù)據(jù),實(shí)現(xiàn)按順序排圖。關(guān)鍵語句如下:
'分析數(shù)組中的數(shù)據(jù),如果生產(chǎn)線和上一個(gè)單元格的生產(chǎn)線相同的,那么圖樣間距可以設(shè)置小一些,如果是不相同,圖樣間距就大一些,方便后期的審閱。
'遍歷選擇集中的圖樣,獲取圖樣的擴(kuò)展數(shù)據(jù)
'在對(duì)應(yīng)的圖樣上插入文本,標(biāo)記生產(chǎn)線號(hào)[5]
在本例中列舉的圖樣其邊框?yàn)槎喽尉€,在實(shí)際的工作中,圖框還有一種常用的格式是屬性塊。如遇到這種圖樣,可以對(duì)屬性塊用GetBoundingBox方法獲取包圍框,然后加一個(gè)多段線外邊框,這樣就符合本文對(duì)圖樣邊框的要求,可以直接使用文中的方法。 如果原圖不可以修改,那就修改一段文中的程序。將過濾條件由圖層為“圖框”的多段線,改為屬性塊。篩選圖樣編號(hào)也由符合圖層條件的文本,改為判斷屬性塊中的屬性值[6]。改變?yōu)檫m用于屬性塊邊框的判斷條件后,需要注意的是,屬性塊對(duì)應(yīng)的過濾對(duì)象類型為“Insert”??梢杂肎etAttributes方法獲得塊的屬性集合,遍歷集合中的屬性標(biāo)記(TagString)找到圖樣編號(hào)標(biāo)記,再將此標(biāo)記對(duì)應(yīng)的屬性值(TextString)作為擴(kuò)展數(shù)據(jù)的文本,為圖樣添加擴(kuò)展數(shù)據(jù)。
AutoCAD為機(jī)械行業(yè)的從業(yè)人員提供了很大的便利。在工作實(shí)際中如果有大量的重復(fù)工作,可以將軟件原有的功能結(jié)合二次開發(fā),必要時(shí)可以結(jié)合Excel表格實(shí)現(xiàn)數(shù)據(jù)的交換。VBA易學(xué)易用,且功能強(qiáng)大,熟悉方法和屬性后可靈活應(yīng)用,更高效準(zhǔn)確地完成重復(fù)的工作,從而有更多的時(shí)間和精力投入到創(chuàng)作和設(shè)計(jì)中。