(24)ObjectARX2015 + vs2012创建字体样式

本文详细介绍了如何在AutoCAD中通过STYLE命令创建新的字体样式,包括设置样式名、选择字体文件和确定字体效果。通过ObjectARX编程,可以实现创建字体样式的自动化。具体步骤涉及获取字体样式表、创建新记录、设置名称和字体文件、调整高宽比,并最终将新记录添加到表中。此外,还展示了如何在C++代码中实现这一过程。
摘要由CSDN通过智能技术生成

1. 说明

        AutoCAD 中可以使用 STYLE 命令创建新的字体样式,包括
                设置样式名、
                选择字体文件、
                确定字体效果、
        三个步骤。本篇将演示创建字体样式的方法。
2. 思路
        使用 ObjectARX 创建字体样式,需要执行下面的步骤:
                (1)获得当前图形的字体样式表;
                (2)创建新的字体样式表记录对象;
                (3)用 setName 函数设置字体样式表记录的名称;
                (4)用 setFileName 函数设置字体样式表记录的字体;
                (5)用 setXScale 函数设置字体样式的高宽比;
                (6)将新的字体样式表记录添加到字体样式表中。
3. 步骤
(1) 新建一个 CTextStyle 类, 添加 AddTextStyle() 函数
        上面的代码中使用的是 TrueType 字体,如果 AutoCAD 自身的 SHX 字体,就无需指定字体文件的扩展名,例如:
        pTextStyleTblRcd->setFileName("romans");
        此外,字体的名称不一定与字体文件的名称相同。打开控制面板,进入“字体”文件夹,右键单击“仿宋体”图标,从弹出的快捷菜单中选择【属性】菜单项,系统会弹出如图 所示的对话框,显示了字体文件的名称。

 

    // 添加文字样式
    static void AddTextStyle(); // 添加文字样式
// 添加文字样式
void CTextStyle::AddTextStyle()
{
    // 获得字体样式表
    AcDbTextStyleTable *pTextStyleTbl;
    acdbHostApplicationServices()->workingDatabase()->getTextStyleTable(pTextStyleTbl, AcDb::kForWrite); 
    
    // 创建新的字体样式表记录
    AcDbTextStyleTableRecord *pTextStyleTblRcd;
    pTextStyleTblRcd = new AcDbTextStyleTableRecord();
    
    // 设置字体样式表记录的名称
    pTextStyleTblRcd->setName(_T("仿宋体"));
    
    // 设置字体文件名称
    pTextStyleTblRcd->setFileName(_T("simfang.ttf"));
    
    // 设置高宽比例
    pTextStyleTblRcd->setXScale(0.7);
    
    // 将新的记录添加到字体样式表 
    pTextStyleTbl->add(pTextStyleTblRcd);
    pTextStyleTblRcd->close();
    pTextStyleTbl->close();
}

(2) 在acrxEntryPoint.cpp中

ACED_ARXCOMMAND_ENTRY_AUTO(CArxConfigApp, MidasMyGroup, MyAddTextStyle, MyAddTextStyle, ACRX_CMD_MODAL, NULL) //字体样式
    //当前项目中注册命令 AddTextStyle
    static void MidasMyGroupMyAddTextStyle()
    {
        CTextStyle::AddTextStyle();
    }

效果展示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值