794x
001921
2024-11-27

API II

Эта статья дает краткое введение в API II от RFEM 6.

Что такое API?

API (Application Programming Interface) - это интерфейс, через который различные программные приложения могут обмениваться данными. API устанавливает правила для обмена информацией между программами.

Таким образом, с помощью API II возможно получать доступ к функциям RFEM 6 / RSTAB 9 с использованием собственного программного обеспечения. Например, можно создавать модели, задавать нагрузки, запускать расчет и, наконец, считывать результаты.

В RFEM 6 / RSTAB 9 уже существует API — веб-сервисный интерфейс (API I). Он также сохраняется. Следовательно, нет необходимости перевода уже созданного софта на API II.

При добавлении новых функций в RFEM 6 / RSTAB 9 они будут доступны только в API II. API I останется "замороженным" на текущем уровне.

Каковы технические отличия от "старого" API?

Прежде всего, оба интерфейса основаны на технологии веб-сервисов. RFEM 6 / RSTAB 9 общается с клиентским программным обеспечением через HTTP-протокол (или HTTPS-протокол).

В API I клиент и сервер обмениваются сообщениями в формате SOAP. В отличие от этого, API II использует протокол gRPC.

С SOAP сообщения обмениваются в формате XML. Коммуникация с помощью SOAP имеет достаточно большие потери.

Напротив, в gRPC сообщения обмениваются в облегченном двоичном формате на основе ProtoBuf. Это значительно эффективнее, чем текстовые форматы, такие как XML или JSON.

В gRPC используется более новый протокол HTTP/2, что также делает передачу более эффективной.

В новом API II возможно объединение нескольких объектов в список для передачи. Это исключает необходимость множества мелких API-вызовов, сокращая их число до нескольких. Это также увеличивает эффективность. В примере ниже демонстрируется, как работает эта техника пакетной обработки.

Все эти меры по увеличению эффективности приводят к тому, что коммуникация через новое API II примерно в 10 раз быстрее, чем через API I.

API II позволяет выполнять тот же код на трех разных платформах без изменений.

  1. Как самостоятельная программа на Python, которая извне обращается к локально или в сети установленному RFEM 6.
  2. Внутри внутренней консоли скриптинга RFEM 6.
  3. В облаке Dlubal.

Самостоятельная программа

На вашем компьютере установлен обычный RFEM 6. Ваша программа на Python взаимодействует с RFEM через API II.

Консоль скриптинга

Ваш скрипт выполняется непосредственно в консоли скриптинга RFEM.

Облако Dlubal

Для этого случая вообще не требуется локальной установки RFEM. Вы пишете прикладную программу, которая взаимодействует с сервером в облаке Dlubal. Ваша прикладная программа генерирует данные по структурам и нагрузкам на сервере. На сервере производится расчет. Ваша прикладная программа считывает результаты расчета и анализирует их.

Какие изменения в оплате?

За использование старого API I взималась ежемесячная плата, которая была независима от фактического использования.

С новым API II это меняется на модель оплаты, основанную на фактическом использовании. Это означает, что вызов некоторых API-функций платен. Оплата осуществляется в Dlubal-кредитах, которые можно приобрести в интернет-магазине.

Создание API-ключа

Для использования API II, помимо подписки на веб-сервис, требуется API-ключ. API-ключ — это строка текста, которая служит для идентификации и аутентификации.

Пользователь может сгенерировать API-ключи в экстранете.

Каждый из созданных API-ключей привязан к компании. Это значит, что любой пользователь, связанный с этой компанией, может использовать ключи.

Возможно и часто целесообразно генерировать несколько API-ключей без дополнительных затрат. Это имеет смысл, например, чтобы генерировать отдельный ключ для каждого проекта. Это позволяет пользователю различать проекты при внутреннем расчете.

Установка интерфейса

Пакет для интерфейса доступен через PiPI. Следующий командой можно установить пакет:

pip install dlubal.api

Пример программы

В небольшом примере демонстрируется использование нового API II. Создается консольная балка, которая состоит из IPE 200.

Вот программный код:

import dlubal.api.rfem as rfem

with rfem.Application() as rfem_app:

    rfem_app.create_model(name='cantilever')
    rfem_app.delete_all_objects()

    inf = float('inf')

    structure = [
        rfem.structure_core.Material(
            no=1,
            name='S235'
        ),
        rfem.structure_core.Section(
            no=1,
            name='IPE 200',
            material=1
        ),
        rfem.structure_core.Node(
            no=1
        ),
        rfem.structure_core.Node(
            no=2,
            coordinate_1=6.0
        ),
        rfem.structure_core.Line(
            no=1,
            definition_nodes=[1,2]
        ),
        rfem.structure_core.Member(
            no=1,
            line=1,
            section_start=1
        ),
        rfem.types_for_nodes.NodalSupport(
            no=1,
            nodes=[1],
            spring_x=inf,
            spring_y=inf,
            spring_z=inf,
            rotational_restraint_x=inf,
            rotational_restraint_y=inf,
            rotational_restraint_z=inf
        ),
    ]

    rfem_app.create_object_list(structure)

Сначала импортируется библиотека RFEM.

С помощью команды with создается экземпляр rfem_app этого класса. В качестве аргумента для rfem.Application() можно передать API-ключ. Однако по соображениям безопасности это не рекомендуется. Вместо этого следует сохранить API-ключ в файле config.ini. Подробно это описано в документации API II:

В следующей строке с помощью метода rfem_app.create_model(name='cantilever') создается новая модель RFEM. Имя модели может быть передано в качестве параметра.

В следующих строках программы новое API II принципиально отличается от прежнего подхода в API I. В списке structure сначала определяются структурные элементы. Затем они передаются с командой rfem_app.create_object_list(structure).


Автор

Г-н Фаулстих отвечает за контроль качества программы RFEM и обеспечивает поддержку пользователей.

Ссылки


;