• Non ci sono risultati.

CAPITOLO 2 VIRTUAL CRACK CLOSURE TECHNIQUE

3.2 API per Straus7 – Application Programming Interface

3.2.6 Collegamento all’API con Visual Basic e VBA

3.2.6.1 Stringhe API

L'API Straus7 utilizza stringhe con terminazione-null. Questi sono sempre dichiarati come ByVal StringName As String. Si noti che le stringhe di Visual Basic verranno dichiarate come array di lunghezza fissa, ad es. Dim FileName As String * 255, una chiamata API che restituisce la stringa terminerà-null la stringa tramite CHAR = 0 ad un certo punto.

Capitolo 3 50

3.2.6.2 Array API

Molte funzioni API di Straus7 utilizzano array come longint o double come parametri. Questi sono sempre passati per riferimento e dichiarato come ByRef LongArray As Long o ByRef DoubleArray As Double. La matrice che passa sintassi LongArray () As long o DoubleArray () As Double non dovrebbe essere usato con l'API Straus7.

Gli array devono essere dichiarati come Dim LongArray (n) As Long o Dim DoubleArray (n) As Double, dove n è un valore intero. Passando questi array per una funzione API Straus7 è essenziale che venga passato il primo indice dell'array.

L'esempio seguente illustra ulteriormente la procedura corretta: dichiarazione di funzione:

Declare Function St7GetNodeXYZ & Lib "St7API.DLL" (ByVal uID As long, ByVal NodeNum As Long, ByRef XYZ As Double)

dichiarazione variabile:

Dim XYZ (2) As Double

chiamata di funzione:

ErrorCode = St7GetNodeXYZ (1, NodeNumber, XYZ (0))

3.2.6.3 API Boolean.

Molte funzioni API di Straus7 utilizzano booleani o matrici di valori booleani come parametri. Queste devono sempre passare come Byte, (sia per valore che per riferimento).

Questo è necessario perché l'API Straus7 utilizza la rappresentazione booleana a byte singolo, che è compatibile con il tipo Byte. Il tipo booleano è lungo due byte, quindi non è compatibile. Vero i valori booleani saranno quindi rappresentati da Byte = 1 e falsi valori booleani essere rappresentato da Byte = 0.

3.3

API Utilizzate

3.3.1 St7Init

Descrizione

Inizializza la DLL dell'API Straus7. Questa funzione dovrebbe essere chiamata prima di richiamare le successive API.. Se questa funzione non viene chiamata per prima, tutte le successive API chiamate verranno restituite con un codice di errore.

Sintassi long St7Init() Errore ERR7_InvalidRegionalSettings, ERR7_InvalidDLLsPresent, ERR7_NoError, ERR7_UnknownError

3.3.2 St7OpenFile

Descrizione

Apre un file di modello Straus7. Questa chiamata è richiesta prima che qualsiasi dato possa essere esaminato o scritto su qualsiasi file di modello Straus7. Un nuovo file Straus7 può essere aperto senza chiudere un file attualmente aperto. Pertanto è possibile aprire più file contemporaneamente. Ogni file che deve essere aperto deve essere specificato con l'uso di un numero ID del file.

Sintassi

long St7OpenFile(long uID, char* FileName, char* ScratchPath)

Parametri di Input: uID

Numero di file del modello Straus7. FileName

Percorso completo e nome file per il modello Straus7. ScratchPath

Un percorso valido da utilizzare per l'archiviazione temporanea. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed,

ERR7_CannotReadFile, ERR7_FileAlreadyOpen, ERR7_FileIsNewer, ERR7_FileNotFound, ERR7_FileNotSt7, ERR7_InvalidFileName, ERR7_InvalidFileUnit, ERR7_InvalidScratchPath, ERR7_NoError

3.3.3 St7NewFile

Descrizione

Crea e apre un nuovo file di modello Straus7. Si noti che se un file esistente ha lo stesso nome, il file esistente rimarrà aperto e non verrà sovrascritto fino a quando il nuovo file non sarà salvato.

Capitolo 3 52 long St7NewFile(long uID, char* FileName, char*

ScratchPath) Parametri di Input: uID

Numero di file del modello Straus7. FileName

Percorso completo e nome file per il modello Straus7. ScratchPath

