查看单个帖子
旧 2009-05-06, 05:25 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】making progress bu

making progress but.....
making progress but.....
well, i was able to initialize the dwgdirect libraries and open a drawing. the problem now is that after opening a drawing using exhostappservices::readfile(....), when i close the application i get an exception. what am i supposed to do when i am finished with the database. i know i have to call oddbdatabase::release() but am i supposed to call a function to close the database? if so, which is it? i don't see a closefile, closedrawing, closedatabase function anywhere in the odddatabase class.
any help?
mike b
quote:
originally posted by mikeb
well, i was able to initialize the dwgdirect libraries and open any help?
mike b
with addition to the above, i have tried to add a line to the database and i get the following linker error :
code:
link : warning lnk4098: defaultlib "msvcrt" conflicts with use of other libs; use /nodefaultlib:library
dwgdoc.obj : error lnk2001: unresolved external symbol "public: __thiscall oddbline:ddbline(class odgepoint3d const &,class odgepoint3d const &)" (??0oddbline@@qae@abvodgepoint3d@@0@z)
debug/hollowcoredetailer.exe : fatal error lnk1120: 1 unresolved externals
now i have #included dbline.h and i am sure i have all the required .lib files include and the necessary headers.
here is the code i have:
code:
odrxobjectimpl<exhostappservices> svcs;
oddb::measurementvalue measure = oddb::kenglish;
m_pdb = svcs.createdatabase(true, measure);

odgepoint3d sp(0,0,0);
odgepoint3d ep(100, 0, 0);
oddbline ln(sp, ep);

oddbblocktablerecordptr pspace = m_pdb->getactivelayoutbtrid().safeopenobject(oddb::kforwrite);
pspace->appendoddbentity(&ln);
now i don't have any problems with the odgepoint3d class objects with respect to the linker, so, is there any suggestions?
mike b
quote:
originally posted by mikeb
with addition to the above, i have tried to add a line to the [/code]
now i don't have any problems with the odgepoint3d class objects with respect to the linker, so, is there any suggestions?
mike b
hmmm, is this a bug? create a line object without the initialization and set the start and end points using the setstartpoint(...) and setendpoint(...) functions, i do not have a problem with the linker.
it appears that the initialization ctor is the problem? undefined?
mike b
the right code should be:
oddblineptr pline = oddbline::createobject();
pline->setstartpoint(...);
pline->setendpoint(...);
// ...
pspace->appendoddbentity(pline);
do not use local variables for entities and db objects - they must be created by the createobject() function and by using smart pointers.
objectarx allow different constructors for db objects but in dwg direct only the default contstructors are used; so initialize the objects use their set functions.
hope this helps.
best regards
chudomir
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)