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

yang686526 2009-05-06 03:23 PM

【转帖】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.


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