VIS- und Uni-Logo
Blindenversion home uni uni suche suche sitemap sitemap kontakt kontakt
unilogo Universität Stuttgart
Institut für Visualisierung und Interaktive Systeme

Raumvisualisierung mit Hilfe von BSP-Bäumen

englische VersionDruckversionBlindenversion
 

Aufgabenstellung   |   Pseudocode   |   DXF Leser   |   Kamera   |   Vektorgeometrie / Misc   |   Probleme

DXF einlesen

Die DxfReader Klasse liest aus einer DXF Datei die 3dfaces aus. Nach aussen istdie Methode StartParser und Get3DFace essentiell, um die Datei zu parsen. Wichtig ist hier, dass im Koordinatensystem der dxf Datei im Vergleich zu OpenGL die y und z Koordinaten vertauscht sind. Das wurde in der Methode GetCoord schon berücksichtigt. Ferner arbeitet die (externe) Funktion checkTriangle(face, double) mit einem Epsilon-Wert, um eine genaue Überprüfung gegen 0 zu umgehen (führt bei sehr kleinen Werten zu Fehlern).

Quellenangaben:
AutoCad dxf Spezifikation v.u15.0.02 (http://www.autodesk.com/techpubs/autocad/acad2000/dxf/index.htm)
(alternativ zu URL: http://www.google.com/search?hl=en&q=autocad+dxf+file+format)

Klassenvariablen:

Variablen Typ Erklärung  
*fp FILE Das Dateihandle für die zu öffnende dxf Datei  
isOpen boolean true, wenn die Datei offen ist, ansonsten false  
bufferLine int die aktuell eingelesene Zeile der Datei  
*bufferPtr char pointer zum Puffer, in den die Datei eingelesen wird  
*tokenPtr char pointer auf den aktuell einzulesenden Token  
groupcode code enthält die Gruppe und den Wert des aktuellen Tokens  


Klassenmethoden:

Klassenaufruf Rückgabe Erklärung  
SafeOpen(const char *filename) void öffnet eine Datei mit Fehlerbehandlung  
SafeClose(void) void schließt eine Datei mit Fehlerbehandlung  
SafeRead(void *buffer, int size) void liest aus einer Datei in den bufferPtr ein  
FileLength(void) long liefert die Grösse der geöffneten Datei zurück  
is3DFace(void) boolean true, falls der aktuelle Token ein 3d Face ist (Definition siehe Dxf Datei)
false, sonst
 
CheckToken(const char *group, const char *value) boolean true, falls beim aktuellen Token Gruppe und Wert übereinstimmen
false, sonst
 
CheckToken(const char *group) boolean true, falls beim aktuellen Token Gruppe
false, sonst
 
GetCoord(face &newFace) boolean initialisiert newFace mit den Koordinaten eines 3D Faces aus der Datei  
StartParser(void) void initialisiert tokenPtr und bufferLine  
DeleteBuffer(void) void gibt allokierten Speicher von bufferPtr wieder frei  
Get3DFace(FaceList *&facelist) void liest sämtliche 3D Faces aus einer Dxf Datei in die FaceList facelist  
ReadFile(void) int liest Dateiinhalt in einen char Buffer  
GetToken(void) boolean Liest einen Token, bestehend aus 2 Zeilen des Puffers ein. Entfernt Whitespace
und EOL Zeichen.