Macro Extract Wires from Mesh/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "{{Macro/fr|Icon=Text-x-python|Name/fr=Macro Extract Wires from Mesh|Description=Extrait les fils constituants les bords des mailles sélectionnées|Author=Yorik|Version=1}}")
(Created page with "Cherche les bords dans les objets de maillage sélectionnés. Les bords recherchés sont les bords formés à partir de tous les bords trouvés et partagés par une seule face...")
Line 4: Line 4:
==Description==
==Description==


Cherche les bords dans les objets de maillage sélectionnés. Les bords recherchés sont les bords formés à partir de tous les bords trouvés et partagés par une seule face, c'est-à-dire, les bords "frontière". Les fils trouvés sont ajoutés au document (un composant par objet maillé), tandis que le maillage est masqué.
Finds boundary wires in selected mesh objects. Boundary wires are formed from all the edges found in the mesh that are shared by only one face, that is, they are "border" edges. The found wires get added to the document (one compound per mesh object), while the mesh itself gets hidden.


==Script==
==Script==

Revision as of 15:15, 30 January 2017

File:Text-x-python {{{Name}}}

Description
Extrait les fils constituants les bords des mailles sélectionnées

Version macro : 1
Auteur: Yorik
Auteur
Yorik
Téléchargement
None
Liens
Version Macro
1
Dernière modification
None
Version(s) FreeCAD
None
Raccourci clavier
None
Voir aussi
None

Description

Cherche les bords dans les objets de maillage sélectionnés. Les bords recherchés sont les bords formés à partir de tous les bords trouvés et partagés par une seule face, c'est-à-dire, les bords "frontière". Les fils trouvés sont ajoutés au document (un composant par objet maillé), tandis que le maillage est masqué.

Script

#!/usr/bin/python

# This macro will extract wires from selected meshes
# The result is a new Part Compound containing wires, one per original mesh object
# The selected meshes will be hidden but still selected after the operation.
# Warning, it takes a bit of time...

import FreeCAD,FreeCADGui,Part,Draft,DraftGeomUtils,Mesh
for obj in FreeCADGui.Selection.getSelection():
    if obj.isDerivedFrom("Mesh::Feature"):
        shape = Part.Shape()
        shape.makeShapeFromMesh(obj.Mesh.Topology,0.1)
        edges = []
        lut = {}
        for f in shape.Faces:
            for e in f.Edges:
                lut.setdefault(e.hashCode(),[]).append(e)
        for k,v in lut.items():
            if len(v) == 1:
                edges.extend(v)
        if edges:
            wires = DraftGeomUtils.findWires(edges)
            if wires:
                Part.show(Part.makeCompound(wires))
                obj.ViewObject.hide()
Other languages: