Macro MeshToPart/sv: Difference between revisions
Renatorivo (talk | contribs) (Created page with "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.") |
Renatorivo (talk | contribs) (Replaced content with "==Beskrivning==") |
||
Line 1: | Line 1: | ||
{{Macro/sv|Icon=Text-x-python|Name=MeshToPart|Name/sv=MeshToPart|Description=This macro converts selected meshes to parts. It has a broad tolerance, so use it only with objects that have no curves otherwise you'll get weird results|Author=Wmayer}} |
{{Macro/sv|Icon=Text-x-python|Name=MeshToPart|Name/sv=MeshToPart|Description=This macro converts selected meshes to parts. It has a broad tolerance, so use it only with objects that have no curves otherwise you'll get weird results|Author=Wmayer}} |
||
== |
==Beskrivning== |
||
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. |
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. |
Revision as of 08:45, 24 May 2014
File:Text-x-python MeshToPart |
Beskrivning |
---|
This macro converts selected meshes to parts. It has a broad tolerance, so use it only with objects that have no curves otherwise you'll get weird results 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 |
None |
FreeCAD Version(s) |
None |
Standard genväg |
None |
Se även |
None |
Beskrivning
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.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
Link
The discussion on the forum Convert mesh to solid?