几何尺寸与公差论坛------致力于产品几何量公差标准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, 11:14 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】get entents of a xref

get entents of a xref
get entents of a xref
i am trying to get entents of a xref. if i put the xref the same directory as the master file, i am ok. if the xref is in a network drive (e.g. \\sps200\templates\border_0.dwg), i can't use oddbblockreference::getgeomextents() to get the extents. by the way, i can see the xref is properly loaded in the file.
// the blockid is the xref id
//blockname is the xref name
oddbblocktablerecordptr pms = blockid.safeopenobject();
oddbobjectiteratorptr pentiter;
for(pentiter = pms->newiterator(); !pentiter->done(); pentiter->step())
{
oddbentityptr pent = pentiter->entity(oddb::kforread);
oddbblockreferenceptr pref = oddbblockreference::cast(pent);
if (!pref.isnull())
{
oddbblocktablerecordptr pblock = pref->blocktablerecord().safeopenobject();
strcpy(test, pblock->getname());
if (_stricmp(pblock->getname(), blockname) == 0)
{
scale3d = pref->scalefactors();
if ( pref->getgeomextents(ext) != eok )
continue;
}
}
}
scalefactors() returns the right scale. however, the getgeomextents doesn't return eok,
is this a bug of the lib or i am doing something wrong.
thanks,
al
i made a mistake when i posted the message. the blockid is the modelspace block id from the drawing. so my code looks like:
// the blockid is the modelspace id
//blockname is the xref name
oddbblocktablerecordptr pms = blockid.safeopenobject();
oddbobjectiteratorptr pentiter;
for(pentiter = pms->newiterator(); !pentiter->done(); pentiter->step())
{
oddbentityptr pent = pentiter->entity(oddb::kforread);
oddbblockreferenceptr pref = oddbblockreference::cast(pent);
if (!pref.isnull())
{
oddbblocktablerecordptr pblock = pref->blocktablerecord().safeopenobject();
strcpy(test, pblock->getname());
if (_stricmp(pblock->getname(), blockname) == 0)
{
scale3d = pref->scalefactors();
if ( pref->getgeomextents(ext) != eok )
continue;
}
}
}
scalefactors() returns the right scale. however, the getgeomextents doesn't return eok.
thanks,
al
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】export xref blocks to dxfdwg yang686526 DirectDWG 0 2009-05-05 10:28 AM
【转帖】explode nested xref block yang686526 DirectDWG 0 2009-05-05 10:07 AM
【转帖】empty xref blocks yang686526 DirectDWG 0 2009-05-05 09:02 AM
【转帖】current vp freeze of xref layer that is frozen is being vec yang686526 DirectDWG 0 2009-05-04 06:54 PM
【转帖】如何实现xref功能 yang686526 ObjectARX(VB.NET/C#) 0 2009-04-21 09:55 AM


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


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