Ich freue mich sehr darüber, dass ich eine Lösung gefunden habe.
Im prinzip hatte der Beitrag im Link der Frage recht.
Es waren nur noch wenige Modifikationen notwendig.
Insbesondere beim Header (Anzahl der Dreiecke für die binäre Datei).
Hier der Code, falls mal jemand ein ähnliches Problem zu lösen hat.
Code:
var j : integer;
i : Integer;
header : TSTLHeader;
dataFace : TSTLFace;
list : TAffineVectorList;
const
cHeaderTag = 'GLScene STL export';
begin
FillChar(header.dummy[0], SizeOf(header.dummy), 0);
Move(cHeaderTag, header.dummy[0], Length(cHeaderTag));
//calculate header count
for j := 0 to objects.Count - 1 do
begin
list:=TGLFREeform(objects[j]).MeshObjects.ExtractTriangles;
header.nbFaces:= header.nbFaces + list.Count div 3;
end;
aStream.Write(header, SizeOf(header));
for j := 0 to objects.Count - 1 do
begin
list:=TGLFREeform(objects[j]).MeshObjects.ExtractTriangles;
try
i:=0; while i<list.Count do begin
dataFace.normal:=CalcPlaneNormal(list[i], list[i+1], list[i+2]);
dataFace.v1:=VectorTransform(list[i],TGLFREeform(objects[j]).AbsoluteMatrix);
dataFace.v2:=VectorTransform(list[i+1],TGLFREeform(objects[j]).AbsoluteMatrix);
dataFace.v3:=VectorTransform(list[i+2],TGLFREeform(objects[j]).AbsoluteMatrix);
aStream.Write(dataFace, SizeOf(dataFace));
Inc(i, 3);
end;
finally
list.Free;
end;
end;
Danke an alle die diesen Beitrag gelesen haben und ihn vielleicht interessant finden.