
12.08.2016, 07:46
|
 |
LMD-DML
|
|
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
|
|
ТС похоже немного заблуждается, если судить по описанию бинарной версии данного формата, то структура записей должна быть слегка другой, с чтением из буфера не дружу, но вот такой вариант загрузил координаты треугольников тестового чайника из teapot.stl
Код:
type
TSTLItem = record
ni: single;
nj: single;
nk: single;
x1: single;
y1: single;
z1: single;
x2: single;
y2: single;
z2: single;
x3: single;
y3: single;
z3: single;
tc: word;
end;
TSTLStruct = record
Comm : String[80];
Count : DWORD;
Items : Array Of TSTLItem;
end;
var
Data : TSTLStruct;
StlFile: TFileStream;
b: dword;
begin
StlFile:= TFileStream.Create(FileName, fmOpenRead);
StlFile.Seek(0, soFromBeginning);
StlFile.Read(Data.comm,80);
StlFile.Read(Data.Count,4);
SetLength(Data.Items,Data.Count);
for b:= 0 to Data.Count-1 do
begin
StlFile.Read(Data.Items[b].ni,4);
StlFile.Read(Data.Items[b].nj,4);
StlFile.Read(Data.Items[b].nk,4);
StlFile.Read(Data.Items[b].x1,4);
StlFile.Read(Data.Items[b].y1,4);
StlFile.Read(Data.Items[b].z1,4);
StlFile.Read(Data.Items[b].x2,4);
StlFile.Read(Data.Items[b].y2,4);
StlFile.Read(Data.Items[b].z2,4);
StlFile.Read(Data.Items[b].x3,4);
StlFile.Read(Data.Items[b].y3,4);
StlFile.Read(Data.Items[b].z3,4);
StlFile.Read(Data.Items[b].tc,2);
end;
StlFile.Free;
end;
|