Hello Guys!
Below is the code I`m using to get a list of solidbodies. I`m adding Structural Members only into my Combobox.
I need to show that body on the drawing when user chooses it from drop down list. I`m having problems referencing solidbodies from the array based on user choice.
Can someone point me into the right direction please?
Thanks,
Alex.
'#################################################################################
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swView As SldWorks.View
Dim nbrBodies As Long
Dim arrBody As Variant
Dim swBody As SldWorks.Body2
Dim swFace As SldWorks.Face2
Dim swEnt As SldWorks.Entity
Dim swSelData As SldWorks.SelectData
Dim bool As Boolean
Dim arrBodiesIn As Variant
Dim Bodies(0) As Object
Dim i As Long
Dim objType As Long
Sub main()
Set swApp = GetObject(, "SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swView = swSelMgr.GetSelectedObject6(1, -1)
If (swView Is Nothing) Then
MsgBox "View not selected."
Exit Sub
End If
nbrBodies = swView.GetBodiesCount
Debug.Print "Number of bodies: " & nbrBodies
If (nbrBodies < 1) Then
MsgBox "No bodies in selected view."
Exit Sub
End If
arrBody = swView.Bodies
For i = 0 To UBound(arrBody)
Set swBody = arrBody(i)
Set swSelData = swSelMgr.CreateSelectData
swSelData.View = swView
bool = swBody.Select2(False, swSelData)
' Object type 76 is a solid body
objType = swSelMgr.GetSelectedObjectType3(1, -1)
' If (objType = 76) Then
' Debug.Print " Object type: solid body"
' End If
If (Not (swSelSOLIDBODIES = swSelMgr.GetSelectedObjectType3(1, -1))) Then
MsgBox "Solid body not found."
End If
Set swFace = swBody.GetFirstFace
Do While Not swFace Is Nothing
Set swEnt = swFace
' Select using IEntity
bool = swEnt.Select4(True, swSelData): Debug.Assert bool
Set swFace = swFace.GetNextFace
Loop
Debug.Print " Name of body: " & swBody.GetSelectionId
' adding Descriptions on to the combo box
With frm_main.ComboBox_Bodies
If Mid(swBody.GetSelectionId, 1, 17) = "Structural Member" Then
.AddItem (swBody.GetSelectionId)
End If
End With
Next i
swModel.ClearSelection2 True
'#################################################################################
So here when user chooses the Item from drop down I have to reference it and show:
Private Sub ComboBox_Bodies_Change()
' Get the bodies from referenced model
Set swModel = swView.ReferencedDocument
arrBody = swModel.GetBodies2(swSolidBody, True)
If (nbrBodies = 1) Then
swView.Bodies = (arrBody)
Else
' Set the body to view, HOW TO REFERENCE IT TO swBody.GetSelectionId AND MY COMBOBOX?
Set Bodies(0) = arrBody(0)
arrBodiesIn = Bodies
swView.Bodies = (arrBodiesIn)
End If
swModel.ClearSelection2 True
End Sub
Any help is appreciated
SolidworksApi macros