网站首页 > 编程文章 正文
之前的文章介绍了如何通过SOLIDWORKS正版软件的VBA来开发一个简单的标准件生成器;后面我们会对这个标准件生成器进行进一步功能扩充,今天我们来研究另一个问题:SOLIDWORKS装配体零件遍历。
SOLIDWORKS装配体零件遍历在二次开发中会经常使用,比如:
1.创建装配体结构BOM,搜索结构的所有层级,并提取每个结构、零件的属性信息;
2.在装配体中查找出所有的标准件、特定的零部件;
3.当装配体提示零件中存在被压缩的特征时,通过遍历找出被压缩特征的零部件;
4.遍历整个结构,为每个零件进行随机上色;
5.批量检查零件属性的完整性;
那么在SOLIDWORKS VBA开发中,如何对装配体结构进行完整的遍历呢?以下是对装配体遍历的基本流程:
首先用户需要先获取当前装配体结构的子组件,然后通过for循环遍历该结构的所有子组件,并且判断每个子组件是属于零件还是装配体,如果是装配体,则需要对该装配体进行子组件获取,然后检查该装配体的下属层级…如此往复;
但因为我们无法预先知道任何一个装配体结构存在多少个层级,所以也无法判断需要执行多少次for循环,所以我们在这里使用了递归的方式来处理该问题。
以下是装配体遍历的基本代码:
在main主函数中,我们通过 Set swmodel = swApp.ActiveDoc 获取到当前正在被SOLDWORKS打开且处于当前显示界面的装配体,通过 swmodelComps = swAsm.GetComponents(True) 或者这个装配体的所有子组件,放到swmodelComps 这个数组中;
接下来调用GetAsmChild这个函数,并且将swmodelComps数组作为变量传递到函数中;
在GetAsmChild函数中,通过:
For i = 0 To UBound(swmodelComps)
…
Next
语句对获取到的子组件数组进行遍历,该遍历只会搜索结构的一个层级,为了让遍历可以搜索结构的所有层级,所以有如下的条件判断代码:
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))
可以看到这是一个函数调用,调用了什么函数呢?调用了GetAsmChild,这实际上是调用了它自身,这种调用函数自身的情况就叫做递归;
可以看到,虽然函数相同,但是前后两个GetAsmChild的变量却不同,第一次的GetAsmChild作为入口,传递的是我们打开的装配体文件的信息,第二次到第N次,传递的则是每一个子组件(子装配体)的信息,这样层层嵌套,最终实现装配体结构的整体的遍历。#solidworks##SOLIDWORKS#
以上是本次SOLIDWORKS VBA装配体结构遍历的一些分享,希望能够帮助大家。
猜你喜欢
- 2024-10-12 Solidworks 二次开发第8课:向宏中添加用户窗体
- 2024-10-12 一键检查solidworks总装图下不符合图号分离规则零件的宏命令
- 2024-10-12 SW工程图跟着零件图一起另存宏程序怎么写?
- 2024-10-12 SW的开发:从学习宏开始,了解如何查找接口,理清开发逻辑
- 2024-10-12 Solidworks精确变色宏命令#solidworks教学
- 2024-10-12 Solidwoks用宏程序制作各种弹簧#Solidworks新手入门
- 2024-10-12 SW宏一键方程式自动文件名或配置名-代号名称分离到配置属性
- 2024-10-12 Solidworks宏程序之用户窗体简介(solidworks宏运行不了)
- 2024-10-12 【宏程序】SolidWorks检查标准和规范的思路
- 2024-10-12 Kimi:SolidWorks宏程序可以检查机械制图中的问题
你 发表评论:
欢迎- 06-24一个老爸画了超级有爱的365幅画 | 父亲节献礼
- 06-24产品小白看魏则西事件——用产品思维审视百度推广
- 06-24某教程学习笔记(一):13、脚本木马原理
- 06-24十大常见web漏洞——命令执行漏洞
- 06-24初涉内网,提权那些事(内网渗透提权)
- 06-24黑客命令第16集:47种最常见的**网站方法2/2
- 06-24铭说 | 一句话木马的多种变形方式
- 06-24Java隐藏的10倍效率技巧!90%程序员不知道的魔法方法(附代码)
- 最近发表
- 标签列表
-
- spire.doc (70)
- instanceclient (62)
- solidworks (78)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)