comet_h 发表于 2005-11-15 09:59:00

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

<P>如题</P>

pglyxq 发表于 2005-11-15 22:52:00

comet_h 发表于 2005-11-16 11:33:00

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

pglyxq 发表于 2005-11-16 12:14:00

comet_h 发表于 2005-11-16 15:02:00

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

missyou 发表于 2005-11-16 17:12:00

<P>/************************************************************************<BR>&nbsp;&nbsp;&nbsp; *函数名:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getTextLength<BR>&nbsp;&nbsp;&nbsp; *功能:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 计算CAD中文字字符串长度的函数<BR>&nbsp;&nbsp;&nbsp; *调用函数表:<BR>&nbsp;&nbsp;&nbsp; *被调用函数表:<BR>&nbsp;&nbsp;&nbsp; *输入参数:&nbsp;&nbsp;&nbsp;&nbsp; textId -- 字符串在CAD中的Id<BR>&nbsp;&nbsp;&nbsp; *输出参数:<BR>&nbsp;&nbsp;&nbsp; *返回值:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CAD状态<BR>&nbsp;&nbsp;&nbsp; *其他:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>************************************************************************/<BR>Acad::ErrorStatus getTextLength(AcDbObjectId textId,double&amp; textLengh)<BR>{<BR>&nbsp;Acad::ErrorStatus es=Acad::eOk;<BR>&nbsp;AcDbEntity *pEnt=NULL;</P>
<P>&nbsp;if((es=acdbOpenObject(pEnt,textId,AcDb::kForRead))!=Acad::eOk)<BR>&nbsp;&nbsp;return es;<BR>&nbsp;<BR>&nbsp;AcDbExtents Ext;<BR>&nbsp;pEnt-&gt;getGeomExtents(Ext);<BR>&nbsp;pEnt-&gt;close();</P>
<P>&nbsp;AcGePoint3d minPt,maxPt;<BR>&nbsp;minPt = Ext.minPoint();<BR>&nbsp;maxPt = Ext.maxPoint();<BR>&nbsp;textLengh = acutDistance(asDblArray(minPt),asDblArray(maxPt));<BR>&nbsp; <BR>&nbsp; return es;<BR>}</P>

comet_h 发表于 2005-11-17 15:43:00

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

溢炜/[!!] 发表于 2012-7-26 16:37:50

角度不为0,就不能使用该方法。
页: [1]
查看完整版本: 如何精确获取AcDbText文本串的长度?