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.