如何精确获取AcDbText文本串的长度?
<P>如题</P> <P>可能是我表达的不清楚,我要的不是字符个数,而是图形的长度,类似WIN32 API 函数 <STRONG>GetTextExtentPoint32 获取输出文本图形的长度。</STRONG></P> <P>如图中所示,文本串“123456789”的长度就是起点和端点的坐标X的差(x2 - x1)</P> <P>/************************************************************************<BR> *函数名: getTextLength<BR> *功能: 计算CAD中文字字符串长度的函数<BR> *调用函数表:<BR> *被调用函数表:<BR> *输入参数: textId -- 字符串在CAD中的Id<BR> *输出参数:<BR> *返回值: CAD状态<BR> *其他: <BR>************************************************************************/<BR>Acad::ErrorStatus getTextLength(AcDbObjectId textId,double& textLengh)<BR>{<BR> Acad::ErrorStatus es=Acad::eOk;<BR> AcDbEntity *pEnt=NULL;</P><P> if((es=acdbOpenObject(pEnt,textId,AcDb::kForRead))!=Acad::eOk)<BR> return es;<BR> <BR> AcDbExtents Ext;<BR> pEnt->getGeomExtents(Ext);<BR> pEnt->close();</P>
<P> AcGePoint3d minPt,maxPt;<BR> minPt = Ext.minPoint();<BR> maxPt = Ext.maxPoint();<BR> textLengh = acutDistance(asDblArray(minPt),asDblArray(maxPt));<BR> <BR> return es;<BR>}</P> <P>谢谢楼上的!</P>
<P>这方法我已经试过,对大部分的文本是正确的。但有一些文本就不正确。不知道是什么原因。</P> 角度不为0,就不能使用该方法。
页:
[1]