0

do you have any suggestion how to select only bodies which are visible and in-root of part? For example i wish to get selected only Lens - Outer Headlamp - LH - Clear and Lens - Outer Headlamp - LH - Black from this structure:

enter image description here

I tried

Dim objPart As part
Dim objBodies As Bodies
Set objPart = CATIA.ActiveDocument.part
Set objBodies = objPart.Bodies

and value by objBodies.Count is 113, so i tried it by Search command directly in Catia and I'm not able to get only that two bodies. Do you have any ideas?

SilentCry
  • 1,902
  • 3
  • 16
  • 23

1 Answers1

0

Finally I got the answer:

Dim objPart As part
Dim objBodies As Bodies
dim rootBodiesCount as Integer
Set objPart = CATIA.ActiveDocument.part
Set objBodies = objPart.Bodies
rootBodiesCount = getRootBodiesCount(objBodies)

Function getRootBodiesCount(allBodies as Bodies) As Integer
  getRootBodiesCount = 0
  For i = 1 To allBodies.Count
    Dim inBool As Boolean: inBool = allBodies.Item(i).InVooleanOperation
    Dim visibility As Boolean: visibility = allBodies.Item(i).Visible
    If inBool = False Then
      If visibility Then getRootBodiesCount = getRootBodiesCount + 1
    End If
  Next
End Function
SilentCry
  • 1,902
  • 3
  • 16
  • 23
  • its important to add, if you use it as If allBodies.Item(i).InBooleanOperation Then, it will be true for all checks after first positive answer – tsolina Mar 29 '16 at 08:47