天气与日历 切换到窄版

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

ObjectARX2015 + vs2012创建标注样式

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
本篇介绍创建一个新的标注样式,在程序中设置了
                (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());

 

 

 

 

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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