高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】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
|