3700x
001790
2023-01-23

Uso de la API del servicio web junto con Excel y Python

Los programas de hojas de cálculo como MS Excel son populares entre los ingenieros y calculistas porque pueden automatizar fácilmente los cálculos y obtener resultados rápidamente. Por lo tanto, combinar MS Excel utilizado como interfaz gráfica con la API del servicio web de Dlubal es una opción obvia. Al usar la biblioteca gratuita xlwings para Python, puede controlar Excel y leer y escribir valores. La funcionalidad se describe a continuación, utilizando un ejemplo.

Preparación

Para el ejemplo y para la programación se requiere lo siguiente:

  • RFEM 6
  • Excel
  • Python
  • Dlubal RFEM_Python_Client
  • Biblioteca de Python xlwings
  • Un editor para escribir el programa

Suponiendo que RFEM 6, Excel y Python ya están instalados, el siguiente paso es instalar las bibliotecas RFEM_Python_Client. Ofrecemos varios vídeos de aprendizaje y páginas de ayuda que describen la instalación. Los siguientes enlaces son especialmente importantes para la instalación. Muestran la instalación así como los primeros pasos en la programación:

Los editores de programas también se analizan en estos vídeos. Para el presente ejemplo, el editor utilizado es irrelevante. Luego se debe instalar xlwings. Puede encontrar la información correspondiente en el sitio web de la biblioteca:

El código completo, por ejemplo, se encuentra en RFEM_Python_Client en la siguiente ruta:

  • RFEM_Python_Client/tree/main/Ejemplos/SteelDesign/

El archivo SteelDesignExcel.py es el programa Python (secuencia de comandos) y el archivo SteelDesignExcel.xlsm es el archivo EXCEL asociado.

Ejemplo de programación

La biblioteca xlwings ofrece varias opciones para combinar Python y EXCEL. Por un lado, es posible controlar Excel desde un programa de Python (más conocido como una secuencia de comandos (script) de Python) y también iniciar un script de Python desde Excel. Al comenzar con Excel, puede usar el complemento incorporado o crear una subrutina que luego inicie el script de Python. Los detalles se muestran aquí:

En nuestro ejemplo, el script de Python se inicia a través del complemento incorporado (ver imagen). Hay dos requisitos. El script de Python debe tener el mismo nombre que el archivo Excel y debe incluir una función principal porque esta función se ejecuta a través del complemento.
Aquí está la primera parte de la función principal:


            

...
# Open the excel sheet
wb = xw.Book.caller()

# Read inputs
inputSheet = wb.sheets('Inputs')

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

# Geometric Inputs
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
...


Si xlwings se usa directamente desde un script de Python (no a través de Excel), primero se debe abrir un archivo:


            

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


Si se usa xlwings fuera de Excel, la conexión se establece usando el siguiente comando:


            

wb = xw.Book.caller()


La variable wb incluye el libro (workbook) completo, del cual se pueden extraer hojas de cálculo individuales utilizando el método sheet(). En el ejemplo, se abre la hoja de cálculo "Inputs" y se accede a las celdas individuales mediante corchetes. El valor de una celda se puede leer o modificar mediante la propiedad 'value'. Esta implementación se puede encontrar al final del ejemplo:


            

...
# Writing Results to Output Sheets
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
...


En el caso presente, se lee la combinación de cargas 7. La imagen 2 muestra las deformaciones de las barras en Excel y, a modo de comparación, los resultados de RFEM 6 en la imagen 3.

Resumen

El ejemplo muestra que después de configurar todos los elementos necesarios, es bastante fácil usar la API. Excel se usa principalmente como una interfaz gráfica de usuario y no se requieren conocimientos de Visual Basic para aplicaciones (VBA). También es posible que los cálculos se realicen en Excel (también vía VBA), y Python sólo importe o exporte datos por medio de xlwings.


Autor

El Sr. Günthel proporciona soporte técnico para los clientes de Dlubal Software y se ocupa de sus solicitudes.

Enlaces