找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 166|回复: 0

[每日一码] AcDbBlockReference appendAttribute

[复制链接]

1

主题

0

回帖

33

积分

管理员

积分
33
发表于 2024-3-14 20:57:44 | 显示全部楼层 |阅读模式
  1. static void AddAttrib()
  2.         {
  3.                 ads采用name ent;
  4.                 ads采用point pt;
  5.                 if (acedEntSel(采用T("\nPick Insert: "),ent,pt)==RTNORM)
  6.                 {
  7.                         AcDbObjectId objId,blkId;
  8.                         acdbGetObjectId(objId,ent);
  9.                         AcDbObjectPointer<AcDbBlockReference> pBlkRef(objId,AcDb::kForRead);
  10.                         if (pBlkRef.openStatus()==Acad::eOk)
  11.                         {
  12.                                 ACHAR tagstr[40],str[40];
  13.                                 if (acedGetString(NULL,采用T("\nTag String: "),tagstr)!=RTNORM)
  14.                                 {                              
  15.                                         return;
  16.                                 }
  17.                                 AcDbObjectIterator *pIter=pBlkRef->attributeIterator();
  18.                                 if (pIter!=NULL)
  19.                                 {
  20.                                         for (;!pIter->done();pIter->step())
  21.                                         {
  22.                                                 AcDbObjectPointer<AcDbAttribute> pAttrib(pIter->objectId(),AcDb::kForRead);
  23.                                                 
  24.                                                         if (采用tcscmp(pAttrib->tag(),tagstr)==0)
  25.                                                         {
  26.                                                                 delete pIter;
  27.                                                                 acutPrintf(采用T("\n%s already exists!"),tagstr);
  28.                                                                 return;
  29.                                                         }
  30.                                         }                              
  31.                                         delete pIter;
  32.                                 }
  33.                                 if (acedGetString(NULL,采用T("\nText String: "),str)!=RTNORM)
  34.                                 {
  35.                                         return;
  36.                                 }
  37.                                 if (acedGetPoint(NULL,采用T("\nInsertion Point: "),pt)!=RTNORM)
  38.                                 {
  39.                                         return;
  40.                                 }
  41.                                 pBlkRef->upgradeOpen();
  42.                                 AcDbAttribute *pAttrib=new AcDbAttribute;
  43.                                 pAttrib->setTag(tagstr);
  44.                                 pAttrib->setTextString(str);
  45.                                 pAttrib->setPosition(asPnt3d(pt));
  46.                                 pAttrib->setHeight(10.0);
  47.                                 pBlkRef->appendAttribute(pAttrib);
  48.                                 pAttrib->close();
  49.                                 pBlkRef->close();
  50.                         }
  51.                 }
  52.         }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 20:35 , Processed in 0.118435 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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