乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 14|回复: 1

AcDbBlockReference和字段

[复制链接]
032

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2010-4-25 01:36:50 | 显示全部楼层 |阅读模式
我一直在文档中使用addBlockWithAttributes示例的修改版本,
我只是注意到它不会将字段从AcDbAttributeDefinition复制到AcDbAttribute...
有人知道如何做到这一点吗?
谢谢

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
7
发表于 2010-4-25 09:38:01 | 显示全部楼层
这有效...
  1. Acad::ErrorStatus BlockWorker::CopyFields(AcDbAttributeDefinition *pAttdef, AcDbAttribute *pAtt  )
  2. {
  3.   Acad::ErrorStatus es = Acad::eOk;
  4.   AcDbObjectId fieldId;
  5.   AcDbDictionaryPointer pDict(pAttdef->getFieldDictionary(), AcDb::kForRead);
  6.   if(pDict.openStatus() == Acad::eOk)
  7.   {
  8.     std::auto_ptr pDictIter(pDict->newIterator());
  9.     for(;!pDictIter->done();pDictIter->next())
  10.     {
  11.       AcDbObjectPointer pField(pDictIter->objectId(),AcDb::kForWrite);
  12.       if( (es = pField.openStatus()) != Acad::eOk)
  13.       {
  14.         acutPrintf(_T("\nFailed to open Field :\nLine %ld [%s] In function %s "),
  15.           __LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
  16.         continue;
  17.       }
  18.       AcDbField *pNewField = new AcDbField(
  19.         pField->getFieldCode(AcDbField::kAddMarkers),pField->isTextField());
  20.       if(pField == NULL)
  21.       {
  22.         es = Acad::eNullObjectPointer;
  23.         acutPrintf(_T("\nFailed to create Field  :\nLine %ld [%s] In function %s "),
  24.           __LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
  25.         continue;
  26.       }
  27.       if( (es = pNewField->postInDatabase(m_pDb)) != Acad::eOk)
  28.       {
  29.         acutPrintf(_T("\nFailed to add Field to Database :\nLine %ld [%s] In function %s "),
  30.           __LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
  31.         delete pNewField;
  32.         continue;
  33.       }
  34.       if( (es = pAtt->setField(pDictIter->name(),pNewField,fieldId)) != Acad::eOk)
  35.       {
  36.         acutPrintf(_T("\nFailed to set Field :\nLine %ld [%s] In function %s "),
  37.           __LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
  38.         continue;
  39.       }
  40.       if( (es = pNewField->evaluate(0,0))  != Acad::eOk)
  41.       {
  42.         acutPrintf(_T("\nFailed to evaluate Field :\nLine %ld [%s] In function %s "),
  43.           __LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
  44.       }
  45.       if( (es = pNewField->close()) != Acad::eOk)
  46.       {
  47.         acutPrintf(_T("\nFailed to close Field :\nLine %ld [%s] In function %s "),
  48.           __LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
  49.       }
  50.     }
  51.   }
  52.   return es;
  53. }
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 22:02 , Processed in 0.305692 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表