68x
004331
23.01.2023

KB 001790 | Utilisation de l'API du service web avec EXCEL et Python

Thème :
Utilisation de l'API du service web avec EXCEL et Python

Remarque :
Les tableurs comme EXCEL sont très appréciés des ingénieurs car ils permettent d'automatiser facilement les calculs et d'obtenir des résultats rapidement. La connexion entre EXCEL en tant qu'interface graphique et l'API du service web de Dlubal est donc évidente. La bibliothèque gratuite xlwings pour Python permet de contrôler EXCEL, de lire et d'écrire des valeurs. Cette fonctionnalité est expliquée ci-dessous à l'aide d'un exemple.

Description :

Préparations

Les éléments suivants sont requis pour cet exemple et la programmation :

  • RFEM6
  • EXCEL
  • Python
  • Dlubal RFEM_Python_Client
  • Bibliothèque Python xlwings
  • Un éditeur pour écrire le programme

Si RFEM 6, EXCEL et Python sont déjà installés, vous devez d'abord installer les bibliothèques RFEM_Python_Client. Nous mettons à votre disposition différentes vidéos d'apprentissage et pages d'aide à cet effet. Les liens suivants sont particulièrement importants pour l'installation. Ils vous expliquent l'installation et les premières étapes de la programmation :

Les éditeurs de programmes sont également abordés dans ces vidéos. Pour cet exemple, l'éditeur utilisé n'a pas d'importance. Ensuite, xlwings doit être installé. Vous trouverez des informations à ce sujet sur le site Web de la bibliothèque :

Le code complet, par exemple, se trouve dans RFEM_Python_Client à l'emplacement suivant :

  • RFEM_Python_Client/tree/main/Examples/SteelDesign/

Le fichier SteelDesignExcel.py est le programme Python (script) et SteelDesignExcel.xlsm est le fichier EXCEL associé.

Exemple de programmation

La bibliothèque xlwings offre plusieurs options pour combiner Python et EXCEL. D'une part, il est possible de contrôler EXCEL à partir d'un programme Python (plus connu sous le nom de script Python) et également de démarrer un script Python à partir d'EXCEL. Lorsque vous démarrez à partir d'EXCEL, vous pouvez soit utiliser le plug-in intégré, soit créer une sous-routine qui démarre le script Python. Les détails peuvent être consultés ici :

Dans cet exemple, le script Python est lancé via le plugin intégré (voir la figure). Cette utilisation est soumise à deux exigences. Le script Python doit avoir le même nom que le fichier EXCEL et doit contenir une fonction principale, car celle-ci est ensuite exécutée via le plugin.
Voici la première partie de la fonction principale :


            

...
#Ouvrir la feuille Excel
wb = xw.Book.caller()

#Lire les entrées
inputSheet = wb.sheets('Inputs')

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

#Entrées géométriques
frame_number = int (inputSheet ["G6"]. value) #nombre d'images
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
...


Si xlwings est utilisé directement à partir d'un script Python (et non via EXCEL), un fichier doit d'abord être ouvert :


            

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


Si vous utilisez EXCEL, la connexion est établie à l'aide de la commande suivante :


            

wb = xw.Book.caller()


La variable wb contient le classeur (workbook) complet, à partir duquel les feuilles de calcul individuelles peuvent être extraites à l'aide de la méthode sheets(). Dans cet exemple, la feuille de calcul « Inputs » est ouverte et les cellules individuelles sont accessibles à l'aide des crochets. La valeur d'une cellule peut être lue ou modifiée à l'aide de la propriété « value ». Cette implémentation se trouve à la fin de l'exemple :


            

...
#Écriture des résultats dans les feuilles de sortie
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
...


Dans ce cas précis, la combinaison de charges 7 est lue. La Figure 2 montre les déformations des barres dans EXCEL et, à titre de comparaison, les résultats de RFEM 6 dans la Figure 3.

Résumé

Dans l'exemple...