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 de 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:
- Documentos de desarrollo de Dlubal | Antes de comenzar
- Programación con RFEM 6 y Python | 003 Instalación
- Programación con RFEM 6 y Python | 004 Bibliotecas
- Programación con RFEM 6 y Python | 005 Ejemplo | Voladizo
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/Examples/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 un script de Python) y también iniciar un script de Python desde Excel. Al comenzar con Excel, puede usar o bien 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 "plug-in" (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 "plug-in".
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 sheets(). 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 1 muestra las deformaciones de las barras en Excel y, a modo de comparación, los resultados de RFEM 6 en la imagen 2.
Conclusión
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.