Macro Solid Sweep/it

=Macro Solid Sweep=

Questa macro crea un solido estrudendo un profilo 2D lungo una traiettoria precedentemente selezionata nella vista 3D.

Gli elementi 2D possono essere creati attraverso i normali strumenti della GUI di FreeCAD.

Notare che il solido risultante non è parametrico. Se si decide di modificare il profilo o il percorso, si deve nuovamente eseguire la macro.

Nella seguente figura tutte le estrusioni sono realizzate utilizzando la stessa sagoma, ma tre percorsi diversi.



Come si usa

 * Creare due elementi 2D del tipo indicato sotto, uno per la sezione e uno per la traiettoria.
 * Selezionare, nella struttura del progetto o nella vista 3D, prima la traiettoria e poi il profilo. L'ordine è importante!
 * Aprire Gestione Macro, selezionare la macro e fare clic su "Esegui".
 * Nella struttura del progetto viene creato un oggetto Sweep.

Elementi 2D supportati

 * Contorni polilinee
 * [[Image:Sketcher_NewSketch.png|32px]] Schizzi
 * [[Image:Draft_BSpline.png]] BSpline
 * Primitive 2D del menu Parametriche → [[Image:Part_CreatePrimitives.png|32px]] Crea Primitive... (circonferenza, elica)

Avvertenze

 * La sezione deve essere un profilo chiuso o il risultato non sarà un solido.
 * Non è necessario che la sezione sia posizionata sulla traiettoria, ma è preferibile che sia normale (perpendicolare) alla traiettoria.
 * La traiettoria può essere sia un profilo aperto che chiuso (cerchi, o segmenti e archi), ma tutti gli elementi devono essere tangenti o la forma risultante è inaspettata. Ad esempio, una traiettoria con angoli retti (come un rettangolo) non produce un solido.
 * Se il solido diventa contorto, modificare la macro e impostare il valore isFrenet a 0 (zero) e riprovare.
 * Impostando nella macro la variabile makeSolid a 0 (zero) si produce un insieme di superfici con le estremità aperte.

La macro
import Part, FreeCAD, math, PartGui, FreeCADGui from FreeCAD import Base

s = FreeCADGui.Selection.getSelection try: shape1=s[0].Shape shape2=s[1].Shape except: print "Scelta sbagliata"
 * 1) pick selected objects, where 1st selection is the trajectory and the 2nd is the section to sweep

traj = Part.Wire([shape1]) section = Part.Wire([shape2])

myObject=App.ActiveDocument.addObject("Part::Feature","Sweep")
 * 1) create a Part object into the active document

makeSolid = 1 isFrenet = 1

Sweep = Part.Wire(traj).makePipeShell([section],makeSolid,isFrenet) myObject.Shape = Sweep
 * 1) Create the 3D shape and set it to the Part object

Crediti
Grazie a Wmayer per il suo aiuto nella stesura di questo script.

In questa sezione del forum si trovano due esempi di utlizzo e si trovano anche i collegamenti per scaricare i file FCStd.

Lo stesso argomento viene trattato anche in questa discussione con ragguagli su Frenet.

Utilizzando una elica come traiettoria, tramite uno sweep solido si può creare la filettatura di un bullone.