Un percorso valido da utilizzare per l'archiviazione temporanea. Errore ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileAlreadyOpen, ERR7_InvalidFileName, ERR7_InvalidFilePath, ERR7_InvalidFileUnit, ERR7_InvalidScratchPath, ERR7_NoError

3.3.4 St7CloseFile

Descrizione

Chiude un file di modello Straus7 aperto. Tutti i file scratch associati che potrebbero essere stati creati vengono automaticamente cancellati.

Sintassi

long St7CloseFile(long uID) Parametri di Input:

uID

Numero di file del modello Straus7. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed,

ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_NoError, ERR7_UnknownError

3.3.5 St7SaveFile

Descrizione

Salva un file modello Straus7 specificato. Il file rimane aperto dopo la chiamata. Questa funzione non può essere chiamata se al file sono associati file di risultati aperti.

Sintassi

long St7SaveFile(long uID) Parametri di Input: uID

Numero di file del modello Straus7. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed,

ERR7_CannotSaveFile, ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_NoError

3.3.6 St7OpenResultFile

Descrizione

Apre un file dei risultati associato a un modello Straus7 specificato. Tutti i tipi di file dei risultati possono essere aperti.

Sintassi

long St7OpenResultFile(long uID, char* FileName, char* SpectralName, bool Combinations, long* NumPrimary, long* NumSecondary)

Parametri di Input: uID

Numero di file del modello Straus7. FileName

Percorso completo e nome file per il modello Straus7. SpectralName

Percorso completo e nome file per il risultato spettrale da combinare. Una stringa nulla può essere passata per combinarsi con il file spettrale predefinito come definito dall'utente nel modello Straus7.

Combinazioni

btTrue per calcolare tutte le combinazioni aperte di risultati secondari. Il "Risultato salvato" settato in Opzione Risultati determina se vengono utilizzate combinazioni precedentemente calcolate: per Prompt, le combinazioni vengono ricalcolate. Nota che le fasce di risultati non vengono calcolati - usa St7GenerateEnvelopes per queste.

Parametri di Output: NumPrimary

Numero di casi di risultato primari disponibili. NumSecondary

Numero di casi di risultato secondari disponibili (escluse le fasce). Errore ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_InvalidResultFile, ERR7_NoError

3.3.7 St7CloseResultFile

Descrizione

Chiude qualsiasi file dei risultati aperto associato a un modello Straus7 specificato. Sintassi

long St7CloseResultFile(long uID)Parametri di Input uID

Numero di file del modello di modello Straus7. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed,

ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_NoError, ERR7_ResultFileNotOpen

Capitolo 3 54

3.3.8 St7SetToolOptions

Descrizione

Imposta le opzioni dello strumento per il modello specificato. Sintassi

long St7SetToolOptions(long uID, long* Integers, double* Doubles)

Parametri di Input: uID

Numero di file del modello di modello Straus7. Integers[0..13]

[ipToolOptsElementTolType] - Tipo di tolleranza degli elementi, entrambi ztAbsolute o ztRelative.

[ipToolOptsGeometryAccuracyType] - Tipo di precisione geometrica, o ztAbsolute o ztRelative.

[ipToolOptsGeometryFeatureType] - Tipo di lunghezza della feature geometria, o ztAbsolute o ztRelative.

[ipToolOptsZipMesh] – Cucitura Mesh, uno di zmAsNeeded, zmOnSave o zmOnRequest.

[ipToolOptsNodeCoordinate] - Nuove coordinate del nodo, una di ncAverage, ncLowerNode, ncHigherNode o ncSelectedNode. [ipToolOptsNodeAttributeKeep] - Tenere l'attributo, uno di naLower, naAlteriore o naAccumulato.

[ipToolOptsAllowZeroLengthLinks] - Permetti anche collegamenti a lunghezza zero btTrue o btFalse.

[ipToolOptsAllowZeroLengthBeams] - Permetti anche raggi di lunghezza zero btTrue o btFalse.

[ipToolOptsAllowSameProperty] - Consenti duplicati di un diverso proprietà, btTrue o btFalse.

[ipToolOptsCompatibleTriangle] - Anche le facce triangolari compatibili btTrue o btFalse.

[ipToolOptsSubdivideBeams] - Suddividi solo i fasci normali btTrue o btFalse.

