API per Straus7 - Application Programming Interface
Introduzione
A partire dalla release 2.2 di Straus7, e' reso disponibile un nuovo potente strumento di lavoro, le Straus7 API (Application
Programming Interface). Questo prodotto software consente agli utenti di
interfacciare con Straus7 proprie applicazioni esterne.
La dicitura “Application Programming Interface”
assume, in questo contesto, il seguente significato:
- La parola Application si riferisce al nome
dell’applicazione principale. Tale applicazione è Straus7 nelle funzionalità
di pre-processing, post-processing e di solutore.
- La parola Interface si riferisce
all’interfaccia. Essa è costituita da una DLL Win32 chiamata “St7API.DLL”. La
sigla DLL significa letteralmente libreria dinamica di collegamento ed è uno
speciale tipo di programma nato, non per essere eseguito in modalità autonoma,
ma per fornire funzionalità specifiche che possono essere attivate tramite
chiamata da un programma esterno.
- Programming si riferisce al fatto che
l’interazione tra l’utente e Straus7 avviene attraverso un linguaggio di
programmazione, anziche' per mezzo dell’interfaccia grafica classica (GUI:
Graphical User Interface). Il programmatore può quindi sviluppare un programma
in grado di eseguire funzioni di Straus7 richiamando le funzioni fornite con
le API.
Ogni programma scritto con un linguaggio di programmazione
supportato in ambiente Windows può utilizzare le API di Straus7 a condizione
che, in primo luogo, esso possa caricare dinamicamente file DLL di Windows e, in
secondo luogo, che rispetti le relative convenzioni di chiamata. Ciò è possibile
con linguaggi tipo C, C++, Pascal, Delphi, Visual Basic, FORTRAN, etc. La scelta
del linguaggio di programmazione dipende unicamente dalle preferenze del
programmatore, piuttosto che da ragioni di compatibilità o prestazione. Le API
stesse sono scritte utilizzando il linguaggio di programmazione Delphi.
Funzionalità base
Le API consentono agli utenti di incorporare Straus7
all’interno delle proprie applicazioni.
Piu' precisamente esse possono essere utilizzate per :
- Creare direttamente
nuovi modelli Straus7 (i file binari con estensione ST7, che contengono i
tipici dati di ingresso di Straus7).
- Modificare file ST7
esistenti.
- Lanciare i solutori
di Straus7.
- Estrarre e
rielaborare i risultati di un calcolo svolto.
In realta', operazioni di questo tipo possono essere eseguite
anche tramite l’utilizzo diretto della Straus7 GUI. E' inoltre possibile
scambiare dati tra Straus7 ed altre applicazioni con funzioni di
importazione\esportazione in formato testo, con funzioni di copia\incolla
ecc.
Le modalita' di cui sopra possono pero' rivelarsi lunghe e
onerose.
Le API, invece, forniscono una modalita' totalmente
trasparente di interagire con Straus7 e con esse risulta facile automatizzare
anche operazioni ripetitive. Una nota importante riguarda il fatto che, anche se
il formato dei file binari dovesse cambiare a seguito di aggiornamenti del
software, tali cambiamenti verranno integralmente gestiti dalle API; ciò lascia
immutata la struttura dei programmi esterni già sviluppati.
Utilizzatori finali
Le API di Straus7 sono state sviluppate pensando a varie
categorie di utenti, in particolare :
- Software house e
sviluppatori di software che intendano includere un codice FEM all’interno dei
loro pacchetti. Esempio tipico puo' essere il software per la ottimizzazione
strutturale o software per il post-processamento dei risultati di Straus7.
- Utenti di Straus7 che
intendano processare i risultati di Straus7 con modalità non supportate dall’interfaccia principale
originale, ad esempio per la stesura di relazioni tecniche specializzate, o
secondo particolari normative di interesse dell'utente.
- Utenti Straus7 che
vogliano creare modelli parametrici o automatizzare la creazione di modelli.
- Utenti Straus7 che
intendano scambiare i dati dei modelli con altre applicazioni.
- Utenti di altri
software di analisi che intendano utilizzare le spiccate caratteristiche di
pre e post processing dell’ambiente Straus7 ed eseguire poi le analisi in un
ambiente diverso. Ad esempio un programma che sfrutti le API potrebbe creare
un modello in Straus7, esportare i dati nel formato richiesto da un altro
software di analisi ed avviare la soluzione. Una volta ottenuti i risultati,
gli stessi potrebbero essere visualizzati in Straus7.
- Ricercatori che
necessitino di compiere, in alcune fasi del loro lavoro, analisi ad elementi
finiti. Ad esempio una analisi stocastica di strutture richiede la soluzione
di una grande varietà di modelli in cui la geometria o le proprietà sono
soggette a variazioni probabilistiche. Le API possono essere utilizzate nella
scrittura di un programma per la soluzione di tutti questi modelli, per la
sintesi dei risultati e per
produrre infine una relazione tecnica in automatico.
Il Toolkit delle API di Straus7.
Il Toolkit delle API è composto dai seguenti componenti:
- La libreria dinamica
di collegamento (DLL) St7API.DLL. Tale file costituisce l’interfaccia tra i
vari programmi e Straus7.
- I
file header. Questi file permettono ad un compilatore esterno di comunicare
con St7API.DLL. I file header contengono la definizione di tutte le costanti
utilizzate insieme alle convenzioni di chiamata delle funzioni per ogni
linguaggio supportato. E' previsto un set di files header per ogni linguaggio
(ad es. Delphi, C, C++, FORTRAN, ecc.). Si noti che in alcuni casi il formato
del file di header è dipendente dal produttore del linguaggio di compilazione
– ad es. il file header per Microsoft Visual C++ sarà differente da quello per
Borland C++.
- Una applicazione di
esempio. Per illustrare l’utilizzo delle API, e' fornito il codice sorgente di
una semplice applicazione, per i vari linguaggi supportati.
- La documentazione
delle API di Straus7. In questo manuale (fornito come file PDF) sono definite
tutte le funzioni disponibili, convenzioni di chiamata con spiegazione dei
messaggi di errore. Ad ogni funzione e' associato un semplice esempio
applicativo, scritto utilizzando vari tipi di linguaggio di programmazione.
Per inviare un messaggio: hsh@iperv.it