明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2714|回复: 3

[求助]怎样提取块属性

[复制链接]
发表于 2006-12-27 10:48:00 | 显示全部楼层 |阅读模式
我想在ARX提取明细表项属性值(每一行记录事先定义为块),包括材料,名称,重量等信息,如何实现,各位大哥请给点提示,先行谢过!
 楼主| 发表于 2007-1-4 22:35:00 | 显示全部楼层

自己解决了

提取自定义属性块信息,我已经解决了,呵呵

等我整理好了,再发上来

发表于 2007-1-8 10:30:00 | 显示全部楼层

楼主快贴上来吧

给大家参考一下

 楼主| 发表于 2007-1-9 11:25:00 | 显示全部楼层

以下代码实现自定义属性块的属性值提取,我采用鼠标拾取的方式从打开的图形文件中指定块(注意块中要有自己定义的属性)注释部分代码是我基于ACUI对话框实现的,根据你的具体情况选择吧

// BeginEditorCommand();
 //ShowWindow(SW_HIDE);
 ads_name adsNameBlockRef;
 ads_name entRes;
 ads_point ptRes;
 ads_matrix xFormRes;
 struct resbuf *refStkRes, *eb;
 if(acedNEntSelP(NULL,entRes,ptRes,FALSE,xFormRes,&refStkRes) == RTNORM)
 {
  for(eb = refStkRes; eb != NULL;eb = eb->rbnext)
  {
   ads_name_set(eb->resval.rlname,adsNameBlockRef);
  }
  acutRelRb(refStkRes);
 // CompleteEditorCommand();
 }
 else
 {
 // CancelEditorCommand();
 } 
 //ShowWindow(SW_SHOW);

 AcDbObjectId blkRefId;
 acdbGetObjectId(blkRefId, adsNameBlockRef);

 AcDbBlockReference *pBlkRef;
 acdbOpenObject(pBlkRef, blkRefId, AcDb::kForRead);
 
 AcDbObjectIterator *pAttrIter = pBlkRef->attributeIterator();
 pBlkRef->close();

 char *pStr = "";
 char *pText = "";
 AcDbAttribute *pAttr;
 AcDbObjectId attrObjId;
 for(int attrNumber = 0; !pAttrIter->done(); pAttrIter->step())
 {
  attrObjId = pAttrIter->objectId();
  acdbOpenObject(pAttr,attrObjId,AcDb::kForRead);
  pStr = pAttr->tag();
  pText = pAttr->textString();
  pAttr->close();
  attrNumber++;
  acutPrintf("\nAttribute %d,Tag %s, Value %s",attrNumber,pStr,pText);
 }
 delete pAttrIter;

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:54 , Processed in 0.204855 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表