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
DescrizioneApre 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
DescrizioneChiude 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
DescrizioneChiude 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
DescrizioneImposta 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
DescrizioneImposta 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