天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 56|回复: 2

AcDbText

[复制链接]
  • TA的每日心情
    开心
    昨天 15:13
  • 签到天数: 153 天

    [LV.7]常住居民III

    3456

    主题

    553

    回帖

    214748万

    积分

    管理员

    中国膜结构网www.mjgou.com

    积分
    2147483647
    QQ
    发表于 2024-7-24 22:30:20 | 显示全部楼层 |阅读模式
    1. AcDbObjectId GetTextstyleId(CString sTextstylename)

    2. {

    3. AcDbTextStyleTable *pTable;

    4. AcDbObjectId textstyleId = AcDbObjectId::kNull;

    5. Acad::ErrorStatus es = Acad::eOk;

    6. if ((es = acdbHostApplicationServices()->workingDatabase()->getTextStyleTable(pTable, AcDb::kForRead)) == Acad::eOk){

    7. if ((es =pTable->getAt(sTextstylename, textstyleId, Adesk::kFalse)) != Acad::eOk){

    8. textstyleId =AcDbObjectId::kNull;

    9. }

    10. pTable->close();

    11. }

    12. return textstyleId;

    13. }


    14. double GetTextWidth(CString sText, CString sTextStyle, double dTextHeight)
    15. {
    16. AcDbObjectId idTextStyle = GetTextstyleId(sTextStyle);
    17. AcGiTextStyle giTextStyle;
    18. fromAcDbTextStyle(giTextStyle, idTextStyle);
    19. giTextStyle.setTextSize(dTextHeight);

    20. AcGePoint2d ptExt = giTextStyle.extents(sText.GetBuffer(), Adesk::kFalse, sText.GetLength(), Adesk::kFalse);
    21. return ptExt.x;
    22. }


    23. OR


    24. double GetTextWidth(AcDbObjectId idText)
    25. {
    26. ads_point ptLowerLeft, ptUpperRight;
    27. ads_name ent;
    28. struct resbuf * textent;
    29. acdbGetAdsName(ent, idText);
    30. textent = acdbEntGet(ent);
    31. acedTextBox(textent, ptLowerLeft, ptUpperRight);

    32. //acutPrintf("\nHeight: %.2f, Width: %.2f", ptUpperRight - ptLowerLeft, ptUpperRight - ptLowerLeft);
    33. return ptUpperRight - ptLowerLeft;
    34. }
    复制代码

     

     

     

     

    AcDbText
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
  • TA的每日心情
    开心
    昨天 15:13
  • 签到天数: 153 天

    [LV.7]常住居民III

    3456

    主题

    553

    回帖

    214748万

    积分

    管理员

    中国膜结构网www.mjgou.com

    积分
    2147483647
    QQ
     楼主| 发表于 2024-7-24 22:35:29 | 显示全部楼层

    AcDbText 对齐 setHsorizontalMode和setVerticalMode setAlignmentPoint 所有对其
    在AutoCAD的对象ARX开发中,AcDbText对象提供了多种方法来设置文本的对齐方式。

    水平对齐方式设置:

    AcDbText::setHoleizontalMode(AcDb::TextHorzMode mode)
    此函数用于设置文本的水平对齐方式,参数mode可以是以下值:

    AcDb::kTextLeft:左对齐

    AcDb::kTextCenter:居中对齐

    AcDb::kTextRight:右对齐

    AcDb::kTextAligned:与对齐点对齐

    AcDb::kTextMid:居中对齐,与对齐点垂直居中对齐

    AcDb::kTextFit:文字宽度调整模式

    垂直对齐方式设置:

    AcDbText::setVerticalMode(AcDb::TextVertMode mode)
    此函数用于设置文本的垂直对齐方式,参数mode可以是以下值:

    AcDb::kTextBottom:底部对齐

    AcDb::kTextBaseline:基线对齐

    AcDb::kTextTop:顶部对齐

    AcDb::kTextMiddle:居中对齐

    AcDb::kTextBottomBaseline:底部与基线对齐

    AcDb::kTextTopBaseline:顶部与基线对齐

    设置对齐点:

    AcDbText::setAlignmentPoint(const AcGePoint3d& point)
    此函数用于设置文本的对齐点,文本将根据设置的对齐方式相对于这个点进行对齐。

    以下是一个简单的示例,演示如何创建一个AcDbText对象并设置其对齐方式:

    #include "dbtext.h"

    AcDbText* createAndSetTextAlignment(const AcGePoint3d& position, const AcGeVector3d& xAxis, const AcGeVector3d& yAxis) {
        // 创建一个新的文本对象
        AcDbText* text = new AcDbText();

        // 设置文本内容
        text->setContents(_T("Hello, World!"));

        // 设置文本对齐点
        text->setAlignmentPoint(position);

        // 设置文本的水平对齐方式为居中
        text->setHoleizontalMode(AcDb::kTextCenter);

        // 设置文本的垂直对齐方式为居中
        text->setVerticalMode(AcDb::kTextMiddle);

        // 设置文本的旋转(可选,根据需要设置)
        text->setRotation(acos(xAxis * yAxis) / M_PI * 180.0);

        // 返回设置好的文本对象
        return text;
    }
    在这个例子中,我们创建了一个新的AcDbText对象,并设置了它的内容、对齐点、水平和垂直对齐方式以及旋转角度。然后返回这个设置好的文本对象。在实际使用时,你需要将此函数调用放在你的ARX应用程序中合适的位置,并处理好对象的追加和清理。

     

     

     

     

    AcDbText
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
  • TA的每日心情
    开心
    昨天 15:13
  • 签到天数: 153 天

    [LV.7]常住居民III

    3456

    主题

    553

    回帖

    214748万

    积分

    管理员

    中国膜结构网www.mjgou.com

    积分
    2147483647
    QQ
     楼主| 发表于 2024-7-24 22:38:41 | 显示全部楼层
    1. AcGeVector3d Tnor = pText->normal();
    2. AcGeVector3d xdir = Tnor.perpVector();
    3. xdir.rotateBy(pText->rotation(), Tnor);
    4. AcGeVector3d ydir = Tnor.crossProduct(vx);
    复制代码

     

     

     

     

    AcDbText
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 09:25 , Processed in 0.059643 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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