[求助]文字位置
请问,我在创建一个Text实体后,想把提供的坐标点换为文字中心,即文字的对齐方式由left改为mid,如何操作?谢谢[建议]RE
http://www.mjtd.com/bbs/dispbbs.asp?BoardID=14&RootID=18673&ID=18747&skin=1[建议]更换对齐方式
本帖最后由 作者 于 2003-3-2 18:37:35 编辑使用以下代码可以更换文本对齐方式,而不改变文字位置:
ads_name ename;
ads_point pt;
if (acedEntSel("\nSelect Text:", ename, pt) != RTNORM)
return;
AcDbObjectId objId;
AcDbText *pText = NULL;
acdbGetObjectId(objId, ename);
acdbOpenObject(pText, objId, AcDb::kForWrite);
if (pText == NULL)
return;
AcDbExtents extents, extents2;
pText->getGeomExtents(extents);
pText->setHorizontalMode(AcDb::kTextCenter);
pText->setVerticalMode(AcDb::kTextVertMid);
pText->close();
// acedRedraw(ename, 1);
acdbOpenObject(pText, objId, AcDb::kForWrite);
if (pText == NULL)
return;
pText->getGeomExtents(extents2);
AcGeVector3d vec = extents.minPoint() - extents2.minPoint();
pText->transformBy(AcGeMatrix3d::translation(vec));
pText->close();
[建议]更换对齐方式
[此贴子已经被作者于2003-3-2 18:40:24编辑过]re:
可以按如下方式做:默认字体的位置即左下角,在cad中写一个字,以右上角为基准,然后可测出自的宽度,然后根据你索要显示的字的长度计算出其位置.这种方法是不是土了点?
何不使用pText->getGeoExtents()和文本的旋转角计算更直接、精确?
页:
[1]