Preparazione
Per l'esempio e per la programmazione è necessario quanto segue:
- RFEM 6
- EXCEL
- Python
- Dlubal RFEM_Python_Client
- libreria Python xlwings
- Un editor per scrivere il programma
Supponendo che RFEM 6, EXCEL e Python siano già installati, il passo successivo consiste nell'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. Mostrano l'installazione e i primi passi della programmazione:
- Prima di iniziare
- Programmazione con RFEM 6 e Python | 003 Installazione
- Programmazione con RFEM 6 e Python | 004 Librerie
- Programmazione con RFEM 6 e Python | 005 Esempio | sbalzo
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 seguente percorso:
- 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 per la 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.python#
…
- Aprire il file 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
- Input geometrici
frame_number = int(inputSheet["G6"].value) # number of frames
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
…
- /codice#
Se xlwings viene utilizzato direttamente da uno script Python (non tramite EXCEL), è necessario aprire prima un file:
- code.python#
wb = xw.Book('userSheet.xlsm')
- /codice#
Se xlwings viene utilizzato da EXCEL, la connessione viene stabilita utilizzando il comando seguente:
- code.python#
wb = xw.Book.caller()
- /codice#
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.python#
…
- Scrittura dei risultati nei 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
…
- /codice#
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.
Conclusione
L'esempio mostra che dopo aver impostato tutti gli elementi necessari, è piuttosto facile utilizzare l'API. EXCEL viene utilizzato principalmente come interfaccia utente grafica e non è richiesta la conoscenza di Visual Basic for Applications (VBA). È anche possibile che i calcoli vengano eseguiti in EXCEL (anche tramite VBA) e Python importi o esporti i dati solo tramite xlwings.