Je tato stránka užitečná?
133x
001921
27.11.2024

API II

V tomto příspěvku krátce představíme program RFEM 6 API II.

Co je API?

API (Application Programming Interface) je rozhraní, pomocí kterého mohou mezi sebou komunikovat různé softwarové aplikace. API definuje pravidla pro výměnu informací mezi programy.

Pomocí API II je možné přistupovat k funkcím programu RFEM 6/RSTAB 9 pomocí softwaru, který si uživatel sám naprogramoval. Lze tak například vytvořit modely, vytvořit zatížení, spustit výpočet a nakonec načíst výsledky.

RFEM 6/RSTAB 9 již má API, webové rozhraní (API I). To bude také zachováno. Proto není bezpodmínečně nutné převádět stávající software na API II.

Pokud jsou v programu RFEM 6/RSTAB 9 přidány nové funkce, jsou k dispozici pouze v API II. API I zůstane "zamrzlé" na aktuální úrovni.

Jaké jsou technické rozdíly oproti „starému“ API?

Zaprvé, obě rozhraní jsou založena na technologii webových služeb. Programy RFEM 6/RSTAB 9 komunikují s klientským softwarem pomocí protokolu HTTP (resp. HTTPS).

S API I si klient a server vyměňují zprávy ve formátu SOAP. API II místo toho používá protokol gRPC.

SOAP umožňuje výměnu zpráv ve formátu XML. Komunikace pomocí SOAP je poměrně náročná.

Naproti tomu gRPC si vyměňuje zprávy v odlehčeném binárním formátu založeném na vyrovnávací paměti. To je mnohem efektivnější než textové formáty jako XML nebo JSON.

gRPC používá novější protokol HTTP/2, který také zefektivňuje přenos.

Nové API II umožňuje sloučit více objektů do seznamu a následně je přenést. To znamená, že je zapotřebí pouze několik volání API místo velkého počtu malých volání. To také zvyšuje efektivitu. Níže uvedený příklad ukazuje, jak tato dávková technika funguje.

Všechna tato opatření znamenají, že komunikace přes nové API II je asi 10krát rychlejší než přes API I.

API II umožňuje běh stejného kódu na třech různých platformách bez jakýchkoliv úprav.

  1. Jako samostatný program v Pythonu, který přistupuje k lokálně nebo síťovému programu RFEM 6 „zvenčí“.
  2. V interní skriptovací konzoli programu RFEM 6.
  3. V Dlubal cloudu.

Samostatný program

Na vašem počítači je nainstalován program Normal RFEM 6. Váš program Python komunikuje s programem RFEM přes API II.

Script Console

Váš skript se spustí přímo ve skriptovací konzoli programu RFEM.

Dlubalův oblak

Pro tuto aplikaci nemusí být program RFEM vůbec nainstalován lokálně. Napíšete svůj aplikační program, který komunikuje se serverem v Dlubal Cloudu. Váš aplikační program generuje údaje o konstrukci a zatížení na serveru. Výpočet probíhá na serveru. Váš program načte výsledky výpočtu a vyhodnotí je.

Co se změnilo v procesu účtování?

Za používání starého API I byl účtován měsíční poplatek. To bylo nezávislé na skutečném použití.

Nové API II to mění na fakturační model založený na použití. To znamená, že volání určitých funkcí API je zpoplatněno. Ta bude účtována v Dlubal kreditech. Lze je zakoupit v e-shopu.

Generování API klíče

Pro použití API II je kromě předplatného webových služeb vyžadován API klíč. API klíč je text, který slouží k identifikaci a autentizaci.

Uživatel může generovat API klíče v extranetu.

Každému z vygenerovaných API klíčů je přiřazena „společnost“. To znamená, že klíče může používat každý uživatel přiřazený ke společnosti.

Generovat více API klíčů je možné a často užitečné. Nebudou účtovány žádné další náklady. Například má smysl vygenerovat samostatný klíč pro každý projekt. Uživatel tak může ve svém interním účtování rozlišovat mezi jednotlivými projekty.

Instalace rozhraní

Balíček pro rozhraní je k dispozici přes PiPI. Spusťte následující příkaz pro instalaci balíčku:

pip install dlubal.api

Příklad programu

Na malém příkladu si ukážeme použití nového API II. Vytvoří se konzolový nosník z IPE 200.

Zde je kód programu:

importovat dlubal.api.rfem jako rfem

s rfem.Application() jako rfem_app:

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

    inf = float('inf')

    konstrukce = [
        rfem.structure_core.Material(
            no=1,
            name='S235'
        ),
        rfem.structure_core.Section(
            no=1,
            name='IPE 200',
            materiál=1
        ),
        rfem.structure_core.Node(
            ne=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,
            linie=1,
            section_start=1
        ),
        rfem.types_for_nodes.NodalSupport(
            no=1,
            uzly=[1],
            pružina_x=inf,
            pružina_y=inf,
            pružina_z=inf,
            Rotational_restraint_x=inf,
            Rotational_restraint_y=inf,
            Rotational_restraint_z=inf
        ),
    ]

    rfem_app.create_object_list(structure)

Nejdříve naimportujeme databázi programu RFEM.

Příkaz with vytvoří instanci rfem_app této třídy. API klíč lze zadat jako argument pro rfem.Application(). To ovšem z bezpečnostních důvodů nedoporučujeme. Místo toho by měl být klíč API uložen v souboru config.ini. Jak přesně to funguje, je vysvětleno v podrobné dokumentaci API II:

V dalším řádku vytvoříme metodou rfem_app.create_model(name='cantilever') nový model v programu RFEM. Název modelu se převezme jako parametr.

V několika následujících řádcích se nové API II zásadně liší od „starého“ přístupu v API I. Nejdříve se definují prvky konstrukce v seznamu konstrukcí. Poté se převedou společně s příkazem rfem_app.create_object_list(structure).


Autor

Ing. Faulstich je zodpovědný za kvalitu programu RFEM a kromě toho se věnuje technické podpoře zákazníků.

Odkazy