Macro MeshToPart/sv

Konvertera Nät till Delar
Detta makro konverterar valda nät till delar. Det har en bred tolerans, så använd det bara med objekt som inte har några kurvor, annars kommer du att få konstiga resultat.

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) # använd en ganska strikt tolerans här for i in segments: if len(i) > 0: # ett segment kan ha innerhål wires = MeshPart.wireFromSegment(mesh, i) 		    # vi antar att den externa gränsen är den som ryms i den största markeringslådan 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) # alla interiöra trådar markerar ett hål och deras orientering måste reverseras, annars så misslyckas Part.Face for i in wires: i.reverse # försäkra dig om att de exteriöra trådarna kommer först i listan 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