news 2026/6/4 20:03:59

SolidWorks 二次开发--遍历配合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SolidWorks 二次开发--遍历配合

最近群里有朋友遇到问题,需要遍历判断配合是否有效,但是Feature遍历的时候却找不到配合特征,以下是解决方案:

通过Feature.GetTypeName找到MateGroup,然后通过Feature子对象获取MateGroup中的所有配合即可。

vba代码示例:

Option Explicit Public Enum swSelectType_e swSelNOTHING = 0 swSelEDGES = 1 ' "EDGE" swSelFACES = 2 ' "FACE" swSelVERTICES = 3 ' "VERTEX" swSelDATUMPLANES = 4 ' "PLANE" swSelDATUMAXES = 5 ' "AXIS" swSelREFEDGES = 51 ' "REFERENCE-EDGE" swSelREFFACES = 52 End Enum Public Enum swMateType_e swMateCOINCIDENT = 0 swMateCONCENTRIC = 1 swMatePERPENDICULAR = 2 swMatePARALLEL = 3 swMateTANGENT = 4 swMateDISTANCE = 5 swMateANGLE = 6 swMateUNKNOWN = 7 swMateSYMMETRIC = 8 swMateCAMFOLLOWER = 9 swMateGEAR = 10 End Enum Public Enum swMateAlign_e swMateAlignALIGNED = 0 swMateAlignANTI_ALIGNED = 1 swMateAlignCLOSEST = 2 End Enum Public Enum swMateEntityTypes_e swMateUnsupported = 0 swMatePoint = 1 swMateLine = 2 swMatePlane = 3 swMateCylinder = 4 swMateCone = 5 swMateSphere = 6 swMateCircle = 7 End Enum Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swFeat As SldWorks.feature Dim swMateFeat As SldWorks.feature Dim swSubFeat As SldWorks.feature Dim swMate As SldWorks.Mate2 Dim swComp As SldWorks.Component2 Dim swMateEnt(2) As SldWorks.MateEntity2 Dim i As Integer ' 简单错误处理 On Error Resume Next Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swFeat = swModel.FirstFeature Debug.Print "File = " & swModel.GetPathName ' 先遍历Feature树 Do While Not swFeat Is Nothing If "MateGroup" = swFeat.GetTypeName Then Set swMateFeat = swFeat Exit Do End If Set swFeat = swFeat.GetNextFeature Loop Debug.Print " " & swMateFeat.Name ' 获取第一个子Feature Set swSubFeat = swMateFeat.GetFirstSubFeature Do While Not swSubFeat Is Nothing Set swMate = swSubFeat.GetSpecificFeature2 If Not swMate Is Nothing Then Debug.Print " " & swSubFeat.Name Debug.Print "" For i = 0 To 1 Set swMateEnt(i) = swMate.MateEntity(i) Debug.Print " " & swSubFeat.Name Debug.Print " Type = " & swMate.Type Debug.Print " AlignFlag = " & swMate.alignment Debug.Print " CanBeFlipped = " & swMate.CanBeFlipped Debug.Print "" Set swComp = swMateEnt(i).ReferenceComponent Debug.Print " Component = " & swComp.Name2 Debug.Print " MateEntType = " & swMateEnt(i).ReferenceType Debug.Print " (x,y,z) = (" & swMateEnt(i).EntityParams(0) & ", " & swMateEnt(i).EntityParams(1) & ", " & swMateEnt(i).EntityParams(2) & ")" Debug.Print " (i,j,k) = (" & swMateEnt(i).EntityParams(3) & ", " & swMateEnt(i).EntityParams(4) & ", " & swMateEnt(i).EntityParams(5) & ")" Debug.Print " Radius 1 = " & swMateEnt(i).EntityParams(6) Debug.Print " Radius 2 = " & swMateEnt(i).EntityParams(7) Debug.Print "" Next i Debug.Print " ------------------------------------------------" End If ' 循环遍历下一个子特征 Set swSubFeat = swSubFeat.GetNextSubFeature Loop End Sub
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 20:03:05

如何通过技术情报分析提升产业招商的针对性和成功率?

核心要点 技术情报分析通过构建科创知识图谱,精准识别产业链断点,大幅提升产业招商方向性。AI驱动的需求挖掘系统可穿透企业模糊表达,实现技改需求精准匹配,提高对接成功率。数智化项目研判工具实现多维度科学评估,有效…

作者头像 李华
网站建设 2026/6/4 20:02:58

2026年6月变频器风机品牌推荐:TOP5评测数据中心散热防积灰市场份额价格

摘要 在工业自动化与新能源产业高速发展的背景下,变频器作为核心驱动单元,其散热系统的可靠性直接决定了整个生产线的连续性与安全性。工程师与采购决策者常面临如何在复杂工况下,精准匹配兼具高效散热、长期稳定与成本可控的风机方案的挑战。…

作者头像 李华
网站建设 2026/6/4 19:59:03

Python函数:global与nonlocal关键字的使用

Python函数:global与nonlocal关键字的使用📚 本章学习目标:深入理解global与nonlocal关键字的使用的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践。本文属于《Python从入门到精通教程》Python函数…

作者头像 李华
网站建设 2026/6/4 19:57:59

Plex 新增社交功能:可创建分享片单、社区评论,还将推匹配分数

Plex 社交功能大升级:个性化片单与社区论坛登场即日起,Plex 平台开启社交功能新篇章,用户能够创建并分享 “Plex 上任意电影、剧集或单集的个性化片单”。本月还会推出社区论坛,用户可针对影视内容直接发帖和评论,极大…

作者头像 李华
网站建设 2026/6/4 19:56:39

DIY便携式电源:从18650电池组到300W逆变器的完整构建指南

1. 项目概述与设计思路几年前,我带着无人机去野外拍摄,飞了两三块电池后,看着剩下的几块“砖头”和满目风景,只能悻悻而归。从那时起,我就琢磨着得有个能随身携带、随时补能的“移动电站”。市面上成品不少&#xff0c…

作者头像 李华