794x
001921
27-11-2024

API II

Este artículo ofrece una breve introducción a la API II de RFEM 6.

¿Qué es una API?

Una API (Interfaz de Programación de Aplicaciones) es una interfaz a través de la cual diferentes aplicaciones de software pueden comunicarse entre sí. Una API establece reglas sobre cómo se intercambia la información entre los programas.

Con las API II, es posible acceder a las funciones de RFEM 6 / RSTAB 9 usando software programado por uno mismo. Por ejemplo, es posible generar modelos, crear cargas, iniciar el cálculo y finalmente leer los resultados.

En RFEM 6 / RSTAB 9 ya existe una API, la interfaz Webservice (API I). Esta seguirá estando disponible. Por lo tanto, no es necesario cambiar las aplicaciones de software ya creadas a la API II.

Cuando se añaden nuevas funcionalidades a RFEM 6 / RSTAB 9, estas solo estarán disponibles en la API II. La API I se mantendrá en su estado actual "congelado".

¿Cuáles son las diferencias técnicas con la "vieja" API?

Primero, ambas interfaces se basan en la tecnología Webservice. RFEM 6 / RSTAB 9 se comunica con el software cliente a través del protocolo HTTP (o HTTPS).

En la API I, el cliente y el servidor intercambian mensajes en formato SOAP. En contraste, la API II usa el protocolo gRPC en su lugar.

Con SOAP, los mensajes se intercambian en formato XML. La comunicación mediante SOAP tiene un overhead relativamente alto.

Por el contrario, con gRPC, los mensajes se intercambian en un formato binario ligero basado en "buffers" de protocolo. Esto es mucho más eficiente que los formatos basados en texto como XML o JSON.

gRPC usa el nuevo protocolo HTTP/2, lo que también hace más eficiente la transmisión.

En la nueva API II es posible agrupar varios objetos en una lista y luego pasarlos. Ya no se requieren muchos pequeños llamados a la API, sino solo unos pocos. Esto también mejora la eficiencia. El ejemplo a continuación demuestra cómo funciona esta técnica por lotes.

Todas estas medidas para aumentar la eficiencia hacen que la comunicación a través de la nueva API II sea aproximadamente 10 veces más rápida que a través de API I.

La API II permite que el mismo código se ejecute en tres plataformas diferentes sin cambios.

  1. Como un programa Python independiente que accede a RFEM 6 instalado localmente o en la red desde "afuera".
  2. En la consola de scripts interna de RFEM 6.
  3. En la nube de Dlubal.

Programa independiente

En su computadora está instalado un RFEM 6 normal. Su programa en Python se comunica con RFEM a través de la API II.

Consola de scripts

Su script se ejecuta directamente en la consola de scripts de RFEM.

Nube de Dlubal

Para este caso de uso, no es necesario tener RFEM instalado localmente. Usted escribe su programa de aplicación, que se comunica con un servidor en la nube de Dlubal. Su programa de aplicación genera datos de estructura y carga en el servidor. El cálculo se realiza en el servidor. Su programa de aplicación lee los resultados del cálculo y los evalúa.

¿Qué cambia en la facturación?

Para el uso de la antigua API I se cobraba una tarifa de uso mensual. Esto era independiente del uso real.

Con la nueva API II, el modelo de facturación cambia a uno basado en el uso. Esto significa que el llamado de ciertas funciones de la API es de pago. La facturación se realiza en Dlubal-Credits. Estos se pueden adquirir en la tienda en línea.

Generar clave API

Para usar la API II, además de la suscripción Webservice se necesita una clave API. Una clave API es un texto que sirve para la identificación y autenticación.

Los usuarios pueden generar las claves API en el extranet.

Cada una de las claves API generadas está asociada a la empresa. Esto significa que cada usuario asociado a la empresa puede usar las claves.

Es posible y a menudo recomendable generar varias claves API. No implica costes adicionales. Por ejemplo, es recomendable generar una clave para cada proyecto. Esto permite al usuario distinguir entre proyectos individuales en su facturación interna.

Instalación de la interfaz

El paquete para la interfaz está disponible a través de PiPI. Instale el paquete con el siguiente comando:


pip install dlubal.api

Ejemplo de programa

Un pequeño ejemplo demuestra el uso de la nueva API II. Se crea una viga en voladizo compuesta por un IPE 200.

Aquí está el código del programa:


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)

Primero, se importa la librería de RFEM.

Con el comando with se crea la instancia rfem_app de esta clase. El API-Key se puede pasar como argumento de rfem.Application(). Pero, por razones de seguridad, no se recomienda. En su lugar, la clave API debe almacenarse en un archivo config.ini. Cómo hacer esto exactamente se explica en la documentación detallada de la API II:

En la siguiente línea, se crea un nuevo modelo RFEM con el método rfem_app.create_model(name='cantilever'). El nombre del modelo se puede pasar como parámetro.

En las siguientes líneas de código, la nueva API II se diferencia fundamentalmente del método "antiguo" en la API I. En la lista structure, se definen primero los elementos estructurales. Luego se pasan junto con el comando rfem_app.create_object_list(structure).


Autor

El Sr. Faulstich es responsable del control de calidad del programa RFEM y proporciona soporte al cliente.

Enlaces


;