LinkSubList/fr: Difference between revisions
(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"> |
|||
⚫ | |||
</div> |
|||
{{Code|code= |
{{Code|code= |
||
tuple1 = (obj1, "Vertex1") |
tuple1 = (obj1, "Vertex1") |
Revision as of 16:42, 2 October 2020
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
- Scripts FreeCAD : Python, Introduction à Python, Tutoriel sur les scripts Python, Débuter avec les scripts
- Modules : Modules intégrés, Unités, Quantity
- Ateliers : Création d'atelier, Commands Gui, Les commandes, Installer des ateliers supplémentaires
- Maillages et objets Parts : Scripts Mesh, Script de données topologiques, Conversion objet Mesh en Part, PythonOCC
- Objets paramétriques : Objets créés par script, Viewproviders (Icône personnalisée dans l'arborescence)
- Scénographie : Graphe de scène Coin (Inventor), Pivy
- Interface graphique : Création d'interface, Création d'une boite de dialogue (1, 2, 3, 4, 5), PySide, Exemples PySide débutant, intermédiaire, expérimenté
- Macros : Macros, Comment installer des macros
- Intégration : Intégrer FreeCAD, Intégration de FreeCADGui
- Autre : Expressions, Extraits de codes, Fonction - tracer une ligne, Bibliothèque mathématique vectorielle de FreeCAD (déprécié)