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. Open a part or assembly with a draft feature.
' 2. Fully resolve the assembly.
' 3. Select a draft feature.
'
' Postconditions:
' 1. Draft feature is deselected.
' 2. Faces affected by the draft feature are selected.
' 3. The type of draft feature as defined in swDraftType_e
' is printed to the Immediate window.
'----------------------------------------------------------------------------
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 bRet
As Boolean
Set swApp =
CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swSelData = swSelMgr.CreateSelectData
Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
Set swDraftFeat = swFeat.GetDefinition
' Type as defined in swDraftType_e
Debug.Print swDraftFeat.Type
swModel.ClearSelection2 True
' 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)
Next
End Sub