![]() |
【转帖】problem with gettransformedcopy
problem with gettransformedcopy
problem with gettransformedcopy hi, i am facing problem in transformation .i tried with odreadex example.i want to transform entities before extracting data for each entity.initially i tried using transformby.but suppose a block is transformed 8 times in a file then it is displayed only once using transformby. i think i need to open entity in write mode for transformby so its data is changed after transformation.then i tried with gettransformedcopy. but it gives null id when control goes to dbdumper::dumpentity function.i am using following code. void dbdumper::dumpblocks(oddbdatabase* pdb, std(ostream) & os) {............. ................... for (; !pentiter->done(); pentiter->step())// for each entity in the block { oddbobjectidarray blockrefids; pblock->getblockreferenceids(blockrefids, true, false); oddbblockreferenceptr pblkref ; oduint16 temp,intcount=0; temp= blockrefids.size(); if (intcount < blockrefids.size()){ for ( intcount = 0; intcount < blockrefids.size(); ++intcount){ if (!blockrefids[intcount].isnull()){ pblkref=blockrefids[intcount].safeopenobject(); odgematrix3d transmat=pblkref->blocktransform(); oddbentityptr pent; pent=pentiter->objectid().safeopenobject(oddb::kforwrite); odresult res ; oddbentityptr pcopy; //res=pent->transformby(transmat); res=pent->gettransformedcopy(transmat,pcopy); dumpentity(pcopy->objectid(),os); //dumpentity(pent->objectid(), os); } } } else dumpentity(pentiter->objectid(), os); } } please help. thanks singhn gettransformedcopy() returns pointer to newly created non-database-resident entity. so its id is null. btw, gettransformedcopy() may fail because not all entities can be transformed by any matrix. for example by non-uniscale matrix. sergey slezkin |
所有的时间均为北京时间。 现在的时间是 11:24 PM. |