Select Component Face By Name Example (VBA)
This example shows how to find and select a
face using its name. The face must belong to an assembly component. This
code can be extended to traverse all assembly components, select assembly
component geometry by name, and create assembly mates using the selected
items.
'---------------------------------------------
Public Sub SelectComponentFaceByName(CompName
As String, FaceName As String)
Dim swApp As Object
Dim AssyDoc As Object
Dim SelMgr As Object
Dim Comp As Object
Dim Body As Object
Dim Face As Object
Dim CurFaceName
As String
Const swSelCOMPONENTS
= 20
Set swApp = CreateObject("SldWorks.Application")
' Get active Assembly document
Set AssyDoc
= swApp.ActiveDoc()
Set SelMgr =
AssyDoc.SelectionManager()
AssyDoc.SelectByID CompName, "COMPONENT",
0, 0, 0
Set Comp = SelMgr.GetSelectedObject3(1)
If (SelMgr.GetSelectedObjectType2(1) <> swSelCOMPONENTS)
Then
swApp.SendMsgToUser "Please Select an
Assembly Component."
Exit Sub
End If
Set Body = Comp.GetBody() ' Get the Component
Body
If (Body Is
Nothing) Then
swApp.SendMsgToUser "Component Body Unavailable."
swApp.SendMsgToUser "Make sure not lightweight
or suppressed"
Exit Sub
End If
Set Face = Body.GetFirstFace
' Traverse thru all body faces
Do While Not
Face Is Nothing
' Call ModelDoc.GetEntityName.
CurFaceName
= AssyDoc.GetEntityName(Face)
If (CurFaceName
= FaceName) Then
Face.Select
(0) ' Select the face
Exit Do
End If
Debug.Print CurFaceName
Set Face = Face.GetNextFace
Loop
End Sub