| Descrizione |
|---|
| Una macro che, con un semplice clic su una cella del foglio di calcolo, consente di collegare i valori del foglio alle proprietà di un oggetto o di aggiungere un vincolo di lunghezza a un elemento dello schizzo (ad esempio a una linea o tra un punto e un cerchio), utilizzando l'alias o l'indirizzo della cella (es. C2). Eventuali modifiche successive al foglio di calcolo aggiorneranno il vincolo o le proprietà dell'oggetto. La macro è in grado di creare automaticamente gli alias. È sufficiente selezionare una linea, due punti o un vincolo, fare clic su una cella del foglio di calcolo ed eseguire la macro. È possibile selezionare linee, punti alle estremità di una linea, punti, cerchi o archi di cerchio. Versione macro: 02.04 Ultima modifica: 08/05/2026 Versione FreeCAD: All Download: ToolBar icon Autore: 2cv001 |
| Autore |
| 2cv001 |
| Download |
| ToolBar icon |
| Link |
| Raccolta di macro Come installare le macro Personalizzare la toolbar |
| Versione macro |
| 02.04 |
| Data ultima modifica |
| 08/05/2026 |
| Versioni di FreeCAD |
| All |
| Scorciatoia |
| Nessuna |
| Vedere anche |
| Nessuno |
Una macro che, con un semplice clic su una cella del foglio di calcolo, consente di collegare i valori del foglio stesso alle proprietà di un oggetto, oppure di aggiungere un vincolo di lunghezza a un elemento dello schizzo (ad esempio a una linea o tra un punto e un cerchio) utilizzando l'alias o l'indirizzo della cella (es. C2). Eventuali modifiche successive al foglio di calcolo aggiorneranno il vincolo o le proprietà dell'oggetto. La macro è in grado di creare automaticamente gli alias necessari.
È sufficiente selezionare, ad esempio, una linea, due punti o un vincolo, fare clic su una cella del foglio di calcolo ed eseguire la macro. È possibile selezionare linee, punti alle estremità di una linea, punti, cerchi o archi di cerchio.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro
# This code is copied instead of the original macro code
# to guide the user to the online download page.
# Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki
# or if the RAW code URL is somewhere else in the wiki.
from PySide import QtGui, QtCore
diag = QtGui.QMessageBox(QtGui.QMessageBox.Information,
"Information",
"This macro must be downloaded from this link\n"
"\n"
"https://raw.githubusercontent.com/2cv001/FreeCAD-macros/master/Spreadsheet/Sketch_Constraint_From_Spreadsheet.FCMacro" + "\n"
"\n"
"Quit this window to access the download page")
diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
diag.setWindowModality(QtCore.Qt.ApplicationModal)
diag.exec_()
import webbrowser
webbrowser.open("https://raw.githubusercontent.com/2cv001/FreeCAD-macros/master/Spreadsheet/Sketch_Constraint_From_Spreadsheet.FCMacro")
Se si esegue la macro e non si ha ancora creato un foglio di calcolo, un corpo o uno schizzo, la macro suggerisce di crearne uno e poi apre lo schizzo in modalità di modifica e il foglio di calcolo in modo che si possa iniziare a compilarlo.
Non è obbligatorio, ma è consigliabile utilizzare gli alias nel foglio di calcolo. La macro può creare alias a partire dal testo presente nelle celle.
Due modalità:
Nella modalità automatica gli alias vengono creati automaticamente utilizzando un'area di testo definita da una cella. L'area include la cella stessa e quelle sottostanti. Questi testi corrispondono al nome dell'alias. L'alias viene creato a destra del relativo testo. La cella designata (in questo caso A3) è modificabile nelle seguenti finestre di dialogo:
Per utilizzare la modalità manuale, non selezionare l'opzione "Automatic alias".
1) Selezionare:
2) Fare clic su una cella del foglio di calcolo, con o senza alias, che contenga un valore numerico:
3) Eseguire la macro.
4) Selezionare il tipo di vincolo desiderato:
Se la cella ha un alias, la proprietà lunghezza del vincolo sarà qualcosa del tipo 'Spreadsheet.alias'. Altrimenti, qualcosa del tipo 'Spreadsheet.D4'.
5) Se il vincolo causa un conflitto nello schizzo e la casella "rilevamento conflitti" è selezionata, la macro proporrà di eliminare il nuovo vincolo:
Selezionando un vincolo esistente, è possibile modificarne il valore con un valore presente in un foglio di calcolo:
La macro può anche gestire geometrie esterne provenienti da un altro schizzo:
Per rendere il tutto ancora più preciso, se, ad esempio, una linea è orizzontale anziché verticale, all'apertura della finestra di dialogo il focus si sposterà sul pulsante per applicare un vincolo orizzontale. Se la linea è verticale anziché orizzontale, il focus si sposterà sul pulsante per applicare un vincolo verticale. In entrambi i casi, è sufficiente premere il tasto Invio se si è soddisfatti della scelta.
La macro funziona anche per le proprietà degli oggetti. Se, ad esempio, si fa clic sulla proprietà Lunghezza di un Pad e poi su una cella con il valore desiderato, la proprietà Lunghezza del Pad viene modificata automaticamente.
Principio: La macro trasforma l'alias prima di inserirlo nell'espressione del parametro o della dimensione. Sostituisce le parole chiave con operazioni per tutto ciò che segue la stringa di caratteri f (f per funzione).
Esempio di utilizzo:
Se l'alias è: radius_f__mul_2_plu_1
L'espressione sarà:
<<datas>>.radius_f__mul_2_plu_1 * 2 + 1
Quindi, se ad esempio c'è il valore 5 nella cella, il parametro o la dimensione assumerà il valore 5 * 2 + 1, che è uguale a 11.
Uno snippet di codice che mostra le possibili operazioni e formule da utilizzare:
formulaSeparator = '_f_'
dicoFormula = {
'_div_':'/',
'_mul_':'*',
'_plu_':'+',
'_mor_':'+',
'_les_':'-',
'_moi_':'-',
'_pg_':'(',
'_lp_':'(',
'_pd_': ')',
'_rp_': ')',
}
Una casella di controllo consente di dividere il valore per 2 direttamente nella formula. Questo è molto utile, ad esempio, quando si desidera inserire un diametro che verrà convertito in un raggio. Un caso tipico è una linea in uno schizzo utilizzata come profilo per una rivoluzione.

Grazie a openBrain, mario52 e onekk per il loro aiuto con il codice!
Grazie a Syres per i test, le revisioni e l'aiuto con il codice.
Grazie a Roy043 e David69 per le varie revisioni e i miglioramenti apportati alla wiki.
Grazie a L'ami René per i test e le idee.
ver 02.04 2026/05/08 by 2cv001 Macro_Sketch_Constraint_From_Spreadsheet.FCMacro