| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
25.09.2006, 23:26 | #1 | |
Из DXF в OpenGL
Регистрация: 13.06.2005
Сообщений: 314
|
||
Просмотров: 3860
|
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
dxf - текстовый, хорошо документированный формат, грузи нехочу
OpenGL - графическая 3д библиотека, грузить в нее ниче ненадо, нужно отображать(рисовать) ее средствами пример загрузки линии на delphi procedure GDBObjLine.LoadFromDXF; var byt,code: GDBInteger; begin byt:=readmystrtoint(f); while byt <> 0 do begin if not LoadFromDXFObjShared(f,byt) then if not dxfvertexload(f,10,byt,CoordInOCS.lBegin) then if not dxfvertexload(f,11,byt,CoordInOCS.lEnd) then f.readworld(#10, #13); byt:=readmystrtoint(f); end; format; end; function GDBObjVisible.LoadFromDXFObjShared(var f:filestream;dxfcod:GDBInteger):GDBBoolean; var s:GDBString; begin result:=false; if dxfcod=8 then begin vp.Layer :=gdb.LayerTable.getLayerIndex(readmystr(f)); result:=true end else if dxfcod=370 then begin vp.lineweight :=readmystrtoint(f); result:=true end; end; function dxfvertexload(var f:filestream;dxfcod,currentdxfcod:GDBInteger; var v:gdbvertex):GDBBoolean; var s:GDBString; begin result:=false; if currentdxfcod=dxfcod then begin v.x:=readmystrtodouble(f); result:=true end else if currentdxfcod=dxfcod+10 then begin v.y:=readmystrtodouble(f); result:=true end else if currentdxfcod=dxfcod+20 then begin v.z:=readmystrtodouble(f); result:=true end; end; function readmystrtoint(var f:filestream):GDBInteger; var code:GDBInteger; s:GDBString; begin result:=0; s := f.readworld(#10, #13); val(s,result,code); end; |
|||