Macro MeshToPart/cs: Difference between revisions

From FreeCAD Documentation
mNo edit summary
(Updating to match new version of source page)
Line 1: Line 1:
<languages/>
{{Macro/cs|Icon=Text-x-python|Name=MeshToPart|Name/cs=MeshToPart|Description=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.|Author=Wmayer|Version=1.0|Date=2011-08-01}}
{{Macro/cs|Icon=Text-x-python|Name=MeshToPart|Name/cs=MeshToPart|Description=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.|Author=Wmayer|Version=1.0|Date=2011-08-01}}


==Popis==
==Popis==


<div class="mw-translate-fuzzy">
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 errors or weird results
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.
</div>




Line 43: Line 46:
}}
}}
{{clear}}
{{clear}}

==Link==
==Link==


The discussion on the forum [http://forum.freecadweb.org/viewtopic.php?f=3&t=253&hilit=getPlanarSegments Convert mesh to solid?]
The discussion on the forum [http://forum.freecadweb.org/viewtopic.php?f=3&t=253&hilit=getPlanarSegments Convert mesh to solid?]

<languages/>

Revision as of 22:16, 5 August 2018

File:Text-x-python MeshToPart

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
Autor: Wmayer
Autor
Wmayer
Download
None
Odkazy
Verze
1.0
Datum poslední úpravy
2011-08-01
Verze FreeCAD
None
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.


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?