Hallo Leute,
weiß Jemand vielleicht, wie ich alle Koordinaten aus einem Textdokument (*.stl Datei im
ASCII Format) einlesen und dann in einer Liste speichern kann? Da ich mich mit Text- oder StringVerarbeitung in Delphi nicht gut auskenne.
*.stl Datei (
ASCII Format) sieht wie folgendes aus:
Code:
solid
ascii
facet normal 2.445222e-016 0.000000e+000 1.000000e+000
outer loop
vertex -2.007874e+000 1.968504e+000 5.905512e-002
vertex -2.007874e+000 -1.968504e+000 5.905512e-002
vertex -1.574803e-001 -1.968504e+000 5.905512e-002
endloop
endfacet
facet normal 2.445222e-016 -5.090141e-032 1.000000e+000
outer loop
vertex -1.574803e-001 -1.968504e+000 5.905512e-002
vertex -1.574803e-001 1.968504e+000 5.905512e-002
vertex -2.007874e+000 1.968504e+000 5.905512e-002
endloop
endfacet
.
.
.
.
facet normal 7.071068e-001 -1.471962e-016 7.071068e-001
outer loop
vertex -1.574803e-001 1.968504e+000 5.905512e-002
vertex -1.574803e-001 -1.968504e+000 5.905512e-002
vertex -3.937008e-002 -1.968504e+000 -5.905512e-002
endloop
endfacet
endsolid
Jedes 3D-Objekt besteht aus vielen kleinen Dreiecken und jedes Dreieck besteht aus 1x normal (Nomalvektor) und 3x vertex (Koordinaten der 3 Eckpunkten von jedem Dreieck).
Meine Frage ist: wie kann ich vom Anfang bis zum Ende der *.stl Datei alle Normalvektoren (als type: TVektor) und alle Koordinaten der 3 Eckpunkten von jedem Dreieck in einer Liste speichern (die Liste soll dynamisch sein, weil die Länge der Liste vorher nicht bekannt ist)?
Typen sehen ungefähr wie folgendes aus:
Code:
type
TVektor = record
x, y, z: real;
end;
TDreieck = record
n: TVektor; // n ist Normalvektor
p: array[1..3] of TVektor; //p hat Koordinaten von 3 Eckpunkten
end;
.
.
.
.
Var
hDreieck : ^TDreieck;
Ich bitte euch um die Hilfe und bin sehr dankbar für die Antwort wie immer
Gruss
Lee