4966x
001790
2023-01-23

Utilizzo dell'API WebService in combinazione con EXCEL e Python

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.

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:

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:

  1. code.python#

  1. Aprire il file 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. 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

  1. /codice#

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

  1. code.python#

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

  1. /codice#

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

  1. code.python#

wb = xw.Book.caller()

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

  1. code.python#

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

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


Autore

Il signor Günthel fornisce supporto tecnico per i clienti di Dlubal Software e si prende cura delle loro richieste.

Link


;