Soggetto:
Utilizzo dell'API WebService in combinazione con EXCEL e Python
Note:
I programmi con fogli di calcolo, come EXCEL, sono apprezzati dagli ingegneri, perché consentono di automatizzare in modo semplice i calcoli e produrre rapidamente i risultati. Pertanto, la combinazione di MS EXCEL utilizzato come interfaccia grafica con l'API WebService di Dlubal è una scelta ovvia. Utilizzando la libreria gratuita xlwings per Python, puoi controllare EXCEL e leggere e scrivere valori. La funzionalità è descritta di seguito, utilizzando un esempio.
Descrizione:
Preparativi
Per l'esempio e per la programmazione è necessario quanto segue:
- RFEM 6
- EXCEL
- Pitone
- Dlubal RFEM_Python_Client
- Libreria Python xlwings
- Un editor per scrivere il programma
Supponendo che RFEM 6, EXCEL e Python siano già installati, è necessario prima installare le librerie RFEM_Python_Client. Offriamo diversi video didattici e pagine di aiuto che descrivono l'installazione. I seguenti link sono particolarmente importanti per l'installazione. Ti mostrano l'installazione e le prime fasi della programmazione:
- https://dlubal-software.github.io/.github/guide/
- https://www.dlubal.com/it/support-und-schulungen/schulungen/videos/003477
- https://www.dlubal.com/it/support-und-schulungen/schulungen/videos/003478
- https://www.dlubal.com/it/support-und-schulungen/schulungen/videos/003479
In questi video si parla anche di editor di programmi. Per il presente esempio, l'editor utilizzato è irrilevante. È quindi necessario installare xlwings, le cui informazioni sono disponibili sul sito web della libreria:
Il codice completo, ad esempio, si trova in RFEM_Python_Client nel percorso seguente:
- RFEM_Python_Client/tree/main/Examples/SteelDesign/
Il file SteelDesignExcel.py è il programma Python (script) e il file SteelDesignExcel.xlsm è il file EXCEL associato.
Esempio di programmazione
La libreria xlwings offre diverse opzioni per combinare Python ed EXCEL. Da un lato, è possibile controllare EXCEL da un programma Python (meglio noto come script Python) e anche avviare uno script Python da EXCEL. Quando si inizia con EXCEL, è possibile utilizzare il plug-in integrato o creare una subroutine che avvia lo script Python. I dettagli sono mostrati qui:
Nel nostro esempio, lo script Python viene avviato tramite il plug-in integrato (vedi immagine). Ci sono due requisiti. Lo script Python deve avere lo stesso nome del file EXCEL e deve includere una funzione principale perché questa funzione viene poi eseguita tramite il plug-in.
Ecco la prima parte della funzione principale:
- code.de#
...
- Apri il foglio excel
wb = xw.Book.caller()
- Leggi input
inputSheet = wb.sheets('Inputs')
frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2
- Ingressi geometrici
frame_number = int (inputSheet ["G6"]. valore) #numero di frame
width = inputSheet["G7"].value # Width of Frame
frame_length = inputSheet["G8"].value # Frame Length
console_height = inputSheet["G9"].value # Height of Console
column_height = inputSheet["G10"].value # Height of Column
gable_height = inputSheet["G11"].value # Height of Gable
...
- /#
Se xlwings viene utilizzato direttamente da uno script Python (non tramite EXCEL), è necessario aprire prima un file:
- code.de#
wb = xw.Book('userSheet.xlsm')
- /#
Se xlwings viene utilizzato da EXCEL, la connessione viene stabilita utilizzando il comando seguente:
- code.de#
wb = xw.Book.caller()
- /#
La variabile wb include la cartella di lavoro completa, dalla quale è possibile estrarre singoli fogli di lavoro utilizzando il metodo sheet(). Nell'esempio, viene aperto il foglio di lavoro "Input" e si accede alle singole celle mediante parentesi quadre. Il valore di una cella può essere letto o modificato tramite la proprietà 'value'. Questa implementazione si trova alla fine dell'esempio:
- code.de#
...
- Scrittura dei risultati sui fogli di output
nodaldeformation["A2"].value = node_number
nodaldeformation["B2"].value = nodeSupportType
nodaldeformation["C2"].value = nodeDisp_abs
nodaldeformation["D2"].value = nodeDisp_x
nodaldeformation["E2"].value = nodeDisp_y
nodaldeformation["F2"].value = nodeDisp_z
nodaldeformation["G2"].value = nodeRotation_x
nodaldeformation["H2"].value = nodeRotation_y
nodaldeformation["I2"].value = nodeRotation_z
...
- /#
Nel presente caso, viene letta la combinazione di carico 7. L'immagine 2 mostra le deformazioni delle aste in EXCEL e, per confronto, i risultati di RFEM 6 nell'immagine 3.
Riepilogo
Nell'esempio...