Macro MeshToPart/cs: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
<div class="mw-translate-fuzzy"> |
|||
{{Macro/cs |
{{Macro/cs |
||
|Name=MeshToPart |
|Name=MeshToPart |
||
Line 12: | Line 11: | ||
|Download=[https://www.freecadweb.org/wiki/images/f/fa/Macro_MeshToPart.png ToolBar Icon] |
|Download=[https://www.freecadweb.org/wiki/images/f/fa/Macro_MeshToPart.png ToolBar Icon] |
||
}} |
}} |
||
</div> |
|||
==Popis== |
==Popis== |
||
Line 24: | Line 22: | ||
'''Macro_MeshToPart.FCMacro''' |
'''Macro_MeshToPart.FCMacro''' |
||
{{ |
{{MacroCode|code= |
||
import FreeCAD,FreeCADGui,Mesh,Part,MeshPart |
import FreeCAD,FreeCADGui,Mesh,Part,MeshPart |
||
Line 61: | Line 59: | ||
}} |
}} |
||
{{clear}} |
{{clear}} |
||
==Odkaz== |
==Odkaz== |
||
Latest revision as of 11:08, 23 May 2020
Popis |
---|
Toto makro zkonvertuje vybrané sítě na díl. Má ovšem značné tolerance, takže je použitelné pouze pro objekty, které nemají křivky, jinak nelze zaručit správný výsledek. Version macro : 1.0 Date last modification : 2011-08-01 FreeCAD version : All Download : ToolBar Icon Autor: Wmayer |
Autor |
Wmayer |
Download |
ToolBar Icon |
Odkazy |
Makro recepty| Jak nainstalovat makra Jak přizpůsobit panely nástrojů |
Verze |
1.0 |
Datum poslední úpravy |
2011-08-01 |
Verze FreeCAD |
All |
Výchozí zástupce |
None |
Viz též |
None |
Popis
Toto makro zkonvertuje vybrané sítě na díl. Má ovšem značné tolerance, takže je použitelné pouze pro objekty, které nemají křivky, jinak nelze zaručit správný výsledek.
Skript
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
Odkaz
Diskuse na fóru Convert mesh to solid?