Strumenti Utente



tutorial_freecad:tutorial_04

Questa è una vecchia versione del documento!


Tutorial FreeCAD #4

In questo quarto tutorial vedremo come creare oggetti tridimensionali da linea di comando, utilizzando python. Questo ci consentirà, con un po' di lavoro, di capire meglio come funziona FreeCAD ma soprattutto di aumentare la nostra produttività mediante la creazione di script personalizzati.

Se ci limitassimo alla sola interfaccia grafica, FreeCAD avrebbe ben poco da offrirci rispetto ad altri analoghi CAD. E' proprio la linea di comando che ne fa un programma già pronto per “il mondo reale”.

Nei precedenti tutorial abbiamo modellato alcuni solidi tridimensionali utilizzando la GUI.

Per chi si fosse perso uno dei tre tutorial riporto di seguito i loro link:

Cos'è python?!?

Python è un linguaggio di programmazione che si è olto diffuso negli ultimi anni sia per la sua semplicità che per la sua versatilità. In rete trovate molte risorse per imparare a programmare in puython. Vi consiglio il sito di riferimento www.python.org. Un altro sito utile per muovere i primi passi con python è www.learnpython.org/it/. Una sola accortezza: python è arrivato alla versione 3, ma FreeCAD per il momento supporta solo la versione 2, anche se le due versioni sono in realtà molto simili.

Sicuramente le risorse appena riportate su python sono utili, vedrete però che è possibile realizzare questo tutorial anche senza averle lette: python è veramente semplice ed intuitivo, oltre che molto potente!

Cominciamo a scrivere qualche riga di codice dopo aver lanciato FreeCAD. Prima di tutto dobbiamo verificare che sia visibile la console python. Se non lo è la attiviamo spuntando la voce di menu Visualizza → Viste → Console python.

Per visualizzare la console python usiamo la voce del menu Visualizza -> Viste -> Console python

Python è un linguaggio interpretato interattivo, questo vuol dire che abbiamo una linea di comando su cui possiamo digitare i comandi e vederne direttamente il risultato. Individuaimo il prompt della console python costituito dai tre simboli “»>”.

Cominciamo a prendere dimestichezza con python definendo alcune variabili

>>> b = 500.0
>>> h = 100.0

Per calcolarne la somma basta digitare

>>> print b + h

Analogamente possiamo calcolarne il prodotto che assegneremo ad una terza variabile

>>> A = b * h

e farne apparire il risultato con

>>> print A

print è un primo esempio di comando python.

Prima di procedere con la modellazione vera e propria dobbiamo introdurre un'altra importante funzionalità di python: i moduli. Un modulo python è una sorta di scatola degli attrezzi, all'interno della quale troviamo tutti gli strumenti specifici per un certo lavoro. FreeCAD ad esempio mette a nostra disposizione vari moduli, ognuno finalizzato ad una particolare attività.

Per attivare (in gergo si dice più correttamente importare) un modulo si usa il comando

>>> import <nome modulo>

Alcuni oggetti python presenti in FreeCAD

Per questo tutorial ci necessari due moduli di FreeCAD: FreeCAD e Part. Per attivare tali moduli dobbiamo digitare dalla console python di FreeCAD

>>> import Part, FreeCAD

Il modulo FreeCAD contiene il sottomodulo Base, anche questo necessario per il tutorial. Per importarlo digitiamo

>>> from FreeCAD import Base

Ora siamo pronti per la modellazione vera e propria!

Modellando solidi ci fa comodo definire variabili di modo da render il codice più leggibile e facilitare eventuali modifiche. Sulla base di quanto visto al paragrafo precedente potremmo definire le coordinate di un punto con tre variabili, ma sarebbe abbastanza scomodo. FreeCAD ci mette a disposizione la classe Vector definita nel modulo Base. Per definire un oggetto Vector scriviamo

>>> Vert = Base.Vector(0,0,0)

Possiamo rappresentare il segmento che unisce due vertici con un oggetto di tipo Line, contenuto nel modulo Part. Per definire un oggetto Line, dopo aver definito i relativi vertici, scriviamo

>>> V1 = Base.Vector(0,0,0)
>>> V2 = Base.Vector(3,4,6)
>>> L1 = Part.Line(V1,V2)

I tipi di oggetti definibili in Python sono molti ed in questa sede è prefrebile introdurne solo alcuni. In particolare citiamo alcuni degli oggetti nel modulo Part:

  • Shape: è un oggetto generico, che può essere impiegato per riferirsi a qualsiasi oggetto di questa lista
  • Compound: un insieme di più oggetti di tipo Shape
  • Edge: uno spigolo, di solito è limitato da oggetti di tipo Vertex
  • Wire: un insieme di oggetti Edge; possono essere aperti o chiusi
  • Face: in 2D è una porzione di piano; in 3D è una porzione di una superficie
  • Shell: un insieme di oggetti Face connessi tramite i rispettivi Edge; anche questi oggetti possono essere aperti o chiusi
  • Solid: una parte di spazio delimitata da oggetti di tipo Shell
  • Compsolid: un insieme di oggetti Solid connessi tramite le rispettve facce

