Macro Extract Wires from Mesh/fr: Difference between revisions
(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...") |
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}} |
{{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}} |
||
==Description== |
==Description== |
Revision as of 15:37, 25 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 : 00/00/0000 Auteur: Yorik |
Auteur |
Yorik |
Téléchargement |
None |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
1 |
Dernière modification |
00/00/0000 |
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()