794x
001921
2024-11-27

API II

这篇文章简要介绍了 RFEM 6 的 API II。

什么是API?

API(应用程序编程接口)是一个接口,通过它可以使不同的软件应用程序相互通信。API规定了程序之间信息交换的规则。

通过API II,可以使用自行编写的软件访问RFEM 6 / RSTAB 9的功能。因此,可以生成模型,施加载荷,启动计算,最终读取结果。

在RFEM 6 / RSTAB 9中,已经存在一个API,即Web服务接口(API I)。它仍将继续保留。因此,没有必要将已创建的软件转换为API II。

当在RFEM 6 / RSTAB 9中添加新功能时,这些功能将仅在API II中可用。API I将保持现有状态“冻结”。

与“旧”API的技术区别是什么?

首先,两种接口都基于Web服务技术。因此,RFEM 6 / RSTAB 9通过HTTP协议(或HTTPS协议)与客户端软件通信。

在API I中,客户端和服务器以SOAP格式交换消息。相比之下,API II使用了gRPC协议。

通过SOAP,消息以XML格式交换。SOAP通信具有相对较多的开销。

相比之下,gRPC中的消息以轻量级的基于协议缓冲区的二进制格式交换。这比基于文本的格式(如XML或JSON)效率更高。

gRPC使用较新的HTTP/2协议,这使得传输效率更高。

在新的API II中,可以将多个对象合并在一个列表中,然后传递。因此,不再需要大量小的API调用,而只需几个。这也提高了效率。下面的示例演示了这种批量技术的工作方式。

所有这些提高效率的措施使得通过新的API II的通信比通过API I快大约10倍。

API II使得同一代码可以在三个不同的平台上不做修改地执行。

  1. 作为独立的Python程序,从“外部”访问本地或网络中安装的RFEM 6。
  2. 在RFEM 6的内部脚本控制台中。
  3. 在Dlubal云中。

独立程序

在您的计算机上安装了一个常规的RFEM 6。您的Python程序通过API II与RFEM通信。

脚本控制台

您的脚本直接在RFEM的脚本控制台中执行。

Dlubal云

对于这种应用,不需要在本地安装任何RFEM。您编写的应用程序与Dlubal云中的服务器通信。您的应用程序在服务器上生成结构和载荷数据。在服务器上进行计算。您的应用程序读取计算结果并进行评估。

计费有什么变化?

使用旧的API I需要支付每月使用费。这与实际使用无关。

通过新的API II,这变为使用量相关的计费模型。这意味着调用某些特定的API功能是收费的。费用以Dlubal积分计算。这些积分可以在网上商店购买。

生成API键

使用API II除了需要Web服务订阅外,还需要一个API键。API键是一段文本,用于标识和身份验证。

用户可以在Extranet中生成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)传递这些元素。


作者

Faulstich 先生负责 RFEM 的质量保证和客户支持。

链接


;