作者:鑫辰信息科技发布日期:2022-05-10浏览人数:409
之前的文章介绍了如何通过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 VBA装配体结构遍历的一些分享,希望能够帮助大家,更多信息请访问鑫辰信息科技有限公司
SOLIDWORKS 2025当中的若干关键改进之处,特别是在装饰螺纹线的性能表现、倒角选择的快速工具栏设置、轮廓的简化处理、图形三角面以及面数的管控,还有自动修复草图关系等这些方面。这些改进极大地增强了用户于复杂设计任务里的工作效率以及设计体验一:性能提升方面的改进在针对(数量超过 1000 个)显示上色装饰螺纹线的零
SOLIDWORKS2025增强功能助力设计简化,优化仿真和渲染性能。设计部成员体验新功能,提升效率。11月1日在深圳福田,鑫辰科技举办创新日活动,邀请用户体验新功能,交流最佳实践。小索是设计部负责人,SOLIDWORKS资深使用者,使用SOLIDWORKS软件多年,喜欢分享,正在体验SOLIDWORKS2025版本新功能。组员习惯称为“老大"达
SOLIDWORKS 2025 以更加强大的姿态亮相,帮助工程师重塑设计。为了助力您简化和加快由概念到成品的产品开发流程,SOLIDWORKS 2025涵盖全新以用户为中心的增强功能,致力实现更智能、更快速地与团队和外部合作伙伴协同工作。小索是设计部负责人,SOLIDWORKS资深使用者,使用SOLIDWORKS软件多年,喜欢分享,正在体验SOLIDWO
尊敬的客户,您好! SOLIDWORKS 2025 以更加强大的姿态亮相,帮助重塑设计,为了助力您简化和加快由概念到成品的产品开发流程,SOLIDWORKS 2025涵盖全新以用户为中心的增强功能,致力帮用户实现更智能、更快速地与团队和外部合作伙伴协同工作,准备好寻觅您的下一个最爱功能了吗?以下为部
当前高速发展阶段,企业为了在竞争中生存下来,往往会采取一定的策略,比如提高生产力和销售力,都会实施各种不同的战略方针来强化自己的竞争优势。其中最有效一定是“优先竞争对手推出具有附加价值的产品并推入市场”但是要想达到这一战略目标,提高产品开发业务的效率必不可少。而呢能够对这种战略达成起到辅助作用的系统
在工程师完成产品设计后,一般需要打印纸质工程图,如果打印的数量比较多,效率就会比较低,其实SOLIDWORKS软件提供了专用工具用来处理工作量比较大且重复性的工作,这个工具就是SOLIDWORKS Task Scheduler。SOLIDWORKS Task Scheduler支持执行一次,或每日、每周、每月执行相同的打印任务,并且SOLIDWORKS Task Schedu
微信扫一扫
15986813180(手机号码) 0755-89233676(深圳专线)
广东省东莞市南城街道元美西路8号华凯广场1栋513室
深圳市龙岗区龙城街道天安数码城2栋B座404(黄阁坑C出口)
victor@sz-stars.com
victor@sz-stars.com
联系我们