什么是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使得同一代码可以在三个不同的平台上不做修改地执行。
- 作为独立的Python程序,从“外部”访问本地或网络中安装的RFEM 6。
- 在RFEM 6的内部脚本控制台中。
- 在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)传递这些元素。