Einzelnen Beitrag anzeigen

Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#1

wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 21. Mai 2012, 19:54
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
Do the best job, leave the rest in the hands of God!

Geändert von Boyington (21. Mai 2012 um 20:03 Uhr)
  Mit Zitat antworten Zitat