Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в Delphi открыть dwg или dxf файлы


Shamansky ©   (2004-11-21 23:24:00) 

Подскажите как в Delphi работать с файлами dwg и dxf, я знаю есть компонент, но он стоит кучу денег, которых пока нету. можно ли как то анализировать dxf файл?


XProger   (2004-11-25 23:59:00) [1]


procedure TScene.Load_DXF(const FileName: string);
var
 f : TextFile;
 wrkString : String;
 group, err : Integer;
 x1, x2, y1, y2, z1, z2, x3, y3, z3 : Single;
begin
x1:=0; x2:=0; x3:=0;
y1:=0; y2:=0; y3:=0;
z1:=0; z2:=0; z3:=0;

AssignFile(f, FileName);
Reset(f);
try
repeat
ReadLn(f, wrkString);
until (wrkString = 'ENTITIES') or eof(f);

while not eof (f) do
begin
ReadLn (f, group);
ReadLn (f, wrkString);
 case group of
  0: begin
     SetLength(Obj.Polygon,Length(Obj.Polygon)+1);
     Obj.Polygon[Length(Obj.Polygon)-1].Color.R:=150;
     Obj.Polygon[Length(Obj.Polygon)-1].Color.G:=150;
     Obj.Polygon[Length(Obj.Polygon)-1].Color.B:=150;
     Obj.Polygon[Length(Obj.Polygon)-1].Color.A:=255;

     SetLength(Obj.Vertex,Length(Obj.Vertex)+1);
     Obj.Vertex[Length(Obj.Vertex)-1].X:=x1;
     Obj.Vertex[Length(Obj.Vertex)-1].Y:=y1;
     Obj.Vertex[Length(Obj.Vertex)-1].Z:=z1;
     Obj.Polygon[Length(Obj.Polygon)-1].Point[1]:=Length(Obj.Vertex)-1;

     SetLength(Obj.Vertex,Length(Obj.Vertex)+1);
     Obj.Vertex[Length(Obj.Vertex)-1].X:=x2;
     Obj.Vertex[Length(Obj.Vertex)-1].Y:=y2;
     Obj.Vertex[Length(Obj.Vertex)-1].Z:=z2;
     Obj.Polygon[Length(Obj.Polygon)-1].Point[2]:=Length(Obj.Vertex)-1;

     SetLength(Obj.Vertex,Length(Obj.Vertex)+1);
     Obj.Vertex[Length(Obj.Vertex)-1].X:=x3;
     Obj.Vertex[Length(Obj.Vertex)-1].Y:=y3;
     Obj.Vertex[Length(Obj.Vertex)-1].Z:=z3;
     Obj.Polygon[Length(Obj.Polygon)-1].Point[3]:=Length(Obj.Vertex)-1;
     end;
  10: val(wrkString, x1, err);
  20: val(wrkString, y1, err);
  30: val(wrkString, z1, err);
  11: val(wrkString, x2, err);
  21: val(wrkString, y2, err);
  31: val(wrkString, z2, err);
  12: val(wrkString, x3, err);
  22: val(wrkString, y3, err);
  32: val(wrkString, z3, err);
  end;
end;
Obj.CalcNormals;
Ready:=true;
except
MessageBox(0,'This is not DFX file.','Error',MB_ICONERROR);
Exit;
end;
CloseFile(f);
end;

Писал в прошлом году, тогда всё работало :)
Но на кривизну кода не смотреть :)


mdw   (2004-11-22 11:27:00) [2]

>Подскажите как в Delphi работать с файлами dwg и dxf
Так же, как и не в Delphi: берешь и работаешь.....
А если серьезно, то:
1. Смотри тему форума.
2. DXF - открытый формат, поэтому берешь спецификацию, читаешь, работаешь с файлом.
3. > я знаю есть компонент, но он стоит кучу денегА компонентов, на эту тему до фига. Только поискать нужно подходящий и рабочий.


Наверх

Титульная страница Поиск, карта сайта Написать письмо