Konvertera Nät till Delar
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 Författare : Wmayer |
Författare |
Wmayer |
Ladda ner |
None |
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) |
None |
Standard genväg |
None |
Se även |
None |
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 fel eller konstiga resultat.
Script
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
Länk
The discussion on the forum Convert mesh to solid?