乐筑天下

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

无法将多行文字附加到引线

[复制链接]

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-22 07:41:17 | 显示全部楼层 |阅读模式
大家好。我有一个问题.所以现在我正在创建带有注释(Mtext)的领导者。
源代码如下。我使用了“pLeader->attattachAnnotation(pMtext->objectID)”,但它不起作用。你能告诉我为什么吗?
关于命令的结果,我还附上了下面的图片。请看。
  1. void
  2. cmdKRLE()
  3. {
  4.     ads_point pt0,pt1, pt2;
  5.     TCHAR Content[100];
  6.     pt0[0] = 0;
  7.     pt0[1] = 0;
  8.     pt0[2] = 0;
  9.     acedInitGet(1, NULL);
  10.     acedGetPoint(pt0, _T("\n Select the first point:"), pt1);
  11.     acedInitGet(1, NULL);
  12.     acedGetPoint(pt1, _T("\n Select the second point:"), pt2);
  13.     acdbUcs2Wcs(pt1, pt1, false);
  14.     acdbUcs2Wcs(pt2, pt2, false);
  15.    
  16.     AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
  17.     Acad::ErrorStatus es;
  18.     AcDbBlockTableRecordPointer pBtr(pDb->currentSpaceId(), AcDb::kForWrite);
  19.     if (pBtr.openStatus() != Acad::eOk) return;
  20.     struct resbuf DimScale;
  21.     acedGetVar(_T("DIMSCALE"), &DimScale);
  22.     acedGetString(1, _T("\n Input content:"), Content);
  23.     AcDbObjectPointer  pMtext;
  24.     pMtext.create();
  25.     pMtext->setContents(Content);
  26.     pMtext->setLayer(_T("TEXT"));
  27.     pMtext->setTextHeight(DimScale.resval.rreal * 3.2);
  28.     pMtext->setLocation(asPnt3d(pt2));
  29.     if (pt2[0] >= pt1[0])
  30.     {
  31.         pMtext->setAttachment(AcDbMText::kBottomLeft);
  32.     }
  33.     else
  34.     {
  35.         pMtext->setAttachment(AcDbMText::kBottomRight);
  36.     }
  37.     es = pBtr->appendAcDbEntity(pMtext);
  38.     if (es != Acad::eOk)
  39.     {
  40.         acutPrintf(_T("\n Can not add Mtext!"));
  41.         return;
  42.     }
  43.     AcDbObjectPointer pLeader;
  44.     pLeader.create();
  45.     pLeader->appendVertex(asPnt3d(pt1));
  46.     pLeader->appendVertex(asPnt3d(pt2));
  47.     es = pBtr->appendAcDbEntity(pLeader);
  48.     if (es != Acad::eOk)
  49.     {
  50.         acutPrintf(_T("\n Can not add Leader!"));
  51.         return;
  52.     }
  53.     pLeader->setLayer(_T("SCALE"));
  54.     pLeader->setDimscale(DimScale.resval.rreal);
  55.     pLeader->attachAnnotation(pMtext->objectId());
  56.     pLeader->evaluateLeader();
  57. }


os5x00phrr3.PNG

os5x00phrr3.PNG

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

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

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-22 19:13:55 | 显示全部楼层
嗨,您应该检查每个ARX调用的错误状态,当事情变糟时,它可能会告诉它。example  if (auto e = pMtext->setContents(...); e != eOk)。
acutPrintf(_T(“\nError @ pMtext->setContents = %ls: ”), acadErrorStatusText(e));。
另外,我喜欢在创建实体后使用设置数据库默认值,这可能不是这里的错误,但它是导致很多问题的原因AcDbObjectPointer  pMtext;。
pMtext.create();。
pMtext->setDatabaseDefaults(pDb);。

回复

使用道具 举报

5

主题

25

帖子

1

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-1-22 20:42:31 | 显示全部楼层
感谢您的回复。我得到了这个.让我用这个再次检查我的代码。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 01:10 , Processed in 0.142025 second(s), 61 queries .

© 2020-2024 乐筑天下

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