2016-02-24 4 views
0

Avez-vous une suggestion sur la façon de sélectionner uniquement les corps qui sont visibles et en-racine de la pièce? Par exemple, je souhaite être sélectionné seulement Lens - extérieur Lampe frontale - LH - Clair et Lens - extérieur Lampe frontale - LH - Noir de cette structure:Comment obtenir uniquement les corps de niveau racine

enter image description here

J'ai essayé

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

et valeur par objBodies.Count est 113, donc je l'ai essayé par la commande de recherche directement dans Catia et je ne suis pas capable d'obtenir seulement que deux corps. As tu des idées?

Répondre

0

Enfin j'ai eu la réponse:

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 
+0

il est important d'ajouter, si vous l'utilisez comme si allBodies.Item (i) .InBooleanOperation Ensuite, il sera vrai pour tous les contrôles après la première réponse positive – tsolina