Cos'è un'API?
Un'API (Application Programming Interface) è un'interfaccia attraverso la quale diverse applicazioni software possono comunicare tra loro. Un'API definisce le regole per lo scambio di informazioni tra i programmi.
Con API II, è possibile accedere alle funzioni di RFEM 6/RSTAB 9 con un software autoprogrammato. Ad esempio, è possibile generare modelli, creare carichi, avviare il calcolo e infine leggere i risultati.
RFEM 6/RSTAB 9 ha già un'API, la Web Service Interface (API I). Anche questo sarà mantenuto. Pertanto, non è assolutamente necessario convertire il software esistente in API II.
Se si aggiungono nuove funzionalità in RFEM 6/RSTAB 9, queste saranno disponibili solo nell'API II. L'API I rimane "congelata" al livello corrente.
Quali sono le differenze tecniche rispetto alla "vecchia" API?
Innanzitutto, entrambe le interfacce sono basate sulla tecnologia Webservice. RFEM 6/RSTAB 9 comunica con il software client tramite il protocollo HTTP (o HTTPS).
Con API I, il client e il server si scambiano messaggi in formato SOAP. API II utilizza invece il protocollo gRPC.
SOAP scambia messaggi in formato XML. La comunicazione tramite SOAP ha un sovraccarico relativamente alto.
Al contrario, gRPC scambia i messaggi in un formato binario leggero e basato su buffer. Questo è molto più efficiente dei formati basati su testo come XML o JSON.
gRPC utilizza il nuovo protocollo HTTP/2, che rende anche la trasmissione più efficiente.
La nuova API II consente di combinare più oggetti in un elenco e quindi di trasferirli. Ciò significa che sono necessarie solo poche chiamate API, piuttosto che un gran numero di piccole. Ciò aumenta anche l'efficienza. L'esempio seguente mostra come funziona questa tecnica batch.
Tutte queste misure di efficienza significano che la comunicazione tramite la nuova API II è circa 10 volte più veloce che tramite API I.
L'API II consente l'esecuzione dello stesso codice su tre piattaforme diverse senza alcuna modifica.
- Come programma Python stand-alone che accede a RFEM 6 installato localmente o in rete dall'"esterno".
- Nella console di script interna di RFEM 6.
- Nella nuvola di Dlubal.
Programma stand-alone
Normale RFEM 6 è installato sul tuo computer. Il tuo programma Python comunica con RFEM tramite API II.
Console di script
Il tuo script sarà eseguito direttamente nella console di scripting di RFEM.
Dlubal Cloud
Per questa applicazione, RFEM non deve essere installato localmente. Scrivi il tuo programma applicativo che comunica con un server in Dlubal Cloud. Il programma applicativo genera dati strutturali e di carico sul server. Il calcolo viene eseguito sul server. Il programma applicativo legge i risultati del calcolo e li valuta.
Cosa è cambiato nel processo di fatturazione?
Per l'utilizzo della vecchia API I è stata addebitata una tariffa di utilizzo mensile. Questo era indipendente dall'uso effettivo.
La nuova API II cambia questo in un modello di fatturazione basato sull'utilizzo. Ciò significa che è previsto un addebito per la chiamata di alcune funzioni API. Questo sarà addebitato in crediti Dlubal. Questi possono essere acquistati nel webshop.
Generazione della chiave API
Per utilizzare API II, è necessaria una chiave API oltre all'abbonamento al servizio web. Una chiave API è un pezzo di testo utilizzato per l'identificazione e l'autenticazione.
L'utente può generare chiavi API nell'extranet.
Ciascuna delle chiavi API generate è assegnata a una "società". Ciò significa che qualsiasi utente assegnato all'azienda può utilizzare le chiavi.
È possibile e spesso utile generare più chiavi API. Non saranno addebitati costi aggiuntivi. Ad esempio, ha senso generare una chiave separata per ogni progetto. In questo modo, l'utente può distinguere tra i singoli progetti nella loro contabilità interna.
Installazione dell'interfaccia
Il pacchetto per l'interfaccia è disponibile tramite PiPI. Esegui il seguente comando per installare il pacchetto:
- code.python#
pip installa dlubal.api
- /codice#
Esempio di programma
Un piccolo esempio mostra l'uso della nuova API II. Viene creata una trave a sbalzo costituita da un IPE 200.
Ecco il codice del programma:
- code.python#
importa dlubal.api.rfem come rfem
con rfem.Application() come rfem_app:
- rfem_app.create_model(name='sbalzo')
- rfem_app.delete_all_objects()
- inf = float('inf')
- struttura = [
- rfem.structure_core.Material(
- nr=1,
- nome='S235'
- ),
- rfem.structure_core.Section(
- nr=1,
- nome='IPE 200',
- materiale=1
- ),
- rfem.structure_core.Node(
- nr=1
- ),
- rfem.structure_core.Node(
- no=2,
- coordinata_1=6.0
- ),
- rfem.structure_core.Line(
- nr=1,
- definizione_nodi=[1,2]
- ),
- rfem.structure_core.Member(
- nr=1,
- linea=1,
- inizio_sezione=1
- ),
- rfem.types_for_nodes.NodalSupport(
- nr=1,
- nodi=[1],
- molla_x=inf,
- molla_y=inf,
- spring_z=inf,
- vincolo_rotazionale_x=inf,
- vincolo_rotazionale_y=inf,
- vincolo_rotazionale_z=inf
- ),
- ]
- rfem_app.create_object_list(struttura)
- /codice#
Innanzitutto, viene importata la libreria RFEM.
Il comando with crea l'istanza rfem_app di questa classe. La chiave API può essere inserita come argomento per rfem.Application(). Tuttavia, non lo consigliamo per motivi di sicurezza. Invece, la chiave API dovrebbe essere memorizzata nel file config.ini. Come funziona esattamente è spiegato nella documentazione dettagliata di API II:
Nella riga successiva, il metodo rfem_app.create_model(name='sbalzo') viene utilizzato per creare un nuovo modello RFEM. Il nome del modello viene trasferito come parametro.
Nelle prossime righe di codice, la nuova API II differirà fondamentalmente dal "vecchio" approccio nell'API I. Innanzitutto, gli elementi della struttura sono definiti nell'elenco delle strutture. Quindi, questi vengono trasferiti insieme al comando rfem_app.create_object_list(structure).