最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

SOLIDWORKS強大功能—宏(二)

2022-05-10 11:10 作者:solidworks鑫辰科技  | 我要投稿

之前的文章介紹了如何通過SOLIDWORKS軟件的VBA來開發(fā)一個簡單的標(biāo)準(zhǔn)件生成器;后面我們會對這個標(biāo)準(zhǔn)件生成器進(jìn)行進(jìn)一步功能擴充,今天我們來研究另一個問題:SOLIDWORKS裝配體零件遍歷。

SOLIDWORKS裝配體零件遍歷在二次開發(fā)中會經(jīng)常使用,比如:

1.創(chuàng)建裝配體結(jié)構(gòu)BOM,搜索結(jié)構(gòu)的所有層級,并提取每個結(jié)構(gòu)、零件的屬性信息;

2.在裝配體中查找出所有的標(biāo)準(zhǔn)件、特定的零部件;

3.當(dāng)裝配體提示零件中存在被壓縮的特征時,通過遍歷找出被壓縮特征的零部件;

4.遍歷整個結(jié)構(gòu),為每個零件進(jìn)行隨機上色;

5.批量檢查零件屬性的完整性;

那么在SOLIDWORKS VBA開發(fā)中,如何對裝配體結(jié)構(gòu)進(jìn)行完整的遍歷呢?以下是對裝配體遍歷的基本流程:

SOLIDWORKS強大功能—宏(二)

首先用戶需要先獲取當(dāng)前裝配體結(jié)構(gòu)的子組件,然后通過for循環(huán)遍歷該結(jié)構(gòu)的所有子組件,并且判斷每個子組件是屬于零件還是裝配體,如果是裝配體,則需要對該裝配體進(jìn)行子組件獲取,然后檢查該裝配體的下屬層級…如此往復(fù);

但因為我們無法預(yù)先知道任何一個裝配體結(jié)構(gòu)存在多少個層級,所以也無法判斷需要執(zhí)行多少次for循環(huán),所以我們在這里使用了遞歸的方式來處理該問題。

以下是裝配體遍歷的基本代碼:

SOLIDWORKS強大功能—宏(二)

在main主函數(shù)中,我們通過 Set swmodel = swApp.ActiveDoc 獲取到當(dāng)前正在被SOLDWORKS打開且處于當(dāng)前顯示界面的裝配體,通過 swmodelComps = swAsm.GetComponents(True) 或者這個裝配體的所有子組件,放到swmodelComps 這個數(shù)組中;

接下來調(diào)用GetAsmChild這個函數(shù),并且將swmodelComps數(shù)組作為變量傳遞到函數(shù)中;

在GetAsmChild函數(shù)中,通過:

For i = 0 To UBound(swmodelComps)

Next


語句對獲取到的子組件數(shù)組進(jìn)行遍歷,該遍歷只會搜索結(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) 表示將該零件的名稱進(jìn)行顯示;

重點在對子組件屬于裝配體的處理,在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強大功能—宏(二)的評論 (共 條)

分享到微博請遵守國家法律
兴隆县| 济宁市| 凤凰县| 久治县| 盐池县| 西宁市| 错那县| 河池市| 湛江市| 上饶县| 隆安县| 东至县| 远安县| 海伦市| 临安市| 顺昌县| 永泰县| 长岛县| 上饶县| 渝中区| 铅山县| 莱州市| 江西省| 南阳市| 元江| 菏泽市| 东乡| 华坪县| 武邑县| 桂林市| 化隆| 德清县| 辽阳市| 资中县| 芷江| 尉氏县| 普定县| 邯郸市| 濉溪县| 阿克陶县| 温州市|