明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2981|回复: 7

如何精确获取AcDbText文本串的长度?

[复制链接]
发表于 2005-11-15 09:59:00 | 显示全部楼层 |阅读模式

如题

发表于 2005-11-15 22:52:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2005-11-16 11:33:00 | 显示全部楼层

可能是我表达的不清楚,我要的不是字符个数,而是图形的长度,类似WIN32 API 函数 GetTextExtentPoint32 获取输出文本图形的长度。

发表于 2005-11-16 12:14:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2005-11-16 15:02:00 | 显示全部楼层

如图中所示,文本串“123456789”的长度就是起点和端点的坐标X的差(x2 - x1)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-11-16 17:12:00 | 显示全部楼层

/************************************************************************
    *函数名:       getTextLength
    *功能:         计算CAD中文字字符串长度的函数
    *调用函数表:
    *被调用函数表:
    *输入参数:     textId -- 字符串在CAD中的Id
    *输出参数:
    *返回值:        CAD状态
    *其他:                                                                   
************************************************************************/
Acad::ErrorStatus getTextLength(AcDbObjectId textId,double& textLengh)
{
 Acad::ErrorStatus es=Acad::eOk;
 AcDbEntity *pEnt=NULL;

 if((es=acdbOpenObject(pEnt,textId,AcDb::kForRead))!=Acad::eOk)
  return es;
 
 AcDbExtents Ext;
 pEnt->getGeomExtents(Ext);
 pEnt->close();

 AcGePoint3d minPt,maxPt;
 minPt = Ext.minPoint();
 maxPt = Ext.maxPoint();
 textLengh = acutDistance(asDblArray(minPt),asDblArray(maxPt));
 
  return es;
}

 楼主| 发表于 2005-11-17 15:43:00 | 显示全部楼层

谢谢楼上的!

这方法我已经试过,对大部分的文本是正确的。但有一些文本就不正确。不知道是什么原因。

发表于 2012-7-26 16:37:50 | 显示全部楼层
角度不为0,就不能使用该方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:34 , Processed in 0.201434 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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