FreeCAD Logo FreeCAD 1.0
  • English Afrikaans Arabo Bielorusso Catalano Czech German Greek Spanish Spanish Basco Finnish Filippino Français Galiziano Croatian Hungarian Indonesiano Italiano Japanese Kabyle Coreano Lituano Dutch Norvegese Bokmal Polish Portuguese Portuguese Romanian Russian Slovak Slovenian Serbo Swedish Turkish Ukrainian Valenziano Vietnamita Cinese Cinese
  • Funzioni
  • Download
  • Blog
  • Documentazione
    Indice di documentazione Per iniziare Documentazione utenti Il manuale FreeCAD Documentazione degli ambienti di lavoro Documentazione di scripting Python Documentazione codice C++ Tutorial Domande frequenti Politica sulla Privacy Informazioni Su FreeCAD
  • Contribuire
    Come aiutare Sponsor Segnala un bug Fai una richiesta Opportunità di lavoro e ricompense Linee guida per contribuire Manuale degli sviluppatori Traduzioni
  • Comunità
    Codice di condotta Forum The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Calendario
  • ♥ Donate

Donate

$
Informazioni SEPA
Si prega di intestare il bonifico SEPA a:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Agenzia bancaria: BNP Paribas Fortis
Indirizzo: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Creare oggetti parametrici
La Comunità
Pagina iniziale del manuale
  • Introduzione
  • Scoprire FreeCAD
    • Che cosa è FreeCAD?
    • Installazione
      • Installazione in Windows
      • Installazione in Linux
      • Installazione in Mac OS
      • Disinstallazione
      • Impostare le preferenze di base
      • Installare dei contenuti aggiuntivi
    • Interfaccia di FreeCAD
      • Gli ambienti di lavoro
      • L'interfaccia
      • Personalizzare l'interfaccia
    • Navigare nella vista 3D
      • Alcune parole sullo spazio 3D
      • La vista 3D di FreeCAD
      • Selezionare gli oggetti
    • I documenti di FreeCAD
    • Gli oggetti parametrici
    • Importare ed esportare altri tipi di file
  • Lavorare con FreeCAD
    • Panoramica sugli ambienti di lavoro
    • Modellazione tradizionale,
      il metodo CSG
    • Disegno 2D tradizionale
    • Modellazione per la progettazione
      del prodotto
    • Preparare i modelli per la stampa 3D
      • Esportare nello slicer
      • Convertire gli oggetti in mesh
      • Utilizzare Slic3r
      • Utilizzare l'addon Cura
      • Generare il G-code
    • Generare disegni 2D
    • Modellazione BIM
    • Usare i fogli di calcolo
      • Leggere le proprietà
      • Scrivere le proprietà
    • Creare analisi FEM
    • Creare rendering
  • Script Python
    • Una breve introduzione
      • Scrivere del codice Python
      • Manipolare gli oggetti di FreeCAD
      • Vettori e Posizionamento
    • Creare e manipolare la geometria
    • Creare oggetti parametrici
    • Creare interfacce di strumenti
  • La Comunità

Negli ultimi due capitoli, abbiamo visto come creare della geometria Parte e creare oggetti parametrici. Manca un ultimo pezzo per avere il pieno controllo su FreeCAD: creare strumenti che interagiscono con l'utente.

In molte situazioni, non è molto amichevole costruire un oggetto con valori zero, come abbiamo fatto con il rettangolo nel capitolo precedente, e poi chiedere all'utente di compilare i valori di altezza e larghezza nel pannello delle Proprietà. Questo va bene per un numero molto limitato di oggetti ma diventa veramente noioso se si devono fare parecchi rettangoli. Sarebbe meglio poter assegnare l'altezza e la larghezza già durante la creazione del rettangolo.

Python offre uno strumento di base che consente all'utente di inserire il testo sullo schermo:

text = raw_input("Height of the rectangle?")
print("The entered height is ",text)

Però, questo richiede una console Python in esecuzione, e quando si esegue il codice da una macro, non siamo sempre sicuri che la console Python sia attiva sulla macchina dell'utente.

L'Interfaccia Grafica Utente (GUI), che comprende i menu, le barre degli strumenti, la vista 3D e altri componenti visivi di FreeCAD, è progettata per rendere il software intuitivo e accessibile. Funge da ponte tra l'utente e le funzionalità di base di FreeCAD, consentendo sia agli utenti occasionali che agli esperti di interagire efficacemente con il programma.

L'interfaccia utente grafica di FreeCAD è realizzata utilizzando Qt, un potente toolkit GUI open source che offre un'ampia gamma di funzionalità. Qt offre elementi essenziali per la progettazione dell'interfaccia, come finestre di dialogo, pulsanti, etichette, campi di inserimento testo e menu a discesa, collettivamente noti come "widget". Questi widget costituiscono la base dell'esperienza utente di FreeCAD.

