![]() |
【转帖】save Dwg File Problem1
save dwg file problem!
save dwg file problem! i want edit the attribute in block,but save the dwg file problem,please help me! the code run in odamfcapp is right,but in my app error! the code is: code: bool cdwgviewer::writeaduitinfo(cstring aduititem,cstring aduitinfo) { // open the block table bool isfind=false; oddbobjectptr pobject; oddbobjectid id; oddbdatabase* pdb = getdocument()->m_pdb; oddbblocktableptr pblocks = pdb->getblocktableid().safeopenobject(); // get an iterator for the block table oddbsymboltableiteratorptr pblkiter = pblocks->newiterator(); // for each block in the block table for (pblkiter->start(); ! pblkiter->done(); pblkiter->step()) { // open the block oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject(oddb::kforwrite); // get an entity iterator oddbobjectiteratorptr pentiter = pblock->newiterator(); // for each entity in the block for (; !pentiter->done(); pentiter->step()) { id=pentiter->objectid(); oddbentityptr pent = id.safeopenobject(oddb::kforwrite); //messagebox(pent->layer(),_t("test"),mb_ok); oddbblockreferenceptr pblock=oddbblockreference::cast(pent); if (!pblock.isnull()) { oddbblocktablerecordptr precord = pblock->blocktablerecord().safeopenobject(oddb::kforwrite); oddbobjectiteratorptr piter = pblock->attributeiterator(); for (int i=0; !piter->done(); i++, piter->step()) { oddbattributeptr pattr = oddbattribute::cast(piter->objectid().openobject(oddb::kforwrite)); if (!pattr.isnull()) { if (pattr->tag()==odstring(aduititem)) { pattr->settextstring(odstring(aduitinfo)); isfind=true; // break; } } } } } } cstring newname = "d:/3.dwg"; pdb->writefile(odstring(newname),oddb::kdwg,oddb::vac18,true); // getdocument()->onsavedocument(newname); return isfind; } attached files the problem is resolved! thanka a lot! thanka a lot! |
| 所有的时间均为北京时间。 现在的时间是 07:40 AM. |