乐筑天下

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

新建标注样式并设置为当前

[复制链接]

4

主题

16

帖子

3

银币

初来乍到

Rank: 1

铜币
32
发表于 2008-7-31 08:41:00 | 显示全部楼层 |阅读模式
//   //创建标注样式
AcDbObjectId Cfuhaobiao::AddDimStyle(char styleName[100],int bili,AcDbObjectId lineId2)
{
// 获得当前图形的标注样式表
AcDbObjectId lineId;
struct resbuf pResult;
AcDbDimStyleTable *pDimStyleTbl;
acdbHostApplicationServices()->workingDatabase()
  ->getDimStyleTable(pDimStyleTbl, AcDb::kForWrite);
// 创建新的标注样式表记录
AcDbDimStyleTableRecord *pDimStyleTblRcd;
pDimStyleTblRcd = new AcDbDimStyleTableRecord();
if (pDimStyleTbl->has(styleName))
{
      pDimStyleTbl->close();
      
   acdbHostApplicationServices()->workingDatabase()
  ->getDimStyleTable(pDimStyleTbl, AcDb::kForRead);
    pDimStyleTbl->getAt(styleName, lineId);
  //把标注样式设置为当前
acedGetVar(_T("DIMSTYLE"),&pResult);//取得当前标注
//如果用下面的方法则标注样式会有一个"样式替代"
if  (pResult.resval.rstring !=styleName )
acdbHostApplicationServices()->workingDatabase()
->setDimstyle(lineId);

  pDimStyleTbl->close();
  return lineId;
}
// 设置标注样式的特性
pDimStyleTblRcd->setName(styleName); // 样式名称
pDimStyleTblRcd->setDimasz(50*bili); // 箭头长度
pDimStyleTblRcd->setDimblk("_Oblique");//设置箭头的形状为建筑标记
pDimStyleTblRcd->setDimexe(30*bili); // 指定尺寸界线超出尺寸线的距离
    pDimStyleTblRcd->setDimlfac(1);//比例因子
    AcCmColor suiceng;
     suiceng.setColorIndex(256);
    pDimStyleTblRcd->setDimclrd(suiceng);//为尺寸线、箭头和标注引线指定颜色,0为随图层
    pDimStyleTblRcd->setDimclre(suiceng);//为尺寸界线指定颜色。此颜色可以是任意有效的颜色编号
    pDimStyleTblRcd->setDimclrt(suiceng);//为标注文字指定颜色,0为随图层
    pDimStyleTblRcd->setDimdec(0);//设置标注主单位显示的小数位位数,0为随图层

   pDimStyleTblRcd->setDimexo(30*bili);//指定尺寸界线偏移原点的距离

   pDimStyleTblRcd->setDimgap(10*bili);//文字从尺寸线偏移 '当尺寸线分成段以在两段之间放置标注文字时,设置标注文字周围的距离
pDimStyleTblRcd->setDimjust(0);//控制标注文字的水平位置
pDimStyleTblRcd->setDimtix(1);//设置标注文字始终绘制在尺寸界线之间
//'.SetVariable "DimJust", 0       '控制标注文字的水平位置
// '0  将文字置于尺寸线之上,并在尺寸界线之间置中对正
// '1  紧邻第一条尺寸界线放置标注文字
// '2  紧邻第二条尺寸界线放置标注文字
// '3  将标注文字放在第一条尺寸界线以上,并与之对齐
    //'4  将标注文字放在第二条尺寸界线以上,并与之对齐
    pDimStyleTblRcd->setDimtmove(0);//设置标注文字的移动规则
//'0  尺寸线和标注文字一起移动
//'1  在移动标注文字时添加一条引线
    // '2  允许标注文字自由移动而不用添加引线
    pDimStyleTblRcd->setDimtxsty(lineId2);//指定标注的文字样式
    pDimStyleTblRcd->setDimtxt(100);//指定标注文字的高度,除非当前文字样式具有固定的高度
   
pDimStyleTblRcd->setDimtad(1*bili); // 文字位于标注线的上方


// 将标注样式表记录添加到标注样式表中
pDimStyleTbl->add(lineId,pDimStyleTblRcd);
   pDimStyleTblRcd->close();
//设置为当前
pDimStyleTbl->close();
acdbHostApplicationServices()->workingDatabase()
  ->getDimStyleTable(pDimStyleTbl, AcDb::kForRead);
//使用下面的方法不成功~
acedGetVar(_T("DIMSTYLE"),&pResult);//取得当前标注
pResult.resval.rstring =styleName;//;pLtName;
   acedSetVar(_T("DIMSTYLE"), &pResult);
pDimStyleTbl->close();
return lineId;
}
问题是:我如何把某一标注样式设置为当前的标注样式,并且不要出现样式替代?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2008-8-13 08:38:00 | 显示全部楼层
acdbHostApplicationServices()->workingDatabase()->setDimstyle(pDimStyleTblRcd->objectId());
回复

使用道具 举报

2

主题

87

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2011-7-20 16:16:00 | 显示全部楼层
也在等答案,谁能回答啊
回复

使用道具 举报

2

主题

87

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2011-8-1 11:23:00 | 显示全部楼层
thank you
回复

使用道具 举报

2

主题

87

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2011-8-5 17:24:00 | 显示全部楼层
我已经钻研出来了
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
2
发表于 2011-8-6 20:24:00 | 显示全部楼层
有很强的  可以说读性啊!
回复

使用道具 举报

14

主题

94

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2011-8-7 22:22:00 | 显示全部楼层
acdbHostApplicationServices()->workingDatabase()->setDimstyleData(idDimstyle);
    acdbHostApplicationServices()->workingDatabase()->setDimstyle(idDimstyle);
上面两个同时用
回复

使用道具 举报

0

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
4
发表于 2011-11-13 15:56:00 | 显示全部楼层
感谢……楼上的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 14:07 , Processed in 0.439365 second(s), 68 queries .

© 2020-2025 乐筑天下

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