Macro Sketch Constraint From Spreadsheet/it

Macro Sketch Constraint From Spreadsheet

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
Versione macro
02.04
Data ultima modifica
08/05/2026
Versioni di FreeCAD
All
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

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")

Utilizzo

Creazione automatica di oggetti

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.

Creazione automatica di alias

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à:

Modalità automatica

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:

Alias automatic creation

Alias automatic creation Alias automatic creation

Modalità manuale

Per utilizzare la modalità manuale, non selezionare l'opzione "Automatic alias".

Alias creation

Alias creation

Creazione dei vincoli

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.

Si possono usare le formule

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_': ')',
}

Raggio → diametro

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.

Link

Ringraziamenti

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.

Script

Icona barra degli strumenti

Codice

ver 02.04 2026/05/08 by 2cv001 Macro_Sketch_Constraint_From_Spreadsheet.FCMacro

Download