Macro MeshToPart/it: Difference between revisions
Renatorivo (talk | contribs) (Created page with '=Macro MeshToPart - Da Mesh a Parte= {{Macro/it|Name=MeshToPart|Description=Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da ut…') |
m (template fr) |
||
Line 37: | Line 37: | ||
FreeCAD.ActiveDocument.addObject("Part::Feature",name).Shape = solid |
FreeCAD.ActiveDocument.addObject("Part::Feature",name).Shape = solid |
||
{{languages/it | {{en|Macro_MeshToPart}} {{es|Macro_MeshToPart/es}} }} |
{{languages/it | {{en|Macro_MeshToPart}} {{es|Macro_MeshToPart/es}} {{fr|Macro_MeshToPart/fr}} }} |
Revision as of 19:06, 25 July 2012
Macro MeshToPart - Da Mesh a Parte
Descrizione |
---|
Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono strani risultati Autore: Wmayer |
Autore |
Wmayer |
Download |
None |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
1.0 |
Data ultima modifica |
None |
Versioni di FreeCAD |
None |
Scorciatoia |
Nessuna |
Vedere anche |
Nessuno |
import FreeCAD,FreeCADGui,Mesh,Part,MeshPart for obj in FreeCADGui.Selection.getSelection(): if "Mesh" in obj.PropertiesList: faces = [] mesh = obj.Mesh segments = mesh.getPlanes(0.01) # use rather strict tolerance here for i in segments: if len(i) > 0: # a segment can have inner holes wires = MeshPart.wireFromSegment(mesh, i) # we assume that the exterior boundary is that one with the biggest bounding box if len(wires) > 0: ext = None max_length = 0 for i in wires: if i.BoundBox.DiagonalLength > max_length: max_length = i.BoundBox.DiagonalLength ext = i wires.remove(ext) # all interior wires mark a hole and must reverse their orientation, otherwise Part.Face fails for i in wires: i.reverse() # make sure that the exterior wires comes as first in the lsit wires.insert(0, ext) faces.append(Part.Face(wires)) shell=Part.Compound(faces) solid = Part.Solid(Part.Shell(faces)) name = obj.Name FreeCAD.ActiveDocument.removeObject(name) FreeCAD.ActiveDocument.addObject("Part::Feature",name).Shape = solid