odb Dateien von Abaqus auslesen und bearbeiten



  • Hallo zusammen,

    großes Problem, ich muss in meiner Diplomarbeit odb-Output Dateien von Abaqus mit einem C++ Programm auslesen und bearbeiten.

    Hat irgendjemand damit schon Erfahrungen!? Ich komme nur langsam voran und finde so gut wie keine Hilfen. Das einzige was ich bis jetzt weis:
    Es gibt schon Bibliotheken um diese Dateien einzusehen und schnell auf Werte zugreifen zu können. Diese Header Dateien hab ich auch schon eingebunden, nur leider bekomm ich jetzt beim Öffnen einer odb Datei schon Fehlermeldungen, so dass ich überhaupt nicht zum Auslesen komme.

    Die bisherigen Informationen habe ich aus dem ABAQUS Scripting User's Manual.

    Ich hab zwar während des Studiums schon mit C++ gearbeitet, leider vieles schon wieder vergessen.

    Ich würde mich sehr freuen wenn mir jemand irgendwie weiterhelfen kann. Suche mit diesem Eintrag noch keine konkrete Lösung eines Problems, sondern vielmehr Kontakt zu Leuten die sich mit solch einer Aufgabenstellung schon auseinandergesetzt haben.

    Danke
    Gruß Thomas



  • Hallo Thomas,

    so furchtbar viele Leute, die sich mit der Anwendung dieser speziellen API auskennen, wirst Du hier wohl nicht finden. Aber C++-Know How können wir Dir anbieten. Das von Dir erwähnte Script habe ich hier gefunden. Ist es das, welches Du meinst?

    Was sind das für Fehlermeldungen, die Du bekommst und welche C++-Entwicklungsumgebung benutzt Du? Beim Aufruf welcher Funktion erscheint die Fehlermeldung?
    Wo kann man sich besagte Header-Datei ansehen?

    Gruß
    Werner



  • Das hab ich mir schon gedacht 😉

    Genau dieses Script meinte ich, speziell der Punkt 9.10.2 in dem beschrieben steht wie man mit C++ eine odb Datei öffnet.

    Die Header-Dateien sind bei Abaqus dabei und ich weiss nicht ob man die einfach so kopieren darf?

    Ich arbeite mit Visual Studio 6.0.
    Vielleicht zuerst die Frage, ob Meldungen folgender Art normal sind bei einem simplen 'Hallo Welt!" Programm.
    (erst Programmquellcode dann Meldung beim Ausführen):

    #include <iostream>
    
    using namespace std;
    
    void main()
    {
    	cout<<"Hallo Welt!"<<endl;
    	cin.get();
    }
    

    Meldungen:

    "ntdll.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\kernel32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\EntAPI.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\ADVAPI32.DLL" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\rpcrt4.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\SECUR32.DLL" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\MSVCRT.DLL" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\PSAPI.DLL" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    "C:\WINDOWS\SYSTEM32\netapi32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden.
    Thread 0x360 wurde mit Code 10 (0xA) beendet.
    Das Programm "D:\Kroth\C++\odbladen\odbladen\Debug\odbladen.exe" wurde mit Code 10 (0xA) beendet.

    Sobald ich die Header-Dateien, wie im Abaqus Skript beschrieben, in meinem "Hallo Welt!" Programm includen möchte, fehlen mir die beiden Header-Dateien inttypes.h und stdint.h. Ist das normal? Ich hab diese über Wikipedia gefunden und selbst zu meinem Projekt hinzugefügt. Dann wurde das Programm wie oben beschrieben, also mit der selben Meldung ausgeführt.
    Neuer Programmcode ist nun:

    #include <iostream>
    
    #include <odb_API.h>
    #include <odb_MaterialTypes.h>
    #include <odb_SectionTypes.h>
    
    using namespace std;
    
    void main()
    {
    	cout<<"Hallo Welt!"<<endl;
    	cin.get();
    }
    

    Unter Projekt->Einstellungen->C/C++ habe ich die Verzeichnisse angegeben in denen sich die Header-Dateien befinden.

    Nun erweitere ich den Code nur um den Befehl zum öffnen einer odb-Datei, also:

    #include <iostream>
    
    #include <odb_API.h>
    #include <odb_MaterialTypes.h>
    #include <odb_SectionTypes.h>
    
    using namespace std;
    
    void main()
    {
    	odb_Odb& odb = openOdb("BeispielODB.odb");
    
    	cout<<"Hallo Welt!"<<endl;
    	cin.get();
    }
    

    Jetzt kommen 4 Fehlermeldungen:

    Kompilierung läuft...
    main.cpp
    c:\programme\abaqus\6.6-3\include\atr_translate.h(19) : warning C4800: 'const char *const ' : Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten moeglich)
    c:\programme\abaqus\6.6-3\include\rgnc_region.h(80) : warning C4800: 'long' : Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten moeglich)
    c:\programme\abaqus\6.6-3\include\rgnc_region.h(82) : warning C4800: 'long' : Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten moeglich)
    c:\programme\abaqus\6.6-3\include\rgnc_region.h(93) : warning C4800: 'long' : Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten moeglich)
    c:\programme\abaqus\6.6-3\include\kbeo_sequencebehavioroption.h(51) : warning C4786: 'cow_COW<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> >,cow_
    Virtual<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> > > >' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
    c:\programme\abaqus\6.6-3\include\kbeo_sequencebehavioroption.h(51) : warning C4786: 'cow_COW<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> >,cow_
    Virtual<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtua' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
    c:\programme\abaqus\6.6-3\include\kbeo_sequencebehavioroption.h(51) : warning C4786: '~cow_COW<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> >,cow
    _Virtual<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtu' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
    c:\programme\abaqus\6.6-3\include\kbeo_sequencebehavioroption.h(51) : warning C4786: 'cow_COW<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> >,cow_
    Virtual<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> > > >' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
    warning C4786: 'cow_COW<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBehaviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> >,cow_Virtual<ddr_ShortcutImpl<mdl_1DArrayList<cow_ArrayCOW<kbeC_ConnectorBe
    haviorOption,cow_Virtual<kbeC_ConnectorBehaviorOption> >,kbeC_ConnectorBehaviorOption> > > >' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt
    Linker-Vorgang läuft...
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall odb_String::~odb_String(void)" (??1odb_String@@QAE@XZ)
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "class odb_Odb & __cdecl openOdb(class odb_String const &,bool)" (?openOdb@@YAAAVodb_Odb@@ABVodb_String@@_N@Z)
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall odb_String::odb_String(char const *)" (??0odb_String@@QAE@PBD@Z)
    Debug/odbladen2.exe : fatal error LNK1120: 3 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    odbladen2.exe - 4 Fehler, 9 Warnung(en)

    Die angezeigten Fehler sind alle in den Header-Dateien von Abaqus, das versteh ich nicht.

    Wäre schön wenn Dir irgendwas dazu einfällt 🙂
    Danke schonmal...
    Gruß Thomas



  • Die C4786-Warnungen kannst du beruhigt ignorieren, bei den C4800 solltest du mal nachsehen, was genau in den betroffenen Zeilen passiert. (aber vermutlich haben sich die Erfinder schon etwas dabei gedacht)

    Die LNK-Fehler bedeuten, daß du vergessen hast, die zugehörigen .lib Dateien in dein Projekt einzubinden -> das mußt du auf jeden Fall nachholen.


Anmelden zum Antworten