LinkSubList/fr: Difference between revisions
(Created page with "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 intern...") |
(Created page with "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.") |
||
Line 17: | Line 17: | ||
}} |
}} |
||
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. |
|||
The second element of the tuple can itself be a list of strings, indicating various subelements at the same time. |
|||
{{Code|code= |
{{Code|code= |
||
tuple1 = (obj1, ["Vertex1", "Vertex2"]) |
tuple1 = (obj1, ["Vertex1", "Vertex2"]) |
Revision as of 20:00, 1 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 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"])
Scripting
See also: FreeCAD Scripting Basics.
A new scripted object can accept a LinkSubList by adding the corresponding property.
doc = App.newDocument()
cube = doc.addObject("Part::Box", "Cube")
cyl = doc.addObject("Part::Cylinder", "Cylinder")
new_obj = doc.addObject("App::FeaturePython", "New")
new_obj.addProperty("App::PropertyLinkSubList", "Geometry")
new_obj.Geometry = [(cube, ["Face1", "Face2"]),
(cyl, "Edge1")]
The subelement can then be extracted from the assigned property, and can be manipulated to do something.
>>> 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é)