Macro MeshToPart/it: Difference between revisions

From FreeCAD Documentation
(Created page with "{{Macro/it|Icon=Text-x-python|Name=MeshToPart|Name/it=MeshToPart|Description=Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da...")
(Created page with "Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono stra...")
Line 1: Line 1:
{{Macro/it|Icon=Text-x-python|Name=MeshToPart|Name/it=MeshToPart|Description=Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono strani risultati|Author=Wmayer}}
{{Macro/it|Icon=Text-x-python|Name=MeshToPart|Name/it=MeshToPart|Description=Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono strani risultati|Author=Wmayer}}


Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono strani risultati
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 weird results





Revision as of 20:46, 1 January 2014

File:Text-x-python MeshToPart

Descrizione
Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono strani risultati

Autore: Wmayer
Autore
Wmayer
Download
None
Link
Versione macro
1.0
Data ultima modifica
None
Versioni di FreeCAD
None
Scorciatoia
Nessuna
Vedere anche
Nessuno

Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da utilizzare solo con oggetti che non hanno curve altrimenti si ottengono strani risultati


 import FreeCAD,FreeCADGui,Mesh,Part,MeshPart
 
 for obj in FreeCADGui.Selection.getSelection():
 	if "Mesh" in obj.PropertiesList:
 		faces = []		
 		mesh = obj.Mesh
 		segments = mesh.getPlanes(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