天气与日历 切换到窄版

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

ObjectARX2015 + vs2012创建文字

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
[code]1. 说明

        本篇介绍创建文字和多行文字的函数,分别对 AcDbText 类和 AcDbMText 类的相关函
数进行封装。文字在 CAD 软件开发中涉及到较多的操作。
2. 思路

        创建文字对象可以使用 AcDbText 类的构造函数
                其构造函数定义为:
AcDbText( const AcGePoint3d& position,              //position 指定文字的插入点;
         const char* text,                          //text 是将要创建的文字对象的内容;
         AcDbObjectId style = AcDbObjectId::kNull,  //style 指定要使用的文字样式的 ID,默认情况下使用 AutoCAD 中缺省的文字样式;
         double height = 0,                         //height 为文字的高度;
         double rotation = 0);                      //rotation 为文字的旋转角度。
        AcDbMText 类对应 AutoCAD 中的多行文字,该类的构造函数不接受任何参数,仅能创建一个空的多行文字对象。要创建多行文字,在调用构造函数之后,必须在将其添加到模型空间之前调用 setTextStyle 和 setContents 函数,也可同时调用其它函数来设置多行文字的特性。
3. 步骤

(1) 创建文字

    //创建文字
    static AcDbObjectId CreateText(const AcGePoint3d& ptInsert, const TCHAR* text, AcDbObjectId style = AcDbObjectId::kNull, double height = 2.5, double rotation = 0);//单行文字
    static AcDbObjectId CreateMText(const AcGePoint3d& ptInsert, const TCHAR* text, AcDbObjectId style = AcDbObjectId::kNull, double height = 2.5, double width = 10);//多行文字
//单行文字
AcDbObjectId CCreateEnt::CreateText(const AcGePoint3d& ptInsert, const TCHAR* text, AcDbObjectId style, double height, double rotation)
{
    AcDbText *pText = new AcDbText(ptInsert, text, style, height, rotation);

    AcDbObjectId textId;
    textId = CCreateEnt::PostToModelSpace(pText);
    return textId;
}

//多行文字
AcDbObjectId CCreateEnt::CreateMText(const AcGePoint3d& ptInsert, const TCHAR* text, AcDbObjectId style, double height, double width)
{
    AcDbMText *pMText = new AcDbMText();

    // 设置多行文字的特性
    pMText->setTextStyle(style);
    pMText->setContents(text);
    pMText->setLocation(ptInsert);
    pMText->setTextHeight(height);
    pMText->setWidth(width);
    pMText->setAttachment(AcDbMText::kBottomLeft);
    AcDbObjectId mTextId;
    mTextId = CCreateEnt::PostToModelSpace(pMText);
    return mTextId;
}

(2) 在acrxEntryPoint.cpp中

ACED_ARXCOMMAND_ENTRY_AUTO(CArxConfigApp, MidasMyGroup, MyDrawText, MyDrawText, ACRX_CMD_MODAL, NULL) //画文字
//当前项目中注册一个命令 AddText
    static void MidasMyGroupMyDrawText()
    {
        // 创建单行文字
        AcGePoint3d ptInsert(0, 5, 0);
        AcDbObjectId textId;
        textId = CCreateEnt::CreateText(ptInsert, _T("ObjectARX学习"));
        // 创建多行文字
        AcGePoint3d ptInsert1(0, 0, 0);
        AcDbObjectId mTextId;
        mTextId = CCreateEnt::CreateMText(ptInsert, _T("ObjectARX2015创建文字示例"));
        CModifyEnt m_modifyEnt;
        m_modifyEnt.ChangeColor(textId, 1);
        m_modifyEnt.ChangeColor(mTextId, 1);
    }


原文链接:https://blog.csdn.net/qq_42981953/article/details/121829628[/code]

 

 

 

 

ObjectARX2015 + vs2012创建文字
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:29 , Processed in 0.129071 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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