Uno dei principali vantaggi di Qt è la sua compatibilità multipiattaforma, che consente a FreeCAD di funzionare senza problemi su diversi sistemi operativi come Windows, macOS e Linux. Inoltre, la flessibilità di Qt semplifica l'estensione o la personalizzazione dell'interfaccia di FreeCAD da parte degli sviluppatori, sia creando nuove barre degli strumenti e menu, sia sviluppando moduli completamente nuovi che si integrano nel software. Questa adattabilità garantisce che FreeCAD rimanga allo stesso tempo intuitivo e altamente estensibile.

Per gli utenti interessati allo scripting o allo sviluppo di nuovi strumenti, l'API Python di FreeCAD offre anche l'accesso a numerose funzionalità di Qt. Questo significa che è possibile non solo automatizzare le attività, ma anche creare widget o finestre di dialogo personalizzati che si integrano direttamente nell'ambiente FreeCAD.

Gli strumenti Qt sono molto facili da usare da Python, grazie a un modulo Python chiamato PySide. PySide è il binding Python ufficiale per la libreria Qt, che offre un modo semplice per creare e interagire con i widget a livello di codice. Permette agli sviluppatori di progettare interfacce, gestire gli input utente (come la lettura di testo da caselle di input) e definire azioni basate sulle interazioni dell'utente, come la risposta alla pressione di un pulsante. Utilizzando PySide, è possibile creare finestre di dialogo, menu e barre degli strumenti personalizzati direttamente all'interno di FreeCAD, estendendone le funzionalità in modo da integrarsi perfettamente con l'interfaccia esistente.

PySide semplifica il collegamento delle azioni dell'utente a funzioni specifiche nel codice. Ad esempio, è possibile configurare un pulsante in modo che, quando premuto, attivi uno script per eseguire un comando o modificare un oggetto nella vista 3D. Questa funzionalità interattiva apre infinite possibilità per la personalizzazione dei flussi di lavoro e l'automazione di attività ripetitive.

Qt fornisce anche un altro strumento interessante chiamato Qt Designer, che attualmente è incorporato all'interno di un'applicazione più grande chiamata Qt Creator. Esso rende possibile progettare finestre di dialogo e pannelli dell'interfaccia grafica, invece di doverli codificare manualmente. In questo capitolo, useremo Qt Creator per la progettazione di un pannello widget che useremo nel pannello Azioni di FreeCAD. Quindi è necessario scaricare e installare Qt Creator dalla sua official page se siete su Windows o Mac (su Linux di solito è disponibile tramite il gestore del software).

Nel prossimo esercizio, inizieremo usando Qt Creator per creare un pannello che richieda i valori di lunghezza, larghezza e altezza, poi creeremo su di esso una classe Python che legga nel pannello i valori inseriti dall'utente, e crei un box con le dimensioni indicate. Questa classe Python sarà poi utilizzata da FreeCAD per visualizzare e controllare il pannello delle azioni:

Cominciamo creando il widget. Avviare Qt Creator, quindi nel menu File → New File or Project → Qt → Qt Designer Form scegliere Dialog without buttons. Cliccare Next, dare un nome per salvare il file, fare clic su Next, lasciare tutti i campi del progetto al loro valore di default ("<none>"), e poi clic su Create. Il sistema Azioni di FreeCAD aggiungerà automaticamente i pulsanti OK e Annulla, è per questo che abbiamo scelto un dialogo senza pulsanti.

  • Trovare l'etichetta Label nell'elenco nel pannello di sinistra (nella sezione Widget visualizzati) e trascinala nell'area di disegno del nostro widget. Fare doppio clic sull'etichetta appena posizionata e modificare il suo testo in Lunghezza.
  • Fare clic destro sull'area disegno del widget, e selezionare Lay out → Lay out in a Grid. Questo trasforma il widget in una griglia con attualmente una sola cella, occupata dalla prima etichetta. Ora possiamo aggiungere le voci successive a sinistra, a destra, in alto o in basso rispetto alla prima etichetta, e la griglia si espande automaticamente.
  • Aggiungere altre due etichette sotto la prima, e cambiare il loro testo in Width e Height:

  • Ora inserire 3 widget Double Spin Box (nella sezione Widget di input) vicino alle etichette Length, Width e Height. Per ciascuno di essi, nel pannello inferiore di destra, che mostra tutte le impostazioni disponibili per il widget selezionato, individuare Suffix e impostare come loro suffisso mm. FreeCAD ha un widget più avanzato, in grado di gestire diverse unità, ma che non è disponibile di default in Qt Creator (ma che può essere compilato), quindi per ora usiamo un Doppio Spin Box standard, e aggiungiamo il suffisso "mm" per essere sicuri che l'utente sappia con quale unità sta lavorando:

  • Ora il nostro widget è creato, manca solo un'ultima cosa. Dato che FreeCAD avrà bisogno di accedere a tale widget e leggere la lunghezza, la larghezza e l'altezza, bisogna dare dei nomi appropriati a questi widget, in modo che all'interno di FreeCAD possano essere recuperati facilmente. Fare clic su ciascuna delle caselle Double Spin, e nella finestra in alto a destra, fare doppio clic sul nome dell'oggetto, e cambiarlo a qualcosa di facile da ricordare, ad esempio,: BoxLength, BoxWidth e BoxHeight:

  • Salvare il file, e chiudere Qt Creator, il resto sarà fatto in Python.
  • Aprire FreeCAD e creare una nuova macro dal menù Macro → Macro → Crea
  • Incollare il codice seguente. Assicurarsi di modificare il percorso del file in modo che corrisponda a quello con cui è stato salvato il file .ui creato in Qt Creator:
