林澤生
摘要:利用Inventor強大的二次開發(fā)功能,基于軟件自帶的VBA二次開發(fā)環(huán)境研究了批量使用插入約束裝配相同零件或者子部件的“自動放置”裝配命令,分析命令開發(fā)所設計的主要API接口,設計了該命令開發(fā)的程序框圖,提供了該命令二次開發(fā)的部分關鍵代碼。使用“自定放置”裝配命令能大大提高設計人員的裝配效率,也擴展了Inventor軟件的裝配功能。
關鍵詞:VBA;API;二次開發(fā);自動放置
中圖分類號:TP391
文獻標識碼:A
DOI: 10.15913/j.cnki.kjycx.2019.08.056
1 引言
Inventor是美國Autodesk公司于1999年推出的一款可視化三維實體建模軟件,它的功能涵蓋了產品草圖設計、零件設計、零件裝配、分析計算、視圖表達、模具設計、工程圖設計等全過程[1],是一款非常適合用于機械設計的CAD軟件。Inventor在裝配環(huán)境中裝配標準件時,會自動彈出一個AutoDrop的工具欄,在這個工具欄上有一個命令叫“插入多個”,這個命令能自動識別配合平面上所有相同大小的圓邊,一次性完成多個標準件的放置與裝配,大大提高了裝配效率。但是這個“插人多個”的命令僅適用于標準件庫中的部分標準件。在化工設備的3D模型裝配過程中,時常會遇到管板上需要與大量的管零件裝配在一起,當管板上的孔分布并不規(guī)則時,陣列命令并不能發(fā)揮太大的作用。開發(fā)一個類似“多個插入”命令的“自動放置”裝配命令,能夠提高大量重復插入裝配的裝配效率,減少設計者的重復勞動,讓設計者將更多的精力放在設計上。
2 自動放置命令開發(fā)整體思路
VBA是一個功能強大的開發(fā)工具,由Microsoft提供并將其開發(fā)環(huán)境集成到Inventor中,VBA作為Inventor的一部分提供,無需額外費用。VBA運行在與Inventor相同的處理空間中,具有效率高等優(yōu)點,還可將程序存成多里的.ivb文件,供其他Inventor場合調用[2]?;贗nventor和VBA的特點,本文選用Inventor-VBA來開發(fā)自動放置命令。
根據(jù)模型裝配需要,結合Inventor的操作習慣,自動放置命令啟動后用戶需要進行以下交互操作:①選擇需要被復制并裝配的零部件;②選擇需要被復制并裝配的零件或者子部件的一條圓形邊;③選擇需要裝配多個零部件的某一平面上的一條圓形邊。命令執(zhí)行完成后應能達到以下效果:第二個選擇的圓形邊所在的平面上所有相同直接的圓形邊都有一個零部件與之用“插入”的裝配約束裝配在一起。自動放置命令的設計流程如圖1所示。
3 自動放置命令開發(fā)關鍵過程
3.1 用戶交互操作選擇程序
自動放置命令需要通過人機交互確定被復制的零部件、被復制零件部用于插入約束的圓邊以及被插入零件的圓邊。在Inventor的編程接口(API)中,Pick方法允許用戶選擇單個元素。交互選擇的第一個對象是被復制的零部件,其選擇過濾器枚舉為kPartEdgeCircularFilter。交互選擇的第二個和第三個對象是零件上的圓邊,其選擇過濾器枚舉為kPartEdgeCircularFilter.
3.2 尋找被插入零件配合平面上符合要求的圓邊
實現(xiàn)自動放置命令自動放置功能的重點之一是尋找被插入零件配合平面上所有符合要求的圓邊。在人機交互過程中,用戶只選擇了被插入零件上的一個圓邊,我們將與用于選擇的圓邊在同一平面上且直徑相等的所有圓邊視為符合要求的圓邊。一條圓邊是由一個平面和一個圓柱面相交形成的,因此需要先判斷與用戶選擇的圓邊相關的兩個面哪一個是平面。然后在平面上遍歷所有的邊,凡是圓邊且半徑與用戶所選圓邊的半徑相等,則視為符合要求的圓邊。值得注意的是,由于模型精度問題,API獲取的圓邊半徑值有一定的誤差,如果直接判斷兩條圓邊半徑是否相等,會導致存重建模型存在極小誤差的圓邊被錯誤判斷,因此在判斷圓邊半徑是否相等時需要給定一定的誤差范圍。
3.3 復制目標零部件
復制目標零部件并讓“自定放置”裝配命令兼容零件和部件是整個程序開發(fā)的難點所在。目標零部件可能是零件也可能是部件,雖然它們在API中的選擇過濾器枚舉都是kAssemblyOccurrenceFilter,但是在復制零部件的時候其方式有所區(qū)別。目標零部件的復制主要采用API中的AddByC omponentDefinition方法,使用該方法時,需要明確被復制的對象和放置的位置。如果復制目標是零件,則復制對象為Occ2BCopied.Definition;如果復制目標是部件,則其復制的對象為Occ2BCopied.ParentOccurrence.Definition。因為復制的零部件最終會被約束到對應的圓邊上,因此該方法中的放置位置只是命令執(zhí)行過程中的轉位置,可以創(chuàng)建一個空的矩陣作為其位置。
3.4 確定目標零部件的配合圓邊
確定目標零部件的配合圓邊要在新復制的零部件上找到與用戶在被復制對象上選擇的圓邊一致的圓邊。InventorAPI中的邊對象有一個名為TransientKey的屬性,其句法為Edge.TransientKeyo As Long。這一屬性與源文件綁定在一起,不會因為在部件中被多次引用而改變。
當目標零部件為部件時,必須先找到新復制部件中用戶選擇的圓邊所在的零件,才能比較零件邊的TransientKey屬性值是否相等。
3.5 創(chuàng)建插入約束
創(chuàng)建插入約束采用的是Inv entor API中的AddlnsertConstraint方法。在遍歷被裝配平面上所有邊時,每找到一條符合要求的邊便復制一次目標零部件,同時將新復制的目標零部件插入到符合要求的圓邊上。修改AxesOpposed的布爾值可以改變插入約束的方向,改變Distance的值可以修改插入約束的偏移距離。創(chuàng)建插入約束的部分關鍵代碼如下:
Dim olnsert As InsertConstraint
Set olnsert - oAssyDoc.ComponentDefinition.Constraints.AddlnsertConstraint( Edge_lnsert, EdgeOnFace, True,O)
3.6 裝配實例
化工設備設計過程中,管零件與管板的裝配工作量大,下面基于這種裝配條件,檢驗自動放置命令的正確性和可靠性。如圖2所示,裝配體中有1個管板零件和1根管,管板上有99個孔,現(xiàn)需要在管板的每個孔上插入一根管。在VBA編輯器中創(chuàng)建一個宏,將自動放置命令的代碼輸入,確認代碼中插入約束方向的布爾值以及偏移距離與需求一致。運行“自動放置”的宏,提示欄出現(xiàn)“請選擇要復制的零部件”的文字提示,選擇管零件;提示欄接著出現(xiàn)“請選擇復制零件的配合圓邊”的文字提示,選擇管零件一圓邊;提示欄接著出現(xiàn)“請選擇被插入零件的配合圓邊”的文字提示,選擇管板上的任意圓邊;之后軟件自動快速地復制管零件并將管零件插入到管板上的99個孔上,這個過程耗費時間不到Is,最終結果如圖3所示。通過驗證,自動放置命令能高效地實現(xiàn)相同零件的批量插入約束。
4 結語
本文基于Inventor-VBA二次開發(fā)了自動放置命令,使用戶能在裝配環(huán)境中使用類似與標準件裝配中“插入多個”命令的功能,能夠解決相同零部件批量插入裝配效率低的問題,大大提高三維數(shù)字模型的裝配效率,擴展了Inventor軟件的裝配功能。本文完整地分析了自動放置命令的開發(fā)思路和開發(fā)流程,對Inventor二次開發(fā)人員有一定的參考作用。
參考文獻:
[1]朱殿燁.基于SolidWorks Animator的掘進機升降油缸閥塊運動干涉分析[J].煤礦機械,2012 (5).
[2]張云飛,白雪松.lnventor裝配環(huán)境下基于VBA和驅動約束的運動仿真[J].上海應用技術學院學報,2008(3): 76-78.