[ipToolOptsPlateAxisAlign] - Allineamento dell'asse, paCentroid o paCurvilinear.

[ipToolOptsCopyMode] - Modalità di copia, sia cmRoot o cmSibling. [ipToolOptsAutoCreateProperties] - Crea automaticamente nuove proprietà, btTrue o btFalse.

[ipToolOptsElementTol] - Tolleranza dell'elemento zip. [ipToolOptsGeometryAccuracy] - Precisione geometrica.

[ipToolOptsGeometryFeatureLength] - Lunghezza della geometria. Errore ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_InvalidToleranceType, ERR7_InvalidToolOptsCopyOptions, ERR7_InvalidToolOptsSubdivideOptions, ERR7_InvalidToolOptsZipOptions, ERR7_InvalidZipTolerance, ERR7_NoError, ERR7_ResultFileIsOpen

3.3.9 St7SetUnits

Descrizione

Imposta il sistema di unità per un modello Straus7 specificato. Sintassi

long St7SetUnits(long uID, long* Units) Parametri di Input:

uID

Numero di file del modello di modello Straus7. Units[0..kLastUnit-1]

[ipLENGTHU] - luMETRE, luCENTIMETRE, luMILLIMETRE, luFOOT or luINCH. [ipFORCEU] - fuNEWTON, fuKILONEWTON, fuMEGANEWTON, fuKILOFORCE, fuPOUNDFORCE, fuTONNEFORCE or fuKIPFORCE.

[ipSTRESSU] - suPASCAL, suKILOPASCAL, suMEGAPASCAL, suKSCm, suPSI, suKSI or suPSF.

[ipMASSU] - muKILOGRAM, muTONNE, muGRAM, muPOUND or muSLUG. [ipTEMPERU] - tuCELSIUS, tuFAHRENHEIT or tuKELVIN.

[ipENERGYU] - euJOULE, euBTU, euFTLBF or euCALORIE. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed,

ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_InvalidUnits, ERR7_NoError, ERR7_ResultFileIsOpen

3.3.10 St7SetNodeXYZ

Descrizione

Imposta la posizione di un nodo specificato nel sistema di coordinate cartesiane globali. Un nuovo nodo viene creato se il numero del nodo non esiste già. Se il nuovo numero del nodo non è consecutivo con il totale del nodo esistente sono presenti una serie di nodi creati all'origine in modo tale che l'elenco dei nodi rimanga contiguo.

Capitolo 3 56

Sintassi

long St7SetNodeXYZ(long uID, long NodeNum, double* XYZ) Parametri di Input:

uID

Numero di file del modello di modello Straus7. NodeNum

Il numero di nodo specificato. XYZ[0..2]

La posizione del nodo come un array con 3 elementi, specificando la posizione secondo il sistema di coordinate cartesiane globali.

Errore

ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_InvalidEntityNumber,

ERR7_InvalidFileUnit, ERR7_NoError, ERR7_ResultFileIsOpen, ERR7_UnknownError

3.3.11 St7SetElementConnection

Descrizione

Imposta la connettività nodale e l'ID proprietà per un elemento specificato. Una nuova entità viene creata se il numero dell'elemento non esiste già. Se il numero del nuovo elemento non è consecutivo con l'elemento totale esistente una serie di elementi nulli sono creati in modo tale che l'elenco degli elementi resti contiguo. Questi elementi nulli non hanno alcuna connettività o ID di proprietà assegnato.

Sintassi

long St7SetElementConnection(long uID, long Entity, long EltNum, long PropNum, long* Connection)

Parametri di Input: uID

Numero di file del modello di modello Straus7. Entity

Tipo di elemento Straus7, uno di tyBEAM, tyPLATE o tyBRICK. EltNum

Il numero dell'elemento specificato. PropNum

Il numero ID della proprietà o il tipo di collegamento da assegnare all'elemento. Connection[0..kMaxElementNode]

[0] - Numero di nodi nell'elemento. [1..20] - Numeri del nodo nell'elemento. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_InvalidEntity,

ERR7_InvalidEntityNodes, ERR7_InvalidEntityNumber, ERR7_InvalidFileUnit, ERR7_InvalidLinkType, ERR7_NoError,

3.3.12 St7SetNodeRestraint6

