Macro MeshToPart/it: Difference between revisions

From FreeCAD Documentation
(Created page with '=Macro MeshToPart - Da Mesh a Parte= {{Macro/it|Name=MeshToPart|Description=Questa macro converte gli oggetti Mesh selezionati in Parti. Ha una tolleranza ampia, quindi è da ut…')
 
m (template fr)
Line 37: Line 37:
FreeCAD.ActiveDocument.addObject("Part::Feature",name).Shape = solid
FreeCAD.ActiveDocument.addObject("Part::Feature",name).Shape = solid


{{languages/it | {{en|Macro_MeshToPart}} {{es|Macro_MeshToPart/es}} }}
{{languages/it | {{en|Macro_MeshToPart}} {{es|Macro_MeshToPart/es}} {{fr|Macro_MeshToPart/fr}} }}

Revision as of 19:06, 25 July 2012

Macro MeshToPart - Da Mesh a Parte

Icona macro generica. Crea la tua icona personale con lo stesso nome della macro 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

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
Altre lingue: