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


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


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-16, 04:09 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】[求助]如何获取用insert插入的属性块的各属性值(块名已知)

[求助]如何获取用insert插入的属性块的各属性值(块名已知)
[求助]如何获取用insert插入的属性块的各属性值(块名已知)
如何获取用insert插入的属性块的各属性值(块名已知)
这是一本书中的例子,每一行代码的例子我还不太懂,你自己看看吧.其中包括插入块的代码.
void insrtblk()
{
char blkname[50];
acdbdatabase *pcurdb;
acdbblocktable *pblktable;
acdbblocktablerecord *pblktablerecord;
acdbblocktablerecord *pblkdefrecord;
acdbblockreference *pinsrtobj;
acdbentity *pent;
acdbblocktablerecorditerator *piterator;
acdbattributedefinition *pattdef;
acdbattribute *patt;
acdbobjectid blkid;
acdbobjectid insrtid;
char *ptagprompt;
acgepoint3d inspt;
acgepoint3d basept;
int retcode;
retcode = acedgetstring(0, "\nenter block name: ", blkname);
if(retcode != rtnorm || blkname[0] == '\0')
{
acutprintf("\ninvalid block name.");
return;
}
pcurdb = acdbhostapplicationservices()->workingdatabase();
// check to see if the block table
// has blkname
pcurdb->getblocktable(pblktable, acdb::kforread);
if(!pblktable->has(blkname))
{
acutprintf("\nblock definition %s not found. ", blkname);
pblktable->close();
return;
}
// get the acdbobjectid of the block
// definition.
pblktable->getat(blkname, blkid);
pblktable->getat(acdb_model_space, pblktablerecord, acdb::kforwrite);
pblktable->close();

acedinitget(rsg_nonull, null);
acedgetpoint(null, "\npick insertion point: ", asdblarray(inspt));
pinsrtobj = new acdbblockreference(inspt, blkid);
// here is where you can set scale, rotation and other
// properties to the block entity. if you want to
// see the acdbblockreference class for more details.
pblktablerecord->appendacdbentity(insrtid, pinsrtobj);
acdbopenobject(pblkdefrecord, blkid, acdb::kforread);
// now check to see if the block definition
// has attributes. if it does we will add
// a block table record iterator to step through
// the entities and find the attribute definitions.
if(pblkdefrecord->hasattributedefinitions())
{
pblkdefrecord->newiterator(piterator);
for(piterator->start(); !piterator->done(); piterator->step())
{
piterator->getentity(pent, acdb::kforread);
// check to see if the entity is an
// attribute definition.
pattdef = acdbattributedefinition::cast(pent);
if(pattdef != null && !pattdef->isconstant())
{
// if it is and its not constant
// create a new attribute
patt = new acdbattribute();
// setpropertiesfrom will copy
// color, layer, linetype,linetype scale and
// visibility.
patt->setpropertiesfrom(pattdef);
// setup more properties from the attribute
// definition
patt->setinvisible(pattdef->isinvisible());
basept = pattdef->position();
basept += pinsrtobj->position().asvector();
patt->setposition(basept);
patt->setheight(pattdef->height());
patt->setrotation(pattdef->rotation());
// take note how we get the tag.
ptagprompt = pattdef->tag();
patt->settag(ptagprompt);
free(ptagprompt);
// normally you would prompt the user
// and ask for input values.
ptagprompt = pattdef->prompt();
acutprintf("%s%s", "\n", ptagprompt);
free(ptagprompt);

// the setfieldlength is not required
// even though it is listed in the
// documentation.
patt->setfieldlength(25);
// settextstring is the value the
// attribute receives which would
// normally be a user input value.
patt->settextstring("this is a test");
pinsrtobj->appendattribute(patt);
patt->close();
}
pent->close();
}// for
delete piterator;
}// if has attribute definitions
// note that we close the model space
// block table record after we have added
// our attributes.
pblktablerecord->close();
pinsrtobj->close();
}
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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



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


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