Est-il possible dans une macro, de ne parcourir que les objets d'un certain niveau dans l'arborescence ?
Je m'explique à partir de l'exemple joint pour lequel seuls les objets Body et Cut m'intéressent dans la mesure ou ils sont au plus haut niveau de l'arborescence.
Ainsi Body, Body003 et Cut m'intéressent mais pas Body004 et Body005.
Il faudrait que j'applique un filtre mais en dehors d'un filtrage par le Label je ne sais pas comment aborder le problème.
Code: Select all
liste = App.ActiveDocument.addObject('Spreadsheet::Sheet', 'Feuille_de_Debit')
cell = 1
# Titre des colonnes
liste.set("A1", "Label")
liste.set("B1", "Longueur")
liste.set("C1", "Hauteur")
liste.set("D1", "Épaisseur")
for obj in App.ActiveDocument.Objects:
if obj.isDerivedFrom("PartDesign::Body") or obj.isDerivedFrom('Part::Cut'):
cell = cell + 1
liste.set("A" + str(cell), obj.Label)
liste.set("B" + str(cell), str(obj.Shape.BoundBox.XLength))
liste.set("C" + str(cell), str(obj.Shape.BoundBox.ZLength))
liste.set("D" + str(cell), str(obj.Shape.BoundBox.YLength))
App.ActiveDocument.recompute()