Macro - Explorer objets selon niveau dans l'arborescence

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
User avatar
FC_Menuiserie
Posts: 65
Joined: Thu Mar 18, 2021 10:28 am
Location: Arras (62), France

Macro - Explorer objets selon niveau dans l'arborescence

Post by FC_Menuiserie »

Bonjour
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()
Jean-Luc
On apprend de ses erreurs. J'ai encore bien appris aujourd'hui !
User avatar
FC_Menuiserie
Posts: 65
Joined: Thu Mar 18, 2021 10:28 am
Location: Arras (62), France

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by FC_Menuiserie »

Je pense que cela ira mieux avec le fichier exemple
Attachments
Boîte englobante.FCStd
(53.93 KiB) Downloaded 25 times
Jean-Luc
On apprend de ses erreurs. J'ai encore bien appris aujourd'hui !
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by flachyjoe »

Salut,
tu peux regarder la propriété InList des objets : si InList est vide alors l'objet est au plus haut niveau.
Capture d’écran_2021-05-17_10-48-56.png
Capture d’écran_2021-05-17_10-48-56.png (12.87 KiB) Viewed 1005 times

Code: Select all

>>> App.ActiveDocument.Body001.InList
[<PartDesign::Boolean>]
>>> App.ActiveDocument.Body002.InList
[]
- Flachy Joe -
Image
User avatar
FC_Menuiserie
Posts: 65
Joined: Thu Mar 18, 2021 10:28 am
Location: Arras (62), France

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by FC_Menuiserie »

Merci Flachyjoe ! :D

Où trouve-t-on détallés les attributs et méthodes, spécifiques à FC ?
Jean-Luc
On apprend de ses erreurs. J'ai encore bien appris aujourd'hui !
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by flachyjoe »

Les API sont documentées là : https://freecad.github.io/SourceDoc/
mais c'est un peu (beaucoup) galère à utiliser. J'utilise plutôt l’auto-complétion de la console
Capture d’écran_2021-05-17_12-38-26.png
Capture d’écran_2021-05-17_12-38-26.png (39.26 KiB) Viewed 954 times
- Flachy Joe -
Image
openBrain
Veteran
Posts: 9041
Joined: Fri Nov 09, 2018 5:38 pm
Contact:

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by openBrain »

Sinon pour le niveau haut de la hiérarchie :

Code: Select all

App.ActiveDocument.RootObjects
User avatar
FC_Menuiserie
Posts: 65
Joined: Thu Mar 18, 2021 10:28 am
Location: Arras (62), France

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by FC_Menuiserie »

openBrain wrote: Mon May 17, 2021 2:45 pm Sinon pour le niveau haut de la hiérarchie :

Code: Select all

App.ActiveDocument.RootObjects
Oui OpenBrain mais ce serait trop simple. Comme je suis plutôt maniaque ordonné, j'utilise les "Group" et "Part".
J'aime bien regrouper les objets et pouvoir les visualiser ou les cacher en un seul geste c'est drôlement pratique.
Jean-Luc
On apprend de ses erreurs. J'ai encore bien appris aujourd'hui !
User avatar
FC_Menuiserie
Posts: 65
Joined: Thu Mar 18, 2021 10:28 am
Location: Arras (62), France

Re: Macro - Explorer objets selon niveau dans l'arborescence

Post by FC_Menuiserie »

flachyjoe wrote: Mon May 17, 2021 10:39 am Les API sont documentées là : https://freecad.github.io/SourceDoc/
mais c'est un peu (beaucoup) galère à utiliser. J'utilise plutôt l’auto-complétion de la console
J’utilise aussi la console Python mais ça donne vraiment l'impression de lire une documentation au travers d'un trou de serrure.
Merci pour le lien Github j'essaierai de m'y plonger.
Jean-Luc
On apprend de ses erreurs. J'ai encore bien appris aujourd'hui !
Post Reply