Macro MeshToPart/it: Difference between revisions

From FreeCAD Documentation
(mise à jour)
(heading)
Line 1: Line 1:
=Macro MeshToPart - Da Mesh a Parte=
==Convertire oggetto Mesh in Parte==


{{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}}

Revision as of 07:31, 15 September 2013

Convertire oggetto Mesh in Parte

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

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: