Get Component from Feature Example (VBA)
This example shows how to get a component in an assembly from a feature.
'-----------------------------------------------
'
' Preconditions: Assembly document with at least on component
' is
open.
'
' Postconditions: None
'
'-----------------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Sub Main()
Dim
swModel As
SldWorks.ModelDoc2
Dim
swFeature As
SldWorks.Feature
Dim
swEntity As
SldWorks.Entity
Dim
bValue As
Boolean
Dim
swComponent As
SldWorks.Component2
'
Connect to SolidWorks
Set
swApp = Application.SldWorks
'
Get active document
Set
swModel = swApp.ActiveDoc
'
Check the document is an assembly
If
(swModel.GetType <> swDocASSEMBLY)
Then
Exit
Sub
End
If
'
Clear the selection
swModel.ClearSelection2 True
'
Select a feature in a part document
Stop
'
Get the feature
Set
swFeature = swModel.SelectionManager.GetSelectedObject6(1,
-1)
'
Cast the feature to an entity
Set
swEntity = swFeature
'
Assert the cast succeeded
Debug.Assert
(Not (swEntity Is Nothing))
Debug.Print
'
Get type through entity interface
Debug.Print
"Entity type = " & swEntity.GetType
Debug.Assert
(swEntity.GetType = swSelectType_e.swSelBODYFEATURES)
'
Get type through feature interface:
'
Feature inherits from Entity, this will actually call Entity::GetType
Debug.Print
"Entity type = " & swFeature.GetType
Debug.Assert
(swFeature.GetType = swSelectType_e.swSelBODYFEATURES)
'
Get the component for the entity
Set
swComponent = swEntity.GetComponent
'
Print component details
Debug.Print
swComponent.Name2
Debug.Print
" "
& swComponent.GetPathName
'
Clear the selection
swModel.ClearSelection2 True
'
Select the feature through the Entity interface
bValue
= swEntity.Select4(False, Nothing)
'
Print the type of the selected object
Debug.Print
swModel.SelectionManager.GetSelectedObjectType3(1,
-1)
Debug.Assert
(swModel.SelectionManager.GetSelectedObjectType3(1,
-1) = swSelectType_e.swSelBODYFEATURES)
'
Clear the selection
swModel.ClearSelection2 True
'
Select the feature through the Feature interface
bValue
= swFeature.Select2(False, 0)
'
Print the type of the selected object
Debug.Print
swModel.SelectionManager.GetSelectedObjectType3(1,
-1)
Debug.Assert
(swModel.SelectionManager.GetSelectedObjectType3(1,
-1) = swSelectType_e.swSelBODYFEATURES)
End Sub