import FreeCAD,FreeCADGui,Part
 
# CHANGE THE LINE BELOW
path_to_ui = "C:\Users\yorik\Documents\dialog.ui"
 
class BoxTaskPanel:
   def __init__(self):
       # this will create a Qt widget from our ui file
       self.form = FreeCADGui.PySideUic.loadUi(path_to_ui)
 
   def accept(self):
       length = self.form.BoxLength.value()
       width = self.form.BoxWidth.value()
       height = self.form.BoxHeight.value()
       if (length == 0) or (width == 0) or (height == 0):
           print("Error! None of the values can be 0!")
           # we bail out without doing anything
           return
       box = Part.makeBox(length,width,height)
       Part.show(box)
       FreeCADGui.Control.closeDialog()
        
panel = BoxTaskPanel()
FreeCADGui.Control.showDialog(panel)

Nel codice precedente, abbiamo utilizzato una funzione di convenienza PySideUic.loadUi del modulo FreeCADGui. Questa funzione carica un .ui file, crea da esso un Qt Widget, e mappa i nomi, e in questo modo consente di accedere facilmente al SubWidget tramite i loro nomi (ex: self.form.BoxLength).

Anche la funzione "accept" è una convenienza offerta da Qt. Quando in un dialogo vi è un pulsante "OK" (che è il caso di default quando si utilizza il pannello Azioni di FreeCAD), qualsiasi funzione di nome "accept" viene automaticamente eseguita quando si preme il pulsante "OK". Analogamente, è possibile anche aggiungere una funzione "reject" che viene eseguita quando si preme il pulsante "Annulla". Nel nostro caso, abbiamo omesso tale funzione, quindi premendo "Annulla" si esegue il comportamento di default (non fare nulla e chiudere la finestra di dialogo).

Se implementiamo una delle funzioni accept o reject, il loro comportamento di default (non fare nulla e chiudere) non si verifica più. Quindi dobbiamo chiudere noi il pannello Azioni. Ciò viene fatto con:

FreeCADGui.Control.closeDialog()

Una volta che abbiamo il nostro BoxTaskPanel che ha 1- un widget chiamato "self.form" e 2- se necessario, accetta e rifiuta le funzioni, con esso possiamo aprire il pannello delle attività, tramite queste due ultime righe:

panel = BoxTaskPanel()
 FreeCADGui.Control.showDialog(panel)

Notare che il widget creato da PySideUic.loadUi non è specifico per FreeCAD, ma è un widget standard di Qt che può essere utilizzato con gli altri strumenti di Qt. Ad esempio, con esso possiamo mostrare una finestra di dialogo separata. Proviamo questo nella console Python di FreeCAD (ovviamente utilizzando il percorso corretto per il file .ui):

from PySide import QtGui
 w = FreeCADGui.PySideUic.loadUi("C:\Users\yorik\Documents\dialog.ui")
 w.show()

Naturalmente, al nostro dialogo non abbiamo aggiunto un pulsante "OK" o "Cancel", dato che è stato fatto per essere usato dal pannello Azioni di FreeCAD che fornisce già tali pulsanti. Quindi non c'è nessun modo per chiudere la finestra di dialogo (oltre che premere il suo pulsante Chiudi finestra). Ma la funzione show() crea una finestra di dialogo non modale, il che significa che non blocca il resto dell'interfaccia. Così si possono leggere i valori dei campi mentre il dialogo è ancora aperto:

w.BoxHeight.value()

Ciò è molto utile per i test.

Infine, non dimenticate che c'è molta altra documentazione sull'utilizzo dei wiget di Qt, nella sezione Script Python, che contiene un tutorial per creare dialoghi, e uno speciale tutorial per PySide in tre parti che copre ampiamente l'argomento.

Link importanti

  • Documentazione di Qt Creator
  • Installare Qt Creator
  • Documentazione sugli script Python in FreeCAD
  • Tutorial per creare dialoghi in FreeCAD
  • Tutorial su PySide in FreeCAD
  • Documentazione di PySide


Creare oggetti parametrici
La Comunità
Pagina iniziale del manuale

Questa pagina è recuperata da https://wiki.freecad.org/Manual:Creating_interface_tools

Tieniti aggiornato!
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

© The FreeCAD Team. Homepage image credits (top to bottom): ppemawm, r-frank, epileftric, regis, rider_mortagnais, bejant.

Questo progetto è supportato da: , KiCad Services Corp. e altri sponsor

GitHubMigliora questa pagina su GitHub