Beskrivning |
---|
Detta makro omvandlar utvalda maskor till delar. Den har en bred tolerans, så använd den bara med föremål som inte har några kurvor annars får du konstiga resultat. Versions makro : 1.0 Datum senaste ändring : 2011-08-01 FreeCAD-versionen : All Ladda ner : ToolBar Icon Författare : Wmayer |
Författare |
Wmayer |
Ladda ner |
ToolBar Icon |
länkar |
Makros recept Så här installerar du makron Hur man anpassar verktygsfält |
Makroversion |
1.0 |
Datum senaste ändring |
2011-08-01 |
FreeCAD Version(s) |
All |
Standard genväg |
None |
Se även |
None |
Detta makro omvandlar utvalda maskor till delar. Den har en bred tolerans, så använd den bara med föremål som inte har några kurvor annars får du fel eller konstiga resultat.
Macro_MeshToPart.FCMacro
import FreeCAD,FreeCADGui,Mesh,Part,MeshPart for obj in FreeCADGui.Selection.getSelection(): if "Mesh" in obj.PropertiesList: faces = [] mesh = obj.Mesh segments = mesh.getPlanarSegments(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
Diskussionen på forumet Convert mesh to solid?