之前的文章介紹了如何通過SOLIDWORKS正版軟件的VBA來開發(fā)一個簡單的標準件生成器;后面我們會對這個標準件生成器進行進一步功能擴充,今天我們來研究另一個問題:SOLIDWORKS裝配體零件遍歷。
SOLIDWORKS裝配體零件遍歷在二次開發(fā)中會經(jīng)常使用,比如:
1.創(chuàng)建裝配體結(jié)構(gòu)BOM,搜索結(jié)構(gòu)的所有層級,并提取每個結(jié)構(gòu)、零件的屬性信息;
2.在裝配體中查找出所有的標準件、特定的零部件;
3.當裝配體提示零件中存在被壓縮的特征時,通過遍歷找出被壓縮特征的零部件;
4.遍歷整個結(jié)構(gòu),為每個零件進行隨機上色;
5.批量檢查零件屬性的完整性;
那么在SOLIDWORKS VBA開發(fā)中,如何對裝配體結(jié)構(gòu)進行完整的遍歷呢?以下是對裝配體遍歷的基本流程:
首先用戶需要先獲取當前裝配體結(jié)構(gòu)的子組件,然后通過for循環(huán)遍歷該結(jié)構(gòu)的所有子組件,并且判斷每個子組件是屬于零件還是裝配體,如果是裝配體,則需要對該裝配體進行子組件獲取,然后檢查該裝配體的下屬層級…如此往復;
但因為我們無法預先知道任何一個裝配體結(jié)構(gòu)存在多少個層級,所以也無法判斷需要執(zhí)行多少次for循環(huán),所以我們在這里使用了遞歸的方式來處理該問題。
以下是裝配體遍歷的基本代碼:
在main主函數(shù)中,我們通過 Set swmodel = swApp.ActiveDoc 獲取到當前正在被SOLDWORKS打開且處于當前顯示界面的裝配體,通過 swmodelComps = swAsm.GetComponents(True) 或者這個裝配體的所有子組件,放到swmodelComps 這個數(shù)組中;
接下來調(diào)用GetAsmChild這個函數(shù),并且將swmodelComps數(shù)組作為變量傳遞到函數(shù)中;
在GetAsmChild函數(shù)中,通過:
For i = 0 To UBound(swmodelComps)
…
Next
語句對獲取到的子組件數(shù)組進行遍歷,該遍歷只會搜索結(jié)構(gòu)的一個層級,為了讓遍歷可以搜索結(jié)構(gòu)的所有層級,所以有如下的條件判斷代碼:
If swmodel.GetType = 1 Then
MsgBox (swmodel.GetTitle)
ElseIf swmodel.GetType = 2 Then
swAsm = swmodel
GetAsmChild (swAsm.GetComponents(True))
End If
其中swmodel.GetType = 1 表示該獲取到的一個層級中的其中一條子組件屬于零件;
其中MsgBox (swmodel.GetTitle) 表示將該零件的名稱進行顯示;
重點在對子組件屬于裝配體的處理,在swmodel.GetType = 2 的條件(子組件屬于裝配體)中,我們做了如下操作:
GetAsmChild (swAsm.GetComponents(True))
可以看到這是一個函數(shù)調(diào)用,調(diào)用了什么函數(shù)呢?調(diào)用了GetAsmChild,這實際上是調(diào)用了它自身,這種調(diào)用函數(shù)自身的情況就叫做遞歸;
可以看到,雖然函數(shù)相同,但是前后兩個GetAsmChild的變量卻不同,**次的GetAsmChild作為入口,傳遞的是我們打開的裝配體文件的信息,*二次到*N次,傳遞的則是每一個子組件(子裝配體)的信息,這樣層層嵌套,較終實現(xiàn)裝配體結(jié)構(gòu)的整體的遍歷。
以上是本次SOLIDWORKS VBA裝配體結(jié)構(gòu)遍歷的一些分享,希望能夠幫助大家。
詞條
詞條說明
我們使用SOLIDWORKS Simulation分析了雙手拉住單杠時單杠的承載情況,結(jié)果得知單杠是安全的。如果反復做引體向上運動,單杠將承受往復載荷,可能發(fā)生疲勞斷裂,今天我們一起分析該工況下單杠的疲勞情況。一:假設 - 疲勞分析下載健身模型,人不停做引體向上運動,引體多少次單杠能疲勞斷裂?提供生命圖解、損壞圖解說明及分析過程說明。根據(jù)工況,可以使用SOLIDWORKS Simulation疲勞
SOLIDWORKS中一個神奇的功能卻總是被人忽視 | 產(chǎn)品探索
SOLIDWORKS分解功能可以對已有模型進行特征拆解,并可以直接調(diào)用分解出來的步驟加以重復利用。例如下圖,左圖是已經(jīng)繪制完成的齒輪,通過分解后可以得到右側(cè)顯示的特征并可以直接將分解的特征拖拽到其它零部件上來自動生成特征。 SOLIDWORKS中一個神奇的功能卻總是被人忽視 | 產(chǎn)品探索 將已有模型進行分解,通過搜索或者瀏覽找到需要分解的模型。 SOLIDWORKS中一個神奇的功能卻總是被人忽視
在使用solidworks軟件時對于供應廠商提供的中間格式的外購模型,經(jīng)常會遇到一些問題,比如: 1、為什么模型打開后能看到零件樹,但看不到三維模型? 2、不同的打開方式有什么區(qū)別? 3、怎么緩解打開時間太長? 4、在SOLIDWORKS PDM中存放該標準件需要注意什么? 5、怎么緩解裝配時模型卡頓嚴重問題? 因此,可以使用以下方法緩解此問題! 1、為什么模型打開后能看到零件樹,但看不到三維模
在使用SOLIDWORKS軟件宏時,用戶會經(jīng)常訪問零件、裝配體、工程圖的屬性,或向?qū)傩灾蟹祵懽侄涡畔?。SOLIDWORKS的屬性位于兩個位置:①自定義屬性,②配置特定屬性;自定義屬性適用于零件中僅存在單配置,或是多配置但同物料編碼的情形。配置特定適用于多配置系列化零件情形,即每個配置的物料編碼都不相同的情況;但這也不是完全限定的,用戶可以基于自身理解和需求來實現(xiàn)不同效果。屬性的提取和返寫可以用于以
公司名: 鑫辰信息科技(深圳)有限公司
聯(lián)系人: 張生
電 話: 0755-89233676
手 機: 13713805312
微 信: 13713805312
地 址: 廣東深圳龍崗區(qū)深圳市龍崗區(qū)龍崗大道8288號大運軟件園27棟502
郵 編:
網(wǎng) 址: zhxiaojun928.cn.b2b168.com
公司名: 鑫辰信息科技(深圳)有限公司
聯(lián)系人: 張生
手 機: 13713805312
電 話: 0755-89233676
地 址: 廣東深圳龍崗區(qū)深圳市龍崗區(qū)龍崗大道8288號大運軟件園27棟502
郵 編:
網(wǎng) 址: zhxiaojun928.cn.b2b168.com
海豚健康云多平臺數(shù)據(jù)分析交互系統(tǒng)
¥100000.00
¥10000.00