几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   DirectDWG (http://www.dimcax.com/hust/forumdisplay.php?f=89)
-   -   【转帖】making progress bu (http://www.dimcax.com/hust/showthread.php?t=17142)

yang686526 2009-05-06 05:25 PM

【转帖】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::oddbline(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


所有的时间均为北京时间。 现在的时间是 08:08 AM.