| Opis |
|---|
| To makro konwertuje zaznaczone siatki na części. Ma szeroką tolerancję, dlatego używaj go tylko dla obiektów bez krzywych, w przeciwnym razie mogą pojawić się nieprawidłowe wyniki. Macro version: 1.0 Last modified: 2011-08-01 FreeCAD version: All Download: Ikona paska narzędzi Autor: Wmayer |
| Autor |
| Wmayer |
| Do pobrania |
| Ikona paska narzędzi |
| Odnośniki |
| Przepisy na makropolecenia Jak zainstalować makrodefinicje Dostosowanie pasków narzędzi |
| Wersja Makrodefinicji |
| 1.0 |
| Data zmian |
| 2011-08-01 |
| Wersja FreeCAD |
| All |
| Domyślny skrót |
| Brak |
| Zobacz również |
| - |
To makro konwertuje zaznaczone siatki na części. Ma dużą tolerancję, więc stosuj je tylko do obiektów bez krzywych, w przeciwnym razie mogą wystąpić błędy lub nieoczekiwane wyniki.
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
Dyskusja na forum Convert mesh to solid?