找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ObjectArx 文本获取文字的实际宽度

[复制链接]

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-2-23 16:14:10 | 显示全部楼层 |阅读模式
在给一个文本实体套一个图框的时候发现实体的宽度是固定的,并不是文字的实际占用尺寸

通过getGeomExtents获取到的坐标是实体的实际坐标,如果用这个结果框一个图框,可能会在框内留出比较多的空白空间,多行文本AcDbMText需要用actualWidth,单行文本AcDbText需要用到widthFactor。

  1. /*!
  2. * @brief 获取文本实体真实宽度
  3. *
  4. * @param const AcDbObjectId& id 文本实体id
  5. * @return double 返回文本实体实际宽度,id所属实体不是文本实体返回0.0
  6. *
  7. * @author liujieda
  8. */
  9. double getRealWidth(const AcDbObjectId& id)
  10. {
  11.     AcDbEntity * pEntity;
  12.     Acad::ErrorStatus es = acdbOpenAcDbEntity(pEntity, id, AcDb::kForRead);
  13.     double width = 0.0;
  14.     if (pEntity->isA() == AcDbMText::desc())
  15.     {
  16.         AcDbMText *pMText = AcDbMText::cast(pEntity);
  17.         width = pMText->actualWidth();
  18.     }
  19.     else if (pEntity->isA() == AcDbText::desc())
  20.     {
  21.         AcDbText *pText = AcDbText::cast(pEntity);
  22.         width = pText->widthFactor();
  23.     }
  24.     return width;
  25. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-28 14:59 , Processed in 0.136557 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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