Descrizione

Imposta le condizioni di vincolo sul nodo specificato nell'UCS specificato. Sintassi

long St7SetNodeRestraint6(long uID, long NodeNum, long CaseNum, long UCSId, long* Status, double* Doubles) Parametri di Input:

uID

Numero di file del modello di modello Straus7. NodeNum

Numero del nodo. CaseNum

Numero di caso della libertà. UCSId

Numero ID UCS. Status[0..5]

Un array di 6 elementi che descrive le condizioni di vincolo per i sei DoF al nodo specificato. Status [i-1] = btTrue indica che il DoF è

trattenuto. Il DoF è vincolato secondo la convenzione dell'asse 123456 nell'UCS specificato.

Doubles[0..5]

Un array di 6 elementi che descrive le condizioni di spostamento forzate per il sei DoF nel nodo specificato. Doppio [i-1] descrive lo spostamento di

l'ith DoF secondo la convenzione dell'asse 123456 nell'UCS specificato. Errore

ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_InvalidEntityNumber, ERR7_InvalidFileUnit, ERR7_InvalidFreedomCase,

ERR7_InvalidUCSID, ERR7_NoError, ERR7_ResultFileIsOpen

3.3.13 St7SetNodeForce3

Descrizione

Imposta la forza del punto che agisce sul nodo specificato nel Sistema globale di coordinate cartesiane.

Sintassi

long St7SetNodeForce3(long uID, long NodeNum, long CaseNum, double* Doubles)

Parametri di Input: uID

Numero di file del modello di modello Straus7. NodeNum

Il numero di nodo specificato. CaseNum

Il numero di caso di carico specificato. Doubles[0..2]

Un array di 3 elementi che descrive la forza nodale nella coordinata cartesiana XYZ nel sistema per il nodo specificato.

Capitolo 3 58

Errore

ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_InvalidEntityNumber, ERR7_InvalidFileUnit, ERR7_InvalidFreedomCase,

ERR7_InvalidLoadCase, ERR7_InvalidUCSID, ERR7_NoError, ERR7_ResultFileIsOpen

3.3.14 St7NewPlateProperty

Descrizione

Crea una nuova proprietà piastra. Sintassi

long St7NewPlateProperty(long uID, long PropNum, long PlateType, long MaterialType, char* PropName)

Parametri di Input: uID

Numero di file del modello di modello Straus7. PropNum

Numero di proprietà del Plate. PlateType

Tipo di elemento piastra, uno di kPlateTypeNull, kPlateTypePlaneStress, kPlateTypePlaneStrain, kPlateTypeAxisymmetric, kPlateTypePlateShell, kPlateTypeShearPanel, kPlateTypeMembrane o kPlateTypeLoadPatch. MaterialType

Tipo di materiale, uno di kMaterialTypeNull, kMaterialTypeIsotropic,

kMaterialTypeOrthotropic, kMaterialTypeAnisotropic, kMaterialTypeRubber, kMaterialTypeSoil, kMaterialTypeLaminate, kMaterialTypeUserDefined, kMaterialTypePly o kMaterialTypeFluid.

PropName

Nome della proprietà della Plate. Errore ERR7_APINotInitialised, ERR7_APINotLicensed, ERR7_FileNotOpen, ERR7_IncompatibleMaterialCombination, ERR7_InvalidFileUnit, ERR7_InvalidMaterialType, ERR7_InvalidPlateType, ERR7_InvalidPropertyNumber, ERR7_NoError, ERR7_PropertyAlreadyExists, ERR7_ResultFileIsOpen

3.3.15 St7SetPlateThickness

Descrizione

Imposta lo spessore per la proprietà piastra specificata. Sintassi

long St7SetPlateThickness(long uID, long PropNum, double* Doubles)

uID

Numero di file del modello di modello Straus7. PropNum

Numero di proprietà del Plate. Doubles[0..1]

Una matrice a 2 elementi contenente i valori di spessore della membrana e della flessione rispettivamente.

Errore

ERR7_APINotInitialised, ERR7_APINotLicensed,

ERR7_FileNotOpen, ERR7_InvalidFileUnit, ERR7_NoError, ERR7_PlateDoesNotHaveThickness, ERR7_ResultFileIsOpen, ERR7_UnknownProperty