几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】cant write radial dimension to dxf (http://www.dimcax.com/hust/showthread.php?t=15379)

yang686526 2009-05-04 05:37 PM

【转帖】cant write radial dimension to dxf
 
cant write radial dimension to dxf
cant write radial dimension to dxf
i am trying to export a radial dimension to dxf (not when writing to dwg). i can create the radial-dimension without any errors, but when i write to the file using writefile(), i get an exception - unhandled exception at 0x7c9377ca in export_drg.exe: 0xc0000005: access violation writing location 0x00030ffc.
oddbradialdimensionptr pdimension = oddbradialdimension::createobject();
// add the entity to the parent block.
cdwgplaceholder* pholder = static_cast<cdwgplaceholder*>(pblockholder); oddbblocktablerecordptr pblock = pholder->mobjectid.safeopenobject(oddb::kforwrite);
pentity->setdatabasedefaults (m_pdb);
oddbobjectid dimensionholder = pblock->appendoddbentity (pentity);
// general dimension properties
pdimension->setdimensiontext (dimtext);
pdimension->settextrotation (rotationangle);
pdimension->settextposition (odgepoint3d (textmidx, textmidy, 0.0));
// type specific properties
pdimension->setcenter (odgepoint3d (centerx, centery, 0.0));
pdimension->setchordpoint (odgepoint3d (chordpointx, chordpointy, 0.0));
pdimension->setleaderlength (leaderlength);*/
hresult __hresult__ = cdwgplaceholder::createholder (ppresult);
cdwgplaceholder* __pholder__ = static_cast<cdwgplaceholder*(*ppresult);
__pholder__->mobjectid = pobject;
couple of interesting observations:
i did not get this error when i was using 1.14.
also, i dont get this error when i write a dwg 2.1.
could there be any specific changes to radial dimensions when writing to a dxf...?
thank you.
revised minimal code:
oddbradialdimensionptr pdimension = oddbradialdimension::createobject();
// add the entity to the parent block.
oddbobjectid dimensionholder = addentitytoblock (pblockholder,pdimension);
cdwgplaceholder* pholder = static_cast<cdwgplaceholder*>(pblockholder);
oddbblocktablerecordptr pblock = pholder->mobjectid.safeopenobject(oddb::kforwrite);
pdimension->setdatabasedefaults (m_pdb);
oddbobjectid dimensionholder = pblock->appendoddbentity (pdimension);
hresult __hresult__ = cdwgplaceholder::createholder (ppdimensionholder);
cdwgplaceholder* __pholder__ = static_cast<cdwgplaceholder*> (*ppdimensionholder);
__pholder__->mobjectid = dimensionholder;
similar code works fine for diametric/linear dimensions... i wonder why..?
thank you.
apparently, my error had nothing to do with radial dimensions. sorry.
kedar


所有的时间均为北京时间。 现在的时间是 09:40 PM.