![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в 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. > я знаю есть компонент, но он стоит кучу денегА компонентов, на эту тему до фига. Только поискать нужно подходящий и рабочий.