陳 剛
(湖北迪邁威智能裝備有限公司研發(fā)部,湖北 武漢430000)
VBA是Microsoft公司開發(fā)的,該應(yīng)用程序(如Word、Excel、Access、Powerpoint等)共享一種通用的自動化語言,具有高效、靈活且一致性跨越多種應(yīng)用軟件并且具有控制應(yīng)用軟件對象的能力。AutoCAD VBA允許Visual Basic環(huán)境與AutoCAD同時運行,并通過ActiveX Automation接口提供AutoCAD的編程控制。這樣就把 AutoCAD、ActiveX Automation和VBA鏈接在一起,提供了一個功能非常強大的接口。它不僅能控制AutoCAD對象,也能向其他應(yīng)用程序發(fā)送數(shù)據(jù)或從中檢索數(shù)據(jù)。
ActiveX Automation是一套微軟標(biāo)準(zhǔn),該標(biāo)準(zhǔn)允許通過外顯的對象由一個Windows應(yīng)用程序控制另一個Windows應(yīng)用程序,這也是面向?qū)ο缶幊碳夹g(shù)的精髓所在。AutoCAD從R14開始增加了作為ActiveX Automation服務(wù)器應(yīng)用程序的功能,使得許多面向?qū)ο缶幾g語言和應(yīng)用程序可以通過ActiveX與AutoCAD進行通信,并操縱AutoCAD的許多功能。ActiveX Automation技術(shù)將AutoCAD的各種功能封裝在AutoCAD ActiveX對象中,供編程使用。ActiveX Automation技術(shù)的完全面向?qū)ο蠡幊痰奶攸c,使其開發(fā)環(huán)境具備了強大的開發(fā)能力和簡單易用的優(yōu)良特點,開發(fā)工具的選擇也具有很大的靈活性[1]。
輸送機包括空中懸掛輸送機和地面輸送機,本文所敘述的對象主要是必須做通過性分析的空中懸掛輸送機,如空中摩擦線、普通懸鏈、推桿懸鏈等,以及臺車類的地面輸送機,如AGV(自動引導(dǎo)小車)、RGV(軌道引導(dǎo)臺車)等。對直線運行的輸送機做通過性分析不需要借助其他工具,直接觀察并可以得出結(jié)論,但是在輸送軌跡的彎段區(qū)域,需要通過作圖法或者借助其他工具來進行通過性分析。本文提供了一種簡潔便利的通過性分析方法,能對輸送軌跡的彎段區(qū)域快速繪制通過性包絡(luò)圖,從而快速可靠地進行通過性分析。
通過性分析是指運動物體通過預(yù)定路徑的能力,針對輸送機而言,就是分析車組吊具(或臺車)載著工件沿固定軌道運行時,是否與其他輸送設(shè)備、工藝網(wǎng)架、安全護欄等發(fā)生干涉。目前,最常用的方法是繪制包絡(luò)圖,即運動物體在沿其軌道運行時,繪制出其所有瞬間位置的影像。通過觀察包絡(luò)圖,便能直觀判斷輸送機是否滿足通過性要求。另外一種方法為通過動態(tài)模擬來觀察,但由于軟件功能的限制,很少被應(yīng)用。
傳統(tǒng)繪制包絡(luò)圖的方式,大多以手工操作Auto-CAD基本命令繪制包絡(luò)圖為主,工作量比較大,需要花費大量的時間,圖形越密集可操作性越差,圖形越稀疏準(zhǔn)確度越差。因此,為更快速更準(zhǔn)確地進行通過性分析,通過基于ActiveX技術(shù)的AutoCAD二次開發(fā)工具VBA編程來實現(xiàn)包絡(luò)圖的繪制,由于整個繪制過程是由計算機來繪制的,可以將包絡(luò)圖繪制的更密集一些,這樣通過性分析的準(zhǔn)確度越高,并且還可以記錄吊具(或臺車)上平衡輪(或者牽引銷)中心點在每個影像上的坐標(biāo),通過連接這些點的曲線來擬合吊具(或臺車)的扶正軌的形狀。另外,還可以通過VBA編程實現(xiàn)輸送機的動態(tài)模擬來進行通過性分析,這樣更直觀,但不能保存分析結(jié)果。
在系統(tǒng)實現(xiàn)之前,首先必須對AutoCAD圖形信息做一些簡單的處理,方便系統(tǒng)獲取AutoCAD圖形信息,稱之為前處理;然后,進行必要的人機交互處理,即讓系統(tǒng)獲取AutoCAD圖形信息和輸入相關(guān)參數(shù);最后,通過幾何結(jié)構(gòu)分析進行必要的圖形處理,得到所需要的圖形。
2.1.1 前處理
首先,要將AutoCAD圖形中輸送機的輸送路線繪制成一條多段線,多段線是由一系列直線和圓弧線組成的線形;然后,在AutoCAD模型空間中將通過性分析的對象(如吊具、工件等)編輯成塊(block),如果分析對象中的部件在運行過程中有相對運動,則必須將這些部件單獨編輯成塊。所以,前處理之后的分析對象,可能是一個塊,也可能是多個塊。
本文中分析的是某汽車制造企業(yè)總裝車間底盤輸送線(見圖1),該輸送線采用空中摩擦線和懸掛輸送鏈結(jié)合的方式,在底盤裝配工藝段采用懸掛輸送鏈輸送,其他輸送段采用空中摩擦線輸送。由于裝配工位的標(biāo)高較低,所以空中摩擦線和懸掛輸送鏈的轉(zhuǎn)接段都處在輸送線的垂直彎段上(上坡或下坡),而在吊具和工件在垂直彎段上運行時必須保證工件一直處于水平狀態(tài)(見圖2),這樣要求設(shè)計一條扶正軌托住吊具,使得吊具內(nèi)部部件在下坡過程中有相對位移。
圖1 底盤輸送線
2.1.2 人機交互處理
ActiveX對象模型中提供了多種提示用戶輸入的方法,包括 GetReal、GetPoint、GetEntity、GetString、GetKeyword和GetInteger等[2],通過GetEntity方法可以獲取輸送軌跡線和車組吊具中的塊,通過GetPoint方法可以獲取各個塊上的點的坐標(biāo)(兩個點確定塊的位置),通過GetReal方法可以獲取在AutoCAD命令行鍵入的包絡(luò)圖中影像的數(shù)量及節(jié)距等參數(shù)。
如圖3底盤線車組吊具,由前車組2、懸掛梁3、后車組4和吊具6組成(其它不影響通過性分析的零部件忽略),在下坡運行過程中它們之間都有相對位移,因此在前處理時應(yīng)將該車組吊具編程成4個不同的塊。在人機交互輸入時,每一個塊都要用GetEntity方法利用鼠標(biāo)從AutoCAD模型空間獲取,而且每個塊上有2個懸掛點,通過GetPoint方法獲取,為各個塊的初始位置點。
圖3 底盤線車組吊具
2.1.3 技術(shù)方案分析
由于車組吊具在從直段到坡段的運行過程中,前車組、懸掛梁、后車組和吊具的相對位置是不斷變化的,要找出它們位置變化的規(guī)律,通過程序計算其位置點的坐標(biāo),然后通過循環(huán)迭代的方法,得到包絡(luò)圖影像中所有部件的位置點。下面介紹一個循環(huán)過程中,車組吊具各部件的動作過程。
前車組的懸掛點始終沿輸送軌跡運行,由函數(shù)AddArc()得到以前懸掛點P1為圓心節(jié)距t為半徑的圓,再由函數(shù)IntersectWith()得到該圓與輸送軌跡線的交點,靠近運行方向的交點為前車組第一個懸掛點新的位置坐標(biāo)點P01,以P01為圓心,兩懸掛點的間距R為半徑作圓,再由函數(shù)IntersectWith()得到該圓與輸送軌跡線的交點,遠(yuǎn)離運行方向的交點為前車組第二個懸掛點新的位置坐標(biāo)點P02,然后用函數(shù)move()將前車組從P1點平移到P01點,用函數(shù)AngleFromXAxis(P01,P02)計算前車組傾斜角,用函數(shù)rotate()將前車組以P01為旋轉(zhuǎn)中心旋轉(zhuǎn)到新的傾斜角上,如圖4所示。
圖2 底盤線下坡段立面圖
圖4 底盤線車組吊具簡化圖
后車組、懸掛梁的動作過程與前車組基本一樣,不再贅述,不同的是,它們要以前車組為基準(zhǔn),保證移動后各個塊之間的連接點的相對位置和間距不變。
吊具與其他部件的移動方式不一樣,其懸掛點可以在懸掛梁的導(dǎo)槽內(nèi)滑動,讓它始終保持水平,只需找到其中一個懸掛點的新坐標(biāo),用函數(shù)move()移動到新坐標(biāo)即可,新的懸掛點坐標(biāo)要通過三角幾何分析求得,見圖5吊具的懸掛點局部放大圖。圖中A、B為吊具懸掛點初始相對位置(可根據(jù)懸掛梁的新位置算出,為已知點),A1、B1為懸掛梁旋轉(zhuǎn)偏移后吊具懸掛點的相對位置。現(xiàn)在需計算出A1或者B1的坐標(biāo)值。
圖5 吊具的懸掛點局部放大圖
如圖5所示有:A1B1=AB,BB1=AB-A1B1×sinα
其中,α為懸掛梁的傾斜角,由函數(shù)Angle-FromXAxis(P05,P06)得到;XB1為 B1點的 X 坐標(biāo);YB1為B1點的Y坐標(biāo);XB為B點的X坐標(biāo);YB為B點的Y坐標(biāo)。
由上述公式計算可得到B1的位置坐標(biāo),用函數(shù)move()將吊具從B點移動至B1點,當(dāng)前循環(huán)結(jié)束,進入下一個循環(huán)。
2.1.4 VBA編程實現(xiàn)[3]
通過性包絡(luò)圖繪制流程圖如圖6所示。
圖6 通過性包絡(luò)圖繪制流程圖
按照2.1節(jié)所述的過程,對圖2中底盤線吊具在下坡段區(qū)域做通過性分析。先將車組軌道中心線編輯成多段線,將車組吊具編程成4個塊:前車組、懸掛梁、后車組和吊具工件。啟動VBA宏,按AutoCAD模型空間命令行提示,選取相應(yīng)的多段線、塊及懸掛點,并輸入節(jié)距300和數(shù)量100(注意:節(jié)距越小,生成的包絡(luò)圖越密集,雖然通過性分析的精度越高,但計算機運算的時間也越長)。參數(shù)輸入以后程序自動運行,最后在AutoCAD模型空間生成車組吊具下坡通過性包絡(luò)圖,如圖7所示。
分析結(jié)果:1)底盤吊具的坡段扶正軌布置合理,包絡(luò)圖中扶正軌軌跡線與實際設(shè)計扶正軌布置基本吻合,能保證車身下坡過程中保持水平狀態(tài);2)空中的護網(wǎng)設(shè)計合理,不與吊具或車身發(fā)生干涉。
VBA繼承了面向?qū)ο蟮木幊陶Z言VB的優(yōu)點,充分利用了Windows系統(tǒng)資源及可視化的編程環(huán)境,使其用于對AutoCAD的二次開發(fā)效率更高,并通過ActiveX Automation接口把AutoCAD和VBA緊密地鏈接在一起,ActiveX Automation技術(shù)的完全面向?qū)ο蠡幊痰奶攸c,使其VBA具備了強大的開發(fā)能力和簡單易用的優(yōu)良特點。本軟件適用于各類空中輸送機和地面有軌導(dǎo)向輸送機,可以快速生成通過性包絡(luò)圖,幫助設(shè)計工程師進行準(zhǔn)確的通過性分析。
圖7 底盤線下坡段通過性包絡(luò)圖