明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6881|回复: 7

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

[复制链接]
发表于 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;

}

问题是:我如何把某一标注样式设置为当前的标注样式,并且不要出现样式替代?

发表于 2008-8-13 08:38:00 | 显示全部楼层
acdbHostApplicationServices()->workingDatabase()->setDimstyle(pDimStyleTblRcd->objectId());
发表于 2011-7-20 16:16:19 | 显示全部楼层
也在等答案,谁能回答啊
发表于 2011-8-1 11:23:01 | 显示全部楼层
thank you
发表于 2011-8-5 17:24:29 | 显示全部楼层
我已经钻研出来了
发表于 2011-8-6 20:24:25 | 显示全部楼层
有很强的  可以说读性啊!
发表于 2011-8-7 22:22:03 | 显示全部楼层
    acdbHostApplicationServices()->workingDatabase()->setDimstyleData(idDimstyle);
    acdbHostApplicationServices()->workingDatabase()->setDimstyle(idDimstyle);
上面两个同时用
发表于 2011-11-13 15:56:37 | 显示全部楼层
感谢……楼上的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 10:01 , Processed in 0.151105 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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