(25)ObjectARX2015 + vs2012创建标注样式

1. 说明

        本篇介绍创建一个新的标注样式,在程序中设置了
                (1)标注样式的名称、
                (2)箭头大小、
                (3)尺寸、
                (4) 界线超出尺寸线的长度、
                (5)文字、
                (6) 标注线的位置关系、
                (7)标注文字的高度。
2. 思路
        与创建文字样式类似,在 ObjectARX 中创建标注样式可以按照下面的步骤进行:
        (1 )创建一个新的标注样式表记录对象;
        (2)设置标注样式表记录的各项特性,例如标注样式的名称、文字高度、箭头大小等;
        (3)将新的标注样式表记录添加到当前图形的标注样式表中。
3. 步骤
(1) 新建一个 CDimStyle 类, 添加 AddDimStyle() 函数
    //添加标注样式
    static void AddDimStyle(); //添加标注样式
//添加标注样式
void CDimStyle::AddDimStyle()
{
    // 获得要创建的标注样式名称
    TCHAR styleName[100];
    if (acedGetString(Adesk::kFalse, _T("\n输入新样式的名称:"), styleName) != RTNORM)
    {
        return;
    }

    // 获得当前图形的标注样式表
    AcDbDimStyleTable *pDimStyleTbl;
    acdbHostApplicationServices()->workingDatabase()->getDimStyleTable(pDimStyleTbl, AcDb::kForWrite);
    if (pDimStyleTbl->has(styleName))
    {
        pDimStyleTbl->close();
        return;
    }
    
    // 创建新的标注样式表记录
    AcDbDimStyleTableRecord *pDimStyleTblRcd;
    pDimStyleTblRcd = new AcDbDimStyleTableRecord();
    
    // 设置标注样式的特性
    pDimStyleTblRcd->setName(styleName); // 样式名称
    pDimStyleTblRcd->setDimasz(3); // 箭头长度
    pDimStyleTblRcd->setDimexe(3); // 尺寸界线与标注点的偏移量
    pDimStyleTblRcd->setDimtad(1); // 文字位于标注线的上方
    pDimStyleTblRcd->setDimtxt(3); // 标注文字的高度
    
    // 将标注样式表记录添加到标注样式表中
    pDimStyleTbl->add(pDimStyleTblRcd);
    
    // 关闭
    pDimStyleTblRcd->close();
    pDimStyleTbl->close();
}

(2) 在acrxEntryPoint.cpp中

ACED_ARXCOMMAND_ENTRY_AUTO(CArxConfigApp, MidasMyGroup, MyAddDimStyle, MyAddDimStyle, ACRX_CMD_MODAL, NULL) //标注样式
    //当前项目中注册命令 AddDimStyle
    static void MidasMyGroupMyAddDimStyle()
    {
        CDimStyle::AddDimStyle();
    }

效果展示

1. 输入命令前

 2. 输入命令后

拓展:

        在设置新标注样式的特性时,可以先获得系统中存在的标注样式,用已有的标注样式的特性来设置新的标注样式即可。下面的代码演示用已有的标注样式的部分特性来设置新建的标注样式:

// 创建新的标注样式表记录
AcDbDimStyleTableRecord *pDimStyleTblRcd; 
pDimStyleTblRcd = new AcDbDimStyleTableRecord(); 
// 获得已经存在的标注样式ISO-25 
AcDbDimStyleTableRecord *pOldStyle; 
pDimStyleTbl->getAt(_T("ISO-25"), pOldStyle, AcDb::kForRead); 
// 设置新标注样式的特性
pDimStyleTblRcd->setName(styleName); 
pDimStyleTblRcd->setDimtxt(pOldStyle->dimtxt()); 
pDimStyleTblRcd->setDimasz(pOldStyle->dimasz()); 
pDimStyleTblRcd->setDimexe(pOldStyle->dimexe()); 
pDimStyleTblRcd->setDimtad(pOldStyle->dimtad());

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值