|
[code]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());
原文链接:https://blog.csdn.net/qq_42981953/article/details/121906505[/code] |
|