Macro Extract Wires from Mesh/it: Difference between revisions

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


{{Macro/it|Icon=Text-x-python|Name=Macro Extract Wires from Mesh|Name/it=Wire da Mesh|Description=Estrae i bordi wire dai mesh selezionati|Author=Yorik|Version=1|Date=17/12/2016}}
{{Macro/it|Icon=Text-x-python|Name=Macro Extract Wires from Mesh|Name/it=Wire da Mesh|Description=Estrae i bordi wire dai mesh selezionati|Author=Yorik|Version=1|Date=2016-12-17}}


==Descrizione==
==Descrizione==

Revision as of 19:29, 29 September 2017

File:Text-x-python Macro Extract Wires from Mesh

Descrizione
Estrae i bordi wire dai mesh selezionati

Versione macro: 1
Ultima modifica: 2016-12-17
Autore: Yorik
Autore
Yorik
Download
None
Link
Versione macro
1
Data ultima modifica
2016-12-17
Versioni di FreeCAD
None
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Trova i contorni di wire negli oggetti mesh selezionati. I contorni wire sono formati da tutti i bordi trovati nell'oggetto mesh che sono condivisi da una sola faccia, cioè, che sono spigoli "confine". I wire trovati vengono aggiunti al documento (un composto per oggetto mesh), mentre la mesh stessa viene nascosta.

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: