几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】deep cloning from one dwg to another (http://www.dimcax.com/hust/showthread.php?t=15656)

yang686526 2009-05-04 07:16 PM

【转帖】deep cloning from one dwg to another
 
deep cloning from one dwg to another
deep cloning from one dwg to another
hi,
i'm trying to deep clone a block definition from one database to another, but i keep getting a crash on the call. looking at the call stack, it seems that the error code is ewrongdatabase. can anyone tell me what i've set up incorrectly? my guess is that the destination id is in the destination database, but the deepclone call is using the source database, but i can;t see how to get round this.
this is the relevant code snippet:
---------------------------------------------------------------------------
pdestblocks = pdestdb->getblocktableid().safeopenobject();
oddbobjectid destid = pdestblocks->id();
oddbobjectid srcid = psrcblock->id(); // srcblock is open already
oddbobjectidarray theidarray;
theidarray.append(srcid);
oddbidmappingptr pmapping = oddbidmapping::createobject();
pmapping->setdestdb(pdestdb);
psrcdb->deepcloneobjects(theidarray, destid, *pmapping, oddb::kdrcignore);
---------------------------------------------------------------------------
regards
ali smith
hi,
oddbdatabase::deepcloneobjects() supports cloning within a single database.
if you need to clone objects from one database to another (between databases), use wblockcloneobjects() method.
regards,
sergey vishnevetsky
ok, many thanks, i'll give it a try.
so, to clone a block definition from one database to another, i need to iterate through the block definition block, calling wcloneobjects() once for the block definiton, as well as once with an array of all the entities that belong to that block (which define how to draw it). is that correct?
if so, what happens about references in the block and its sub-entities to things like dim stayle, text style, etc? do they have to be cloned as well to the new database?
using wblockcloneobjects() you need to specify only block reference. other objects it depend on (block table record, entities contained in it etc.) will be cloned to another database automatically.
sergey slezkin


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