145x
004331
2023-01-23

KB 001790 | Utilizzo dell'API WebService in combinazione con EXCEL e Python

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:

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:

  1. code.de#

...

  1. Apri il foglio excel

wb = xw.Book.caller()

  1. Leggi input

inputSheet = wb.sheets('Inputs')

frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2

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

  1. /#

Se xlwings viene utilizzato direttamente da uno script Python (non tramite EXCEL), è necessario aprire prima un file:

  1. code.de#

wb = xw.Book('userSheet.xlsm')

  1. /#

Se xlwings viene utilizzato da EXCEL, la connessione viene stabilita utilizzando il comando seguente:

  1. code.de#

wb = xw.Book.caller()

  1. /#

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:

  1. code.de#

...

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

  1. /#

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



;