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

block attribute iterator problem
block attribute iterator problem
hi,
sorry, this may already be in the forum, but i am having no luck with searching? is this not implemented in the new forum yet? anyway, i have a problem when i try to get the attributeiterator() from a block reference pointer. the block is already defined in the file with attributes, and when i add a new instance of it to the database, the attributeiterator() returns no attributes, but the hasattributedefinations() from the oddbblocktablerecord is true! how do i get to the attributes, is there any sample code for this?
thanks,
quincy
blocktablerecord contains attribute definitions not attributes.
when you add blocktablereference (block insertion) you have to append non-constant attributes to it "manually" by oddbblocktablereference::appendattribute().
sergey slezkin
quote:
originally posted by sergey slezkin
blocktablerecord contains attribute definitions not attributes.
when you add blocktablereference (block insertion) you have to append non-constant attributes to it "manually" by oddbblocktablereference::appendattribute().
ok, i think i see what you are talking about. my question is, in a pre-defined block can i get to these attributes/definitions, so i can change them when i insert the block? i have already defined them (with autocad) in dwg, that i load then copy the block. when i insert the block i need to get to these attributes? can i do this?
thanks,
quincy
hope this helps.
code:
void oddbutils::appendattributestoblockref(oddbblockreference *pblkref, oddbobjectid insblkid)
{
// check for attribute definition
odgematrix3d xform = pblkref->blocktransform();
oddbblocktablerecordptr pinsblock = insblkid.safeopenobject();
// correct transform matrix by base point
oddbblocktablerecordptr pbr = pblkref->blocktablerecord().openobject();
odgepoint3d basept(pbr->origin());
xform *= odgematrix3d::translation(odgepoint3d::korigin - basept);
// walk through the block and looking for att.def
if (pinsblock->hasattributedefinitions())
{
// get attribute entities from this block
oddbobjectiteratorptr pit = pinsblock->newiterator();
while (!pit->done())
{
oddbentityptr pentity = pit->entity();
if ( pentity->iskindof(oddbattributedefinition::desc()) )
{
oddbattributedefinitionptr pattdef;
pattdef = pentity;
if (!pattdef->isconstant())
{
oddbattributeptr pattr = oddbattribute::createobject();
pattr->setattributefromblock(pattdef, xform);
pblkref->appendattribute(pattr);
}
}
pit->step();
} // end of while (!pit->done())
} // end of if (pinsblock->hasattributedefinitions())
return;
}
sergey slezkin
thank you!
i was trying something similar to this last night very late, however i was looking for kindof(oddbattribute)! stupid me...
i will try this out,
one last question...
where is odutils declared? i was just curios what all other functions where in this class.
thanks
oddbutils class is used internaly by dwgdirect.
appendattributestoblockref() is called by dwgdirectx.
for c++ users it's not very efficient because after calling it you'll need to iterate through created attributes once more to set their values.
sergey slezkin
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


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

高级搜索
显示模式

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

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

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】attribute visibility yang686526 DirectDWG 0 2009-05-04 04:23 PM
【转帖】attribute issues yang686526 DirectDWG 0 2009-05-04 04:22 PM
【转帖】attribute definition is read as text item yang686526 DirectDWG 0 2009-05-04 04:22 PM
【转帖】attribute and attributedefinition isinvisible90 yang686526 DirectDWG 0 2009-05-04 04:21 PM
【转帖】attribute error yang686526 SolidWorks二次开发 0 2009-04-13 09:07 AM


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


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