Per approfondire questi aspetti vi consiglio di dare un'occhiata alla pagina dal wiki di FreeCAD sul Topological data scripting.

Modellazione da linea di comando

Dopo questa necessaria premessa partiamo con la modellazione (finalmente!).

Prima di tutto definiamo tre variabili in cui inseriremo le dimensioni significative del solido che intendiamo realizzare

>>> b = 500.0
>>> h = 100.0
>>> l = 400.0

Questo passaggio ci permetterà nel prossimo tutorial di creare agevolmente solidi con ingombri diversi.

Preoccupiamoci ora di disegnare la figura piana della figura

La figura piana da cui partiamo per la nostra modellazione

Definiamo i quattro vertici della figura. I punti saranno inseriti definendo oggetti Vertex

>>> Vert1 = Base.Vector(0,0,0)
>>> Vert2 = Base.Vector(b,0,0)
>>> Vert3 = Base.Vector(b,h,0)
>>> Vert4 = Base.Vector(0,h,0)

Disegniamo ora due linee usnado l'oggetto Line del modulo Part

>>> Line1 = Part.Line(Vert1,Vert2)
>>> Line2 = Part.Line(Vert3,Vert4)

Passiamo quindi ai due archi di cerchio. In generale, per definire un arco dobbiamo indicarne tre punti. Creiamo quindi un oggetto Arc1 che va da Vert2 a Vert3, passando per il punto intermedio VertC1

>>> VertC1 = Base.Vector(b+h/2,h/2,0)
>>> Arc1 = Part.Arc(Vert2,VertC1,Vert3)

Analogamente creiamo Arc2

>>> VertC2 = Base.Vector(-h/2,h/2,0)
>>> Arc2 = Part.Arc(Vert4,VertC2,Vert1)

Assembliamo il tutto creando un oggetto Shape

>>> Shape1 = Part.Shape([Line1,Arc1,Line2,Arc2])

Per estrudere l'oggetto appena creato è necessario convertirlo in un'oggetto Face. Lo facciamo con due passaggi

>>> Wire1 = Part.Wire(Shape1.Edges)
>>> Face1 = Part.Face(Wire1)

Infine creiamo il solido finale estrudendo la faccia creata; utilizziamo il comando

>>> Solid1 = Face1.extrude(Base.Vector(0,0,l))

A video non abbiamo visto ancora nulla di quanto fatto. Questo accade perché gli oggetti definiti nella console python non sono stati inseriti in FreeCAD. Per inserire Solid1 in FreeCAD ricorriamo alla funzione show() del modulo Part

>>> Part.show(Solid1)

Per vedere meglio il risultato del nostro lavoro digitiamo infine i comandi

>>> Gui.activeDocument().activeView().viewAxometric()
>>> Gui.SendMsgToActiveView("ViewFit")

Il primo imposta una vista assonometrica, il secondo modifica lo zoom per farci vedere tutto il solido creato. Se tutto è andato bene dovremmo avere la seguente vista

IL solido finale

Riepiloghiamo tutti i comando visti in successione

import Part, FreeCAD
from FreeCAD import Base

b = 500.0
h = 100.0
l = 400.0
Vert1 = Base.Vector(0,0,0)
Vert2 = Base.Vector(b,0,0)
Vert3 = Base.Vector(b,h,0)
Vert4 = Base.Vector(0,h,0)

Line1 = Part.Line(Vert1,Vert2)
VertC1 = Base.Vector(b+h/2,h/2,0)
Arc1 = Part.Arc(Vert2,VertC1,Vert3)
Line2 = Part.Line(Vert3,Vert4)
VertC2 = Base.Vector(-h/2,h/2,0)
Arc2 = Part.Arc(Vert4,VertC2,Vert1)

Shape1 = Part.Shape([Line1,Arc1,Line2,Arc2])

Wire1 = Part.Wire(Shape1.Edges)
Face1 = Part.Face(Wire1)

Solid1 = Face1.extrude(Base.Vector(0,0,l))
Part.show(Solid1)

Gui.activeDocument().activeView().viewAxometric()
Gui.SendMsgToActiveView("ViewFit")

Potete copiare le linee sopra riportate e incollarle direttamente sulla console python di FreeCAD per vedere in pochi istanti il risultato finale.

Per approfondire...


tutorial_freecad/tutorial_04.1415098250.txt.gz · Ultima modifica: 2014/11/04 11:50 da mickele

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email