B
Das Auslesen von binären STLs geht jetzt auch ist nur etwas Schreibarbeit. Zum Abschluss den neuen Quelltext falls es noch wer braucht:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream bind;
bind.open("Spindel.stl", ios::in|ios::binary);
if (bind.good()) {
bind.seekg(0L,ios::end);
cout << "Groesse in Bytes: " << bind.tellg() << endl;
bind.seekg(80L,ios::beg); //80L Verschiebt Dateizeiger 80 Bytes Richtung Dateiende
unsigned long int anzDr;
bind.read((char*)&anzDr, sizeof(anzDr));
cout << "Anzahl der Dreiecke: " << anzDr << endl;
for(unsigned int i = 0; i < anzDr; i++) {
//Dreieck
//Normalenvektor
float nVekKo1;
float nVekKo2;
float nVekKo3;
bind.read((char*)&nVekKo1, sizeof(nVekKo1));
bind.read((char*)&nVekKo2, sizeof(nVekKo2));
bind.read((char*)&nVekKo3, sizeof(nVekKo3));
cout << "Normalenvektor: " << nVekKo1 << " "
<< nVekKo2 << " " << nVekKo3 << endl;
//Eckpunkt 1
float pkt1Ko1;
float pkt1Ko2;
float pkt1Ko3;
bind.read((char*)&pkt1Ko1, sizeof(pkt1Ko1));
bind.read((char*)&pkt1Ko2, sizeof(pkt1Ko2));
bind.read((char*)&pkt1Ko3, sizeof(pkt1Ko3));
cout << "Eckpunkt 1: " << pkt1Ko1 << " "
<< pkt1Ko2 << " " << pkt1Ko3 << endl;
//Eckpunkt 2
float pkt2Ko1;
float pkt2Ko2;
float pkt2Ko3;
bind.read((char*)&pkt2Ko1, sizeof(pkt2Ko1));
bind.read((char*)&pkt2Ko2, sizeof(pkt2Ko2));
bind.read((char*)&pkt2Ko3, sizeof(pkt2Ko3));
cout << "Eckpunkt 2: " << pkt2Ko1 << " "
<< pkt2Ko2 << " " << pkt2Ko3 << endl;
//Eckpunkt 3
float pkt3Ko1;
float pkt3Ko2;
float pkt3Ko3;
bind.read((char*)&pkt3Ko1, sizeof(pkt3Ko1));
bind.read((char*)&pkt3Ko2, sizeof(pkt3Ko2));
bind.read((char*)&pkt3Ko3, sizeof(pkt3Ko3));
cout << "Eckpunkt 3: " << pkt3Ko1 << " "
<< pkt3Ko2 << " " << pkt3Ko3 << endl;
//Attribute byte count (i.d.R. gleich Null)
unsigned short int abc;
bind.read((char*)&abc, sizeof(abc));
cout << abc << endl;
}
}
return 0;
}
Damit ist das Thema erledigt.