Macro Sketch Constraint From Spreadsheet/it

Macro Sketch Constraint From Spreadsheet

Descrizione
Macro che, con un semplice clic su una cella del foglio di calcolo, aggiunge un vincolo di lunghezza a una linea, un cerchio o tra due punti utilizzando un alias o un indirizzo di cella del foglio di calcolo (es. C2). Le modifiche future al foglio di calcolo aggiorneranno il vincolo. La macro può creare l'alias autonomamente.
Basta 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.03
Ultima modifica: 27/10/2025/
Versione FreeCAD: All
Download: ToolBar icon
Autore: 2cv001
Autore
2cv001
Download
ToolBar icon
Link
Versione macro
02.03
Data ultima modifica
27/10/2025/
Versioni di FreeCAD
All
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Macro che, con un semplice clic su una cella di un foglio di calcolo, aggiunge un vincolo di lunghezza a una linea o tra due punti utilizzando un alias o un indirizzo di cella (ad esempio C2). Le modifiche future al foglio di calcolo aggiorneranno il vincolo. La macro può creare l'alias autonomamente.

È 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.

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")
<class="rawcodeurl"><a href="https://raw.githubusercontent.com/2cv001/FreeCAD-macros/master/Spreadsheet/Sketch_Constraint_From_Spreadsheet.FCMacro">raw code</a>


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.03 2025/10/27 by 2cv001 Macro_Sketch_Constraint_From_Spreadsheet.FCMacro

Download