Python SolidWorks 二次开发—SolidWorks四种遍历零部件的方式(一)
前言
零部件的遍历主要是为了方便对零部件的后续操作,例如批量零部件的属性修改,方程式修改等,这里介绍四种SolidWorks自带的遍历方法,本文介绍第一种遍历方式
一、官方示例的遍历代码
在SolidWorks官方API帮助文件中,搜索“Traverse Assembly at Component Level Example ”,可找到具体的示例代码,详细示例代码如下:
Option Explicit
Sub TraverseComponent _
(swComp As SldWorks.Component2, nLevel As Long)
Dim vChildComp As Variant
Dim swChildComp As SldWorks.Component2
Dim swCompConfig As SldWorks.Configuration
Dim sPadStr As String
Dim i As Long
For i = 0 To nLevel - 1
sPadStr = sPadStr + " "
Next i
vChildComp = swComp.GetChildren
For i = 0 To UBound(vChildComp)
Set swChildComp = vChildComp(i)
TraverseComponent swChildComp, nLevel + 1
Debug.Print sPadStr & swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">"
Next i
End Sub
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swConf As SldWorks.Configuration
Dim swRootComp As SldWorks.Component2
Dim bRet As Boolean
Dim fileName As String
Dim errors As Long
Dim warnings As Long
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swConf = swModel.GetActiveConfiguration
Set swRootComp = swConf.GetRootComponent3(True)
Debug.Print "File = " & swModel.GetPathName
' Traverse components
TraverseComponent swRootComp, 1
End Sub
二、Python遍历代码
此处为方便后续比较,Python代码功能和VBA代码功能保持一致,不进行删减,以下为Python代码示例:
import win32com.client
import pythoncom
from swconst import constants
def TraverseComponent(swComp, nLevel):
sPadStr=''
for i in range(nLevel-1):
sPadStr = sPadStr + " "
vChildComp = swComp.GetChildren
for i in range(len(vChildComp)):
swChildComp = vChildComp[i]
TraverseComponent(swChildComp, nLevel + 1)
print(f'{sPadStr}{swChildComp.Name2} " <" {swChildComp.ReferencedConfiguration} ">"')
def main():
sldver=2018
swApp=win32com.client.Dispatch(f'SldWorks.Application.{sldver-1992}')
swApp.CommandInProgress =True
swApp.Visible =True
swModel = swApp.ActiveDoc
swConf = swModel.GetActiveConfiguration
swRootComp = swConf.GetRootComponent3(True)
print(f"File = {swModel.GetPathName}" )
# ' Traverse components
TraverseComponent(swRootComp, 1)
if __name__ == '__main__':
main()
文章介绍了在SolidWorks中使用Python进行二次开发时,遍历零部件的两种方法:官方VBA示例代码和对应的Python实现。遍历零部件的目的是为了便于执行如属性修改、方程式修改等批量操作。文章提供了详细的示例代码,包括VBA子程序和Python函数的实现。
3476

被折叠的 条评论
为什么被折叠?



