Macro Extract Wires from Mesh/fr: Difference between revisions

From FreeCAD Documentation
mNo edit summary
mNo edit summary
Line 1: Line 1:


{{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|Date=00/00/0000}}
{{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|Date=17/12/2016}}


==Description==
==Description==

Revision as of 12:22, 27 September 2017

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

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

Version macro : 1
Date dernière modification : 17/12/2016
Auteur: Yorik
Auteur
Yorik
Téléchargement
None
Liens
Version Macro
1
Dernière modification
17/12/2016
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: