Find Parent Feature using Collections Example (VBA)
This example shows how to walk the FeatureManager design tree and touch
all of the parent features. Using collections lets you visit all of the
parent features without using a recursive operation.
'----------------------------------------------
'
' Preconditions: A body is selected from either of the
body folders.
'
' Postconditions: All of the parent feature that matches
the type specified are found.
'
'----------------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModelDoc2 As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swBody2 As SldWorks.body2
Dim swFace2 As SldWorks.face2
Dim swFeature As SldWorks.Feature
Dim parents As Variant
Dim varobj As Variant
Sub main()
Set swApp = Application.SldWorks
Set swModelDoc2 = swApp.ActiveDoc
Set swSelMgr = swModelDoc2.SelectionManager
Set swBody2 = swSelMgr.GetSelectedObject5(1)
Set swFace2 = swBody2.GetFirstFace
Set swFeature = swFace2.GetFeature
Debug.Print swFeature.Name
If "WeldMemberFeat" <> swFeature.GetTypeName Then
Dim
parentcoll As New Collection
Set
varobj = swFeature
parentcoll.Add
swFeature
Do
While parentcoll.Count > 0
Set
swFeature = parentcoll(1)
Debug.Print
swFeature.Name
If
"WeldMemberFeat" <> swFeature.GetTypeName
Then
parentcoll.Remove
1
parents
= swFeature.GetParents
For
Each varobj In parents
Set
swFeature = varobj
parentcoll.Add
varobj
Next
varobj
Set
swFeature = Nothing
Else
Exit
Do
End
If
Loop
End If
If Not swFeature Is Nothing Then
swFeature.Select2 False, 0
Else
Stop
End If
End Sub