LinkSubList/fr: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
No edit summary
Line 10: Line 10:
}}
}}


Chaque tuple contient au moins deux éléments. Le premier élément est une référence à un [[App_DocumentObject/fr|objet document]] et le deuxième élément est une chaîne de texte indiquant le nom interne du sous-élément. Ce nom a un numéro commençant par un et jusqu'au nombre total de ces sous-éléments.
<div class="mw-translate-fuzzy">
Chaque tuple contient au moins deux éléments. Le premier élément est une référence à un objet et le deuxième élément est une chaîne de texte indiquant le nom interne du sous-élément. Ce nom a un numéro commençant par un et jusqu'au nombre total de ces sous-éléments.
</div>
{{Code|code=
{{Code|code=
tuple1 = (obj1, "Vertex1")
tuple1 = (obj1, "Vertex1")

Revision as of 16:42, 2 October 2020

Other languages:

Description

Une LinkSubList est une structure de données qui est utilisée comme une entrée pour diverses fonctions et objets. Son but est de transmettre un sous-objet ou un sous-élément (sommet, arête ou face) d'un objet à un autre objet qui utilisera ou transformera cette géométrie.

Un LinkSubList est composé d'une liste de tuples.

sublist = [tuple1, tuple2, tuple3, ...]

Chaque tuple contient au moins deux éléments. Le premier élément est une référence à un objet document et le deuxième élément est une chaîne de texte indiquant le nom interne du sous-élément. Ce nom a un numéro commençant par un et jusqu'au nombre total de ces sous-éléments.

tuple1 = (obj1, "Vertex1")
tuple2 = (obj2, "Face1")
tuple3 = (obj3, "Edge1")

Le deuxième élément du tuple peut lui-même être une liste de chaînes, indiquant plusieurs sous-éléments en même temps.

tuple1 = (obj1, ["Vertex1", "Vertex2"])
tuple2 = (obj2, ["Face1", "Face3", "Face5"])
tuple3 = (obj3, ["Vertex1", "Face5", "Edge1", "Edge2"])

It is possible to see that a LinkSubList is a list of LinkSub structures. Each tuple is in fact a LinkSub.

Script

Voir aussi: FreeCAD Script de base.

Un nouvel Objet créé par script peut accepter une LinkSubList en ajoutant la propriété correspondante.

It is important to recompute the objects before their subelements are used as input for other objects, otherwise an error may be produced as the geometry may not contain a valid Shape.

doc = App.newDocument()

cube = doc.addObject("Part::Box", "Cube")
cyl = doc.addObject("Part::Cylinder", "Cylinder")
doc.recompute()

new_obj = doc.addObject("App::FeaturePython", "New")

new_obj.addProperty("App::PropertyLinkSubList", "Geometry")
new_obj.Geometry = [(cube, ["Vertex1", "Vertex2"]),
                    (cyl, "Edge1")]
doc.recompute()

Le sous-élément peut ensuite être extrait de la propriété affectée et peut être manipulé pour faire quelque chose.

>>> new_obj.Geometry
[(<Part::PartFeature>, ('Vertex1', 'Vertex2')), (<Part::PartFeature>, ('Edge1',))]

>>> new_obj.Geometry[0]
(<Part::PartFeature>, ('Vertex1', 'Vertex2'))

>>> new_obj.Geometry[0][1]
('Vertex1', 'Vertex2')

>>> new_obj.Geometry[0][1][1]
'Vertex2'

>>> new_obj.Geometry[0][1][1].strip("Vertex")
'2'

>>> int(new_obj.Geometry[0][1][1].strip("Vertex"))
2