Preparação
O seguinte é necessário para o exemplo e para a programação:
- RFEM 6
- EXCEL
- Python
- Dlubal RFEM_Python_Client
- biblioteca Python xlwings
- Um editor para escrever o programa
Assumindo que o RFEM 6, o EXCEL e o Python já estão instalados, o próximo passo é instalar as bibliotecas RFEM_Python_Client. Oferecemos vários vídeos de aprendizagem e páginas de ajuda que descrevem a instalação. As ligações seguintes são particularmente importantes para a instalação. Apresentam a instalação e os primeiros passos para a programação:
- Antes de começar
- Programação com RFEM 6 e Python | 003 Instalação
- Programação com RFEM 6 e Python | 004 Bibliotecas
- Programação com RFEM 6 e Python | 005 Exemplo | Consola
Os editores de programas também são discutidos nestes vídeos. Para o presente exemplo, o editor utilizado é irrelevante. Depois, tem de instalar o xlwings, pode encontrar a informação correspondente na página web da biblioteca:
O código completo, por exemplo, está localizado no RFEM_Python_Client no seguinte caminho:
- RFEM_Python_Client/tree/main/Examples/SteelDesign/
O ficheiro SteelDesignExcel.py é o programa em Python (script) e o ficheiro SteelDesignExcel.xlsm é o ficheiro EXCEL associado.
Exemplo para programação
A biblioteca xlwings oferece várias opções para combinar Python e EXCEL. Por um lado, é possível controlar o EXCEL a partir de um programa Python (mais conhecido como script em Python) e também iniciar um script em Python a partir do EXCEL. Ao iniciar o EXCEL, pode utilizar o plug-in integrado ou criar uma sub-rotina que depois inicia o script Python. Os detalhes são apresentados aqui:
No nosso exemplo, o script Python é iniciado através do plug-in integrado (ver imagem). Existem dois requisitos. O script Python tem de ter o mesmo nome que o ficheiro EXCEL e tem de incluir uma função principal porque esta função é depois executada através do plug-in.
Aqui está a primeira parte da função principal:
...
# Abrir a folha de Excel
wb = xw.Book.caller()
# Ler entrada de dados
inputSheet = wb.sheets('Inputs')
frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2
# Entradas geométricas
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
...
Se o xlwings é utilizado diretamente a partir de um script Python (não através do EXCEL), tem de ser aberto primeiro um ficheiro:
wb = xw.Book('userSheet.xlsm')
Se xlwings é utilizado fora do EXCEL, a ligação é estabelecida através do seguinte comando:
wb = xw.Book.caller()
A variável wb inclui o livro completo, do qual podem ser extraídas folhas de cálculo individuais utilizando o método Sheets(). No exemplo, a folha de cálculo "Entradas" é aberta e as células individuais são acedidas através dos parênteses retos. O valor de uma célula pode ser lido ou modificado pela propriedade 'valor'. Esta implementação pode ser encontrada no final do exemplo:
...
# Escrita de resultados nas folhas de saída
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
...
No presente caso, é lida a combinação de carga 7. A Figura 1 mostra as deformações das barras no EXCEL e, para comparação, os resultados do RFEM 6 na Figura 2.
Conclusão
O exemplo mostra que, depois de configurar todos os elementos necessários, é bastante fácil utilizar a API. O EXCEL é utilizado principalmente como uma interface gráfica com o utilizador, e não é necessário conhecimento de Visual Basic for Applications (VBA). Também é possível que os cálculos sejam realizados no EXCEL (também através de VBA) e em Python apenas importa ou exporta dados através do xlwings.