Показать сообщение отдельно
  #3  
Старый 12.08.2016, 07:46
Аватар для Alegun
Alegun Alegun вне форума
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;
Ответить с цитированием