Тема:
Использование веб-сервиса API в сочетании с EXCEL и Python
Примечания:
Программы для работы с электронными таблицами, такими как MS EXCEL, очень популярны среди инженеров, поскольку позволяют легко автоматизировать вычисления и быстро выводить результаты. Таким образом, сочетание MS EXCEL, используемого в качестве графического интерфейса, с веб-сервисом API Dlubal является очевидным выбором. Используя бесплатную библиотеку xlwings для Python, вы можете управлять EXCEL, а также считывать и записывать значения. Функциональность описана ниже на примере.
Легенда:
Подготовка
Для примера и для программирования потребуется следующее:
- RFEM 6
- EXCEL
- Python
- Dlubal RFEM_Python_Client
- Библиотека Python xlwings
- Редактор для написания программы
Предполагая, что RFEM 6, EXCEL и Python уже установлены, вы должны сначала установить библиотеки RFEM_Python_Client. Мы предлагаем различные обучающие видеоролики и справочные страницы с описанием установки. Следующие ссылки особенно важны для установки. Они покажут вам установку и первые шаги в программировании:
- https://dlubal-software.github.io/.github/guide/
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003477
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003478
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003479
В этих видеороликах также рассказывается о программных редакторах. Для данного примера используемый редактор не имеет значения. Затем необходимо установить xlwings, соответствующую информацию можно найти на сайте библиотеки:
Полный код, например, находится в RFEM_Python_Client по следующему пути:
- RFEM_Python_Client/tree/main/Примеры/SteelDesign/
Файл SteelDesignExcel.py - это программа (скрипт) Python, а файл SteelDesignExcel.xlsm - это связанный файл EXCEL.
Пример программирования
Библиотека xlwings предлагает несколько вариантов сочетания Python и EXCEL. С одной стороны, можно управлять EXCEL из программы Python (более известной как скрипт Python), а также запускать скрипт Python из EXCEL. При запуске из EXCEL вы можете либо использовать встроенный подключаемый модуль, либо создать подпрограмму, которая затем запускает скрипт Python. Подробности показаны здесь:
В нашем примере скрипт Python запускается через встроенный плагин (см. рисунок). Есть два требования. Скрипт Python должен иметь то же имя, что и файл EXCEL, и должен включать в себя основную функцию, поскольку затем эта функция выполняется через подключаемый модуль.
Вот первая часть основной функции:
- code.de#
...
- Открыть лист Excel
wb = xw.Book.caller()
- Читать вводы
inputSheet = wb.sheets('Inputs')
frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2
- Геометрические данные
frame_number = int (inputSheet ["G6"]. value) #количество кадров
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
...
- /#
Если xlwings используется непосредственно из скрипта Python (не через EXCEL), сначала необходимо открыть файл:
- code.de#
wb = xw.Book('userSheet.xlsm')
- /#
Если xlwings используется вне EXCEL, соединение устанавливается с помощью следующей команды:
- code.de#
wb = xw.Book.caller()
- /#
Переменная wb включает в себя всю рабочую книгу, из которой можно извлечь отдельные рабочие листы с помощью метода листов (). В этом примере открывается рабочий лист «Входные данные», и доступ к отдельным ячейкам осуществляется с помощью квадратных скобок. Значение ячейки можно прочитать или изменить с помощью свойства 'value'. Эту имплементацию можно найти в конце примера:
- code.de#
...
- Запись результатов в выходные листы
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
...
- /#
В данном случае считывается сочетание нагрузок 7. На рисунке 2 показаны деформации стержней в EXCEL и, для сравнения, результаты RFEM 6 на рисунке 3.
Резюме
В нашем примере ...