| Descripción |
|---|
| Esta macro convierte las mallas seleccionadas en piezas. Tiene una tolerancia bastante grande, así que utilízala sólo con objetos que no tengan curvas pues de otro modo obtendrás resultados extraños Versión macro : 1.0 Fecha última modificación : 2011-08-01 Versión FreeCAD : All Descargar : ToolBar Icon Autor : Wmayer |
| Autor |
| Wmayer |
| Descargar |
| ToolBar Icon |
| Enlace |
| Macros recipes How to install macros How to customize toolbars |
| Versión Macro |
| 1.0 |
| Fecha última modificación |
| 2011-08-01 |
| Versión(es) FreeCAD |
| All |
| Acceso directo predeterminado |
| None |
| Ver también |
| None |
Esta macro convierte las mallas seleccionadas en piezas. Tiene una tolerancia bastante grande, así que utilízala sólo con objetos que no tengan curvas pues de otro modo obtendrás resultados extraños
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
La discusión en el foro Convert mesh to solid?