几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » DirectDWG
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-05-05, 10:55 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】files open okay in 1.10 but not in 1.14.02

files open okay in 1.10 but not in 1.14.02
files open okay in 1.10 but not in 1.14.02
hi,
attached are 2 files that open okay in 1.10 but not in 1.14.02. would you please take a look and see why? please also let me know if you have a fix available.
thanks,
chung
both files contain ole2frame item with missing data.
autocad silently erases them at file loading and report nothing.
odamfcapp/ole.cpp while loading the ole data does not handle eof exception.
sergey slezkin
thanks for the quick reply.
following your suggestion, i was able to open the dwg file by calling readfile with partial loading and then catching the eof exception when opening the ole2frame entity.
however, i am still unable to open the dxf file because in this case the readfile function is the one throwing the eof exception.
anyway, will this issue be fixed (making dwgdirect behavor like autocad) in the next release?
thanks again.
you can fix this partialy on your side. if you replace load() function in odamfcapp/ole.cpp with code below, you will be able to load both dwg and dxf with recoverfile().
in next release/update readfile() will work too like in autocad.
code:
void load(odstreambuf& stream)
{
coleclientitem::release();
odoleiteminitstreamptr poleiteminitstream(&stream);
m_frameid = poleiteminitstream->frameid();
coledocument* poledocument = 0;
oddbdatabasedocptr pdb = oddbdatabasedoc::cast(m_frameid.database());
if(pdb.get())
poledocument = pdb->document();
if(poledocument)
{
m_prawdata.release();
file file(stream);
carchive archive(&file, carchive::load);
archive.m_pdocument = poledocument;

// maintain reference balance:
// coledocument calls coleclientitem::internalrelease() in its deletecontents(),
// but it does not add reference in coledocument::additem();
if(!m_pdocument)
{
poledocument->additem(this);
addref();
}
try
{
coleclientitem::serialize(archive);
}
catch(cexception, pexception)
{
cstring msg;
pexception->geterrormessage(msg.getbuffer(256), 256);
cstring msg2;
msg2.format(_t("%s : \"%s\""), pexception->getruntimeclass()->m_lpszclassname, msg);
// remove invalid object from ole document
m_pdocument->removeitem(this);
release();

pexception->delete();
throw oderror(msg2);
}
end_catch
}
else
{
// loading database is not associated with codamfcapp (coledocument)
// so do not load ole object - just store its data.
if(m_prawdata.isnull())
m_prawdata = odrxobjectimpl<odoleitemsimplesthandler>::createobject();
m_prawdata->load(stream);
}
}
sergey slezkin
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】vba documents.open总是出错造成autocad崩溃,请教达人 yang686526 数据库ObjectDBX 0 2009-04-28 10:10 AM
vba documents.open总是出错造成autocad崩溃,请教达人 yang686526 ObjectARX(AutoLISP) 0 2009-04-25 09:06 PM
【转帖】objectarx&dummies教程(五)——object management yang686526 ObjectARX(C++) 0 2009-04-16 10:38 AM
【转帖】plot, print to pdf and open up a word documen yang686526 SolidWorks二次开发 0 2009-04-13 01:31 PM
【转帖】open with....edrawings2009 yang686526 SolidWorks二次开发 0 2009-04-13 01:13 PM


所有的时间均为北京时间。 现在的时间是 08:06 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多