solidworks的api帮助还是很全面的,里面有好多见简单而有效的程序,成天在api帮助里泡着,现在做程序的速度是越来越快。好像当年成天在excel中录制宏看代码的感觉。下面的程序是api帮助里的,它用来显示装配体的所有零部件。我给我的同事们用,他们觉得不错 :)。程序使用了一个简单的递归方法遍历了装配体。
Make All Assembly Components Visible Example (VB)
This example shows how to make all assembly components visible.
'---------------------------------------
'
' Preconditions: An assembly document is open.
'
' Postconditions: Any hidden assembly components are made visible.
'
'---------------------------------------
Option Explicit
Public Enum swComponentVisibilityState_e
}}--> }}-->swComponentHidden = 0
}}--> }}-->swComponentVisible = 1
End Enum
Sub TraverseComponent _
( _
}}--> }}-->swComp As SldWorks.Component2, _
}}--> }}-->nLevel As Long _
)
}}--> }}-->Dim vChildCompArr }}--> }}-->As Variant
}}--> }}-->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
}}--> }}-->
}}--> }}-->vChildCompArr = swComp.GetChildren
}}--> }}-->For Each vChildComp In vChildCompArr
}}--> }}-->Set swChildComp = vChildComp
}}--> }}-->
}}--> }}-->Debug.Print sPadStr & swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">"
}}--> }}-->
}}--> }}-->If swComponentHidden = swChildComp.Visible Then
}}--> }}-->swChildComp.Visible = swComponentVisible
}}--> }}-->End If
}}--> }}-->
}}--> }}-->TraverseComponent swChildComp, nLevel + 1
}}--> }}-->Next
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
}}--> Set swApp = Application.SldWorks
}}--> }}-->Set swModel = swApp.ActiveDoc
}}--> }}-->Set swConf = swModel.GetActiveConfiguration
}}--> }}-->Set swRootComp = swConf.GetRootComponent}}-->}}-->
}}--> }}-->Debug.Print "File = " & swModel.GetPathName
}}--> TraverseComponent swRootComp, 1
End Sub