jack1975 发表于 2003-2-26 09:39:00

[求助]文字位置

请问,我在创建一个Text实体后,想把提供的坐标点换为文字中心,即文字的对齐方式由left改为mid,如何操作?谢谢

CAD菜鸟 发表于 2003-2-26 15:19:00

[建议]RE

http://www.mjtd.com/bbs/dispbbs.asp?BoardID=14&RootID=18673&ID=18747&skin=1

JicketMoney 发表于 2003-3-2 18:37:00

[建议]更换对齐方式

本帖最后由 作者 于 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();

JicketMoney 发表于 2003-3-2 18:40:00

[建议]更换对齐方式

[此贴子已经被作者于2003-3-2 18:40:24编辑过]

zmyqhx 发表于 2003-3-13 12:27:00

re:

可以按如下方式做:默认字体的位置即左下角,在cad中写一个字,以右上角为基准,然后可测出自的宽度,然后根据你索要显示的字的长度计算出其位置.

JicketMoney 发表于 2003-3-13 12:37:00

这种方法是不是土了点?

何不使用pText->getGeoExtents()和文本的旋转角计算更直接、精确?
页: [1]
查看完整版本: [求助]文字位置