145x
004331
2023-01-23

КБ 001790 | Использование веб-сервиса API в сочетании с EXCEL и Python

Тема:
Использование веб-сервиса 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. Мы предлагаем различные обучающие видеоролики и справочные страницы с описанием установки. Следующие ссылки особенно важны для установки. Они покажут вам установку и первые шаги в программировании:

В этих видеороликах также рассказывается о программных редакторах. Для данного примера используемый редактор не имеет значения. Затем необходимо установить 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, и должен включать в себя основную функцию, поскольку затем эта функция выполняется через подключаемый модуль.
Вот первая часть основной функции:

  1. code.de#

...

  1. Открыть лист Excel

wb = xw.Book.caller()

  1. Читать вводы

inputSheet = wb.sheets('Inputs')

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

  1. Геометрические данные

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
...

  1. /#

Если xlwings используется непосредственно из скрипта Python (не через EXCEL), сначала необходимо открыть файл:

  1. code.de#

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

  1. /#

Если xlwings используется вне EXCEL, соединение устанавливается с помощью следующей команды:

  1. code.de#

wb = xw.Book.caller()

  1. /#

Переменная wb включает в себя всю рабочую книгу, из которой можно извлечь отдельные рабочие листы с помощью метода листов (). В этом примере открывается рабочий лист «Входные данные», и доступ к отдельным ячейкам осуществляется с помощью квадратных скобок. Значение ячейки можно прочитать или изменить с помощью свойства 'value'. Эту имплементацию можно найти в конце примера:

  1. code.de#

...

  1. Запись результатов в выходные листы

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
...

  1. /#

В данном случае считывается сочетание нагрузок 7. На рисунке 2 показаны деформации стержней в EXCEL и, для сравнения, результаты RFEM 6 на рисунке 3.

Резюме

В нашем примере ...



;