Get Faces Affected by Draft Feature Example (VBA)
This example shows how to get the faces affected by a draft feature.
'-----------------------------------------------
'
' Problem:
' In
SolidWorks, a feature is a collection of faces.
' The
faces created by a feature can be retrieved using
' IFeature::GetFaces.
However, certain types of features
' only
affect existing faces and do not create any new faces.
' Examples
of these types of features are draft and scale features.
' For
these features, IFeature::GetFaces returns an
' empty
array (no faces).
'
' This
sample code shows how to use IDraftFeatureData2::GetDraftedEntities
' to
get the faces affected by a draft feature.
'
' Preconditions:
' (1)
Part or assembly is open.
' (2)
Assembly is fully resolved.
' (3)
Draft feature is selected.
'
' Postconditions:
' (1)
Draft feature is deselected.
' (2)
Faces affected by draft feature are selected.
'
'------------------------------------------------
Option Explicit
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swSelMgr As
SldWorks.SelectionMgr
Dim
swSelData As
SldWorks.SelectData
Dim
swFeat As
SldWorks.Feature
Dim
swDraftFeat As
SldWorks.DraftFeatureData2
Dim
vEnt As
Variant
Dim
vEntArr As
Variant
Dim
swEnt As
SldWorks.entity
Dim
i As
Long
Dim
bRet As
Boolean
Set
swApp = CreateObject("SldWorks.Application")
Set
swModel = swApp.ActiveDoc
Set
swSelMgr = swModel.SelectionManager
Set
swSelData = swSelMgr.CreateSelectedData
Set
swFeat = swSelMgr.GetSelectedObject5(1)
Set
swDraftFeat = swFeat.GetDefinition
swModel.ClearSelection2 True
Debug.Assert
0 = swFeat.GetFaceCount
'
No need to roll back to get affected faces
vEntArr
= swDraftFeat.GetDraftedEntities
For
Each vEnt In vEntArr
Set
swEnt = vEnt
bRet
= swEnt.Select4(True, swSelData)
Debug.Assert
bRet
Next
End Sub
'--------------------------------------------------