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?