Search code examples
vbacatia

Catia Listbox items


I have this task where i need to find some type of hybridshapes and collect them in a listbox i have done that part, but i need to create it in such a way that when user selects a item from the list box respective hybridshape or object should get selected in catia here is the image

enter image description here

here is the code

Option Explicit

   Dim ODoc As Document
   Dim opartdoc As PartDocument
   Dim oPart As Part
   Dim ohybs As HybridBodies
   Dim ohyb As HybridBody
   Dim ohybshps As HybridShapes
   Dim ohybshp As HybridShape
   Dim i As Integer
   Dim j As Integer

Private Sub UserForm_Initialize()

   Set ODoc = CATIA.ActiveDocument
   Set opartdoc = CATIA.ActiveDocument
   Set oPart = opartdoc.Part

End Sub

Private Sub ListBtn_Click()

  Set ohybs = oPart.HybridBodies
  Set ohyb = ohybs.Item("Shapes")
  Set ohybshps = ohyb.HybridShapes
  For i = 1 To ohybshps.Count
  Set ohybshp = ohybshps.Item(i)
  ShapeBox.AddItem ohybshp.Name
  ShapeBox.Font.Bold = True
  ShapeBox.Font.Size = 25

Next

End Sub

Private Sub SelectBtn_Click()

End Sub

i dont know much about listbox handling how do i create link between items in listbox and objects in catia

thanks


Solution

  • Hi you could add this to your code and try it. Beware your solution is pretty fragile one. You should consider more robust checks for objects validation

    The trick lies in ShapeBox.Value in Shapebox click event. The rest is just catia stuff. But this solution is not foolproof because if you have more shapes with same names it might not select the right one. I would prefer creating a collection where you store real object from sets and the passing these objects to selection

        Private Sub ShapeBox_Click()
        
            Call opartdoc.Selection.Clear
            Call opartdoc.Selection.Add(opartdoc.Part.FindObjectByName(ShapeBox.Value))
        
        End Sub