乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 94|回复: 6

贴个尺寸标注的例子

[复制链接]

7

主题

18

帖子

1

银币

初来乍到

Rank: 1

铜币
46
发表于 2005-9-2 14:21:00 | 显示全部楼层 |阅读模式
#include
#include
void blade2d();
{
AcDbLine *pLn1;
AcDbObjectId lineId1;
AcDbObjectId dimId1,dimId2;
AcGePoint3d cp,cp1,cp2,dp1,dp2,dp3;
AcDbEntity *pEnt;
AcDbAlignedDimension *pDimAli1;
cp1.x=cp2.x=cp1.y=0;
cp2.y=120;
cp1.z=cp2.z=cp.z=0;
pLn1=new AcDbLine(cp1,cp2);
lineId1=AddEntityToDbs(1,pLn1);  //AddEntityToDbs为自定义的函数,作用是将直线
                                                         // 加到块表记录中去
  pLn1->close();

acdbOpenObject(pEnt,lineId1,AcDb::kForRead);
//设置尺寸标注样式
AcDbObjectId dimStyleId=defineDimStyle();
//将该尺寸标注样式设置为当前使用的标注样式
acdbCurDwg()->setDimstyle(dimStyleId);

//尺寸标注(先竖后横)
pLn1=AcDbLine::cast(pEnt);
dp1=pLn1->startPoint();
dp2=pLn1->endPoint();
dp3.x=dp2.x-8;
dp3.y=dp2.y;
dp3.z=0;
pLn1->close();
pEnt->close();
pDimAli1=new AcDbAlignedDimension(dp1,dp2,dp3,NULL,dimStyleId);
//或者直接用下面的代码也可以
// dp3.set(-8,0,0);
// pDimAli1=new AcDbAlignedDimension(ulp,llp,dp3,NULL,AcDbObjectId::kNull);
dimId1=AddEntityToDbs(2,pDimAli1);
pDimAli1->close();
}

AcDbObjectId CShowGraphDlg::defineDimStyle()
{
AcDbDimStyleTable *pDimStyleTbl;
AcDbObjectId dimStyleId;
acdbCurDwg()->getDimStyleTable(pDimStyleTbl,AcDb::kForRead);
//等价于acdbHostApplicationServices()->workingDatabase()->getDimStyleTable(pDimStyleTbl,AcDb::kForWrite);
AcDbDimStyleTableRecord *pDimStyleTblRcd;
//当存在着NewDim标注样式时,我们不必再进行修改设置,只要得到其ID即可,不存在才进行设置修改工作
//另外这样也绕过了对当前标注样式进行修改无效的问题
if(Acad::eOk!=pDimStyleTbl->getAt("NewDim",dimStyleId,AcDb::kForWrite))
{
  pDimStyleTbl->upgradeOpen();
  pDimStyleTblRcd=new AcDbDimStyleTableRecord;
//设置尺寸标注样式表记录名
  pDimStyleTblRcd->setName("NewDim");
//调用设置尺寸变量函数
  setDimVar(pDimStyleTblRcd);
//添加新的尺寸标注样式表记录
  pDimStyleTbl->add(dimStyleId,pDimStyleTblRcd);
  pDimStyleTblRcd->close();
}
pDimStyleTbl->close();
return dimStyleId;
}
void CShowGraphDlg::setDimVar(AcDbDimStyleTableRecord *pDimStyleTblRcd)
{
pDimStyleTblRcd->setDimasz(3);  //箭头长度为3
pDimStyleTblRcd->setDimexe(3);  //尺寸界线在标注线上方延伸量为3
pDimStyleTblRcd->setDimexo(0);  //尺寸界线起点偏移量为0
// pDimStyleTblRcd->setDimdli(6);  //标注线间距为6
pDimStyleTblRcd->setDimdsep(0);  //采用逗点作小数分隔符
pDimStyleTblRcd->setDimtad(1);  //文字位于标注线上方
pDimStyleTblRcd->setDimtih(0);  //尺寸界线内侧的文字水平放置
pDimStyleTblRcd->setDimtoh(0);  //尺寸界线外侧的文字水平放置
pDimStyleTblRcd->setDimtxt(4);  //文字尺寸高度为4
pDimStyleTblRcd->setDimgap(1);  //标注线与文字间距为1
pDimStyleTblRcd->setDimdec(1);  //小数位数
pDimStyleTblRcd->setDimtix(1);  //将文字放置于尺寸界线内侧
pDimStyleTblRcd->setDimtofl(1);  //强制在尺寸界线内侧画标注线
//调用取得文字样式ID号的函数
AcDbObjectId styleId=getTextStyleId();
pDimStyleTblRcd->setDimtxsty(styleId);  //设置文字样式
}
AcDbObjectId CShowGraphDlg::getTextStyleId()
{
AcDbObjectId styleId;
AcDbTextStyleTable *pTextStyleTbl;
acdbCurDwg()->getTextStyleTable(pTextStyleTbl,AcDb::kForWrite);
if(Acad::eOk!=pTextStyleTbl->getAt("DimTextStyle",styleId))
{
  AcDbTextStyleTableRecord *pTextStyleTblRcd=new AcDbTextStyleTableRecord;
//设置字体样式表记录名
  pTextStyleTblRcd->setName("DimTextStyle");
//设置字体文件名
  pTextStyleTblRcd->setFileName("samplex");
//设置字体宽度比例为0.7
  pTextStyleTblRcd->setXScale(0.7);
//添加字体样式表记录
  pTextStyleTbl->add(styleId,pTextStyleTblRcd);
  pTextStyleTblRcd->close();
}
pTextStyleTbl->close();
return styleId;
}
呵呵,很多代码也是参考的他人的
偶是小菜,有什么错误之处,还请大侠别取笑偶!
回复

使用道具 举报

5

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2005-9-7 10:30:00 | 显示全部楼层
问下:error C2653: 'CShowGraphDlg' : is not a class or namespace name
这个错误怎么改!
回复

使用道具 举报

1

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
9
发表于 2005-9-19 15:07:00 | 显示全部楼层
~~
回复

使用道具 举报

5

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2005-9-20 15:12:00 | 显示全部楼层
方便的话把调试程序给我一份可一吗?谢谢
xlgis@hotmail.com
回复

使用道具 举报

5

主题

12

帖子

4

银币

初来乍到

Rank: 1

铜币
32
发表于 2006-2-17 09:58:00 | 显示全部楼层
错误多多.
回复

使用道具 举报

2

主题

87

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2011-7-30 16:44:00 | 显示全部楼层
内容简介内容简介
回复

使用道具 举报

2

主题

87

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2011-7-30 17:07:00 | 显示全部楼层
有深度,有内涵,我不会
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 14:56 , Processed in 0.151919 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表