Przygotowanie
Dla omawianego przykładu i do programowania wymagane jest:
- RFEM 6
- EXCEL
- Python
- Dlubal RFEM_Python_Client
- Biblioteka Pythona xlwings
- Edytor do pisania programu
Zakładając, że programy RFEM 6, EXCEL i Python są już zainstalowane, następnym krokiem jest zainstalowanie bibliotek RFEM_Python_Client. Oferujemy różne filmy instruktażowe i strony z pomocnymi wskazówkami, jak przeprowadzić instalację. Poniższe linki są szczególnie ważne podczas instalacji. Pokazują instalację oraz pierwsze kroki w programowaniu:
- Zanim zaczniesz
- Programowanie w RFEM 6 i Python | 003 Instalacja
- Programowanie w RFEM 6 i Python | 004 Biblioteki
- Programowanie w RFEM 6 i Python | 005 Przykład | wspornik
W tych filmach omówiono również edytory programów. W niniejszym przykładzie użyty edytor nie ma znaczenia. Następnie należy zainstalować xlwings, odpowiednie informacje można znaleźć na stronie internetowej biblioteki:
Na przykład kompletny kod znajduje się w RFEM_Python_Client w następującej ścieżce:
- RFEM_Python_Client/drzewo/główne/Przykłady/Wymiarowanie stali/
Plik SteelDesignExcel.py jest programem (skryptem) w języku Python, a plik SteelDesignExcel.xlsm jest powiązanym plikiem EXCEL.
Przykład programowania
Biblioteka xlwings oferuje kilka opcji łączenia języków Python i EXCEL. Z jednej strony można sterować programem EXCEL za pomocą programu w języku Python (lepiej znanym jako skrypt w języku Python), a także uruchamiać skrypt w tym języku za pomocą programu Excel. Podczas uruchamiania programu EXCEL można użyć wbudowanej wtyczki lub utworzyć podprogram, który następnie uruchomi skrypt w języku Python. Szczegóły są pokazane tutaj:
W naszym przykładzie skrypt w języku Python jest uruchamiany za pomocą wbudowanej wtyczki (patrz ilustracja). Istnieją dwa wymagania. Skrypt w języku Python musi mieć taką samą nazwę jak plik EXCEL i musi zawierać główną funkcję, ponieważ funkcja ta jest następnie realizowana za pośrednictwem wtyczki.
Oto pierwsza część głównej funkcji:
- code.python#
...
- 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
...
- /kod#
Jeśli xlwings jest używany bezpośrednio ze skryptu Python (nie za pomocą programu EXCEL), najpierw należy otworzyć plik:
- code.python#
wb = xw.Book('userSheet.xlsm')
- /kod#
W przypadku korzystania z programu EXCEL połączenie jest nawiązywane za pomocą następującego polecenia:
- code.python#
wb = xw.Book.caller()
- /kod#
Zmienna wb zawiera kompletny skoroszyt, z którego można wyodrębnić poszczególne arkusze za pomocą metody sheets(). W tym przykładzie otwarty jest arkusz "Wprowadzania danych", a dostęp do poszczególnych komórek uzyskuje się za pomocą nawiasów kwadratowych. Wartość komórki można odczytać lub zmodyfikować za pomocą właściwości 'value'. Tę implementację można znaleźć na końcu przykładu:
- code.python#
...
- Zapisywanie wyników w arkuszach wyników
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
...
- /kod#
W tym przypadku odczytywana jest kombinacja obciążeń 7. Rysunek 2 przedstawia odkształcenia prętów w programie EXCEL oraz, dla porównania, wyniki z programu RFEM 6 na rysunku 3.
Uwagi końcowe
Przykład pokazuje, że po skonfigurowaniu wszystkich niezbędnych elementów korzystanie z API jest dość łatwe. EXCEL jest używany głównie jako graficzny interfejs użytkownika, a znajomość Visual Basic for Applications (VBA) nie jest wymagana. Możliwe jest również, że obliczenia są przeprowadzane w programie EXCEL (również poprzez VBA) i Pythonie, a xlwings tylko importuje lub eksportuje dane.