Scripts: Difference between revisions

From FreeCAD Documentation
(Scripting - sono qualcosa di più di una Macro, sono piccoli programmi in Python, intesi principalmente per creare oggetti, ad esempio per creare ogetti destinati alla stampa 3D.)
 
No edit summary
Line 104: Line 104:


e vedrete che si apre un nuovo file chiamato '''Pippo''' e si visualizza un cubo nella '''Vista 3D''',
e vedrete che si apre un nuovo file chiamato '''Pippo''' e si visualizza un cubo nella '''Vista 3D''',




'''Fine primo round'''
'''Fine primo round'''

Revision as of 20:10, 1 March 2020

Introduzione allo Scripting

Per Scripting intendiamo l'uso dell'interprete Python interno di FreeCAD per generare oggetti, FreeCAD può essere usato come "ottimo" sostituto di OpenSCAD, anche perché possiede un vero e proprio interprete Python, con il pieno supporto per tutti i costrutti di un linguaggio di programmazione, quasi tutto quello che si può realizzare con l'interfaccia grafica è possibile realizzarlo attraverso un programma Python.

Le informazioni sullo scripting sono però sparse nella documentazione di FreeCAD, non c'è una uniformità di "scritture" e alcune cose sono spiegate in maniera complicata per chi comincia.


Primo assaggio

Purtroppo non esiste un modo per attivare l'editor di Python interno, però c'è un trucco, FreeCAD apre un file con estensione .py nell'editor interno di Python, niente di più semplice che creare un file con il vostro editor di testo preferito, poi aprirlo con FreeCAD.

Il modo più semplice è quello di battere queste poche righe:

"""script.py

   Primo script per FreeCAD

"""

Salvarlo e caricarlo in FreeCAD.


Il minimo indispensabile per lavorare in modo proficuo con FreeCAD è scrivere queste righe, che potete tranquillamente usare come modello:

"""nome del file.py

   Descrizione di quello che fa lo script

"""


import FreeCAD
from FreeCAD import Base, Vector
import Part
from math import pi, sin, cos

DOC = FreeCAD.activeDocument()
DOC_NAME = "Pippo"

def clear_doc():
    """
    Clear the active document deleting all the objects
    """
    for obj in DOC.Objects:
        DOC.removeObject(obj.Name)

def setview():
    """Rearrange View"""
    FreeCAD.Gui.SendMsgToActiveView("ViewFit")
    FreeCAD.Gui.activeDocument().activeView().viewAxometric()


if DOC is None:
    FreeCAD.newDocument(DOC_NAME)
    FreeCAD.setActiveDocument(DOC_NAME)
    DOC = FreeCAD.activeDocument()

else:

    clear_doc()

# EPS= tolerance to uset to cut the parts
EPS = 0.10
EPS_C = EPS * -0.5



Alcuni trucchi sono incorporati in questo codice:


  • import FreeCAD Questo serve per importare FreeCAD all'interno dell'interprete Python, può sembrare superfluo, ma non lo è
  • from FreeCAD import Base, Vector Base e Vector sono molto usati, vi risparmiano molto test da battere se non fate dovete scrivere ad esempio FreeCAD.Vector ogni volta che usate un Vettore


Partiamo con un piccolo script che fa poco, ma illustra la potenza di questo approccio.


def cubo(nome, lung, larg, alt):
    obj_b = DOC.addObject("Part::Box", nome)
    obj_b.Length = lung
    obj_b.Width = larg
    obj_b.Height = alt

    DOC.recompute()

    return obj_b

obj = cubo("cubo_di_prova", 5, 5, 5)

setview()



Mettetelo dopo il primo codice e premete la freccia della Barra di strumenti Macro

e vedrete che si apre un nuovo file chiamato Pippo e si visualizza un cubo nella Vista 3D,


Fine primo round

Alla prossima!