查看单个帖子
旧 2009-05-06, 03:23 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】how to use setpathname

how to use setpathname
how to use setpathname
i tried to change xref path name of dwg files using setpathname as follows, but i catched error every time. could anybody tell how to use setpathname or how to change xref name of dwg files? thanks in advance.
oddbdatabaseptr pdb;
try
{
pdb = m_svcs.readfile( strftoprocess, false, false, oda::ksharedenyno );
}
catch(...)
{
//error handling code here
return;
}
try
{
oddbblocktableptr pblocks = pdb->getblocktableid().safeopenobject();
oddbsymboltableiteratorptr pblkiter = pblocks->newiterator();
for (pblkiter->start(); ! pblkiter->done(); pblkiter->step())
{
oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject();
if (pblock->isfromexternalreference())
{
// fullfilename
cstring strreffile;
strreffile.format("%s", (const char *)pblock->pathname());
// change file name here
strreffile.replace("c:", "f:");
pblock->setpathname((lpctstr)strreffile); // error catched!!
}
}
}
catch(...)
{
//error handling code here
return;
}
i got the error message. it said that file "not opened for write".
so i guess readfile has something about it. i tried different shared modes. it could not solve the problem.
hello,
try
oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject(oddb::kforwrite);
instead of
oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject();
regards, tomaz
thank you, tomaz.
it works.
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)