新建标注样式并设置为当前
<p>// //创建标注样式<br/>AcDbObjectId Cfuhaobiao::AddDimStyle(char styleName,int bili,AcDbObjectId lineId2)<br/>{</p><p> // 获得当前图形的标注样式表<br/> AcDbObjectId lineId;<br/> struct resbuf pResult;<br/> AcDbDimStyleTable *pDimStyleTbl;<br/> acdbHostApplicationServices()->workingDatabase()<br/> ->getDimStyleTable(pDimStyleTbl, AcDb::kForWrite);</p><p> // 创建新的标注样式表记录<br/> AcDbDimStyleTableRecord *pDimStyleTblRcd;<br/> pDimStyleTblRcd = new AcDbDimStyleTableRecord();</p><p> if (pDimStyleTbl->has(styleName))<br/> {</p><p> pDimStyleTbl->close();<br/> <br/> acdbHostApplicationServices()->workingDatabase()<br/> ->getDimStyleTable(pDimStyleTbl, AcDb::kForRead);</p><p> pDimStyleTbl->getAt(styleName, lineId);</p><p> //把标注样式设置为当前<br/>acedGetVar(_T("DIMSTYLE"),&pResult);//取得当前标注</p><p>//如果用下面的方法则标注样式会有一个"样式替代"</p><p> if (pResult.resval.rstring !=styleName )<br/> acdbHostApplicationServices()->workingDatabase()<br/> ->setDimstyle(lineId);<br/> </p><p> pDimStyleTbl->close();<br/> return lineId;<br/> }</p><p> // 设置标注样式的特性<br/> pDimStyleTblRcd->setName(styleName); // 样式名称<br/> pDimStyleTblRcd->setDimasz(50*bili); // 箭头长度</p><p> pDimStyleTblRcd->setDimblk("_Oblique");//设置箭头的形状为建筑标记</p><p> pDimStyleTblRcd->setDimexe(30*bili); // 指定尺寸界线超出尺寸线的距离<br/> pDimStyleTblRcd->setDimlfac(1);//比例因子<br/> AcCmColor suiceng;<br/> suiceng.setColorIndex(256);<br/> pDimStyleTblRcd->setDimclrd(suiceng);//为尺寸线、箭头和标注引线指定颜色,0为随图层<br/> pDimStyleTblRcd->setDimclre(suiceng);//为尺寸界线指定颜色。此颜色可以是任意有效的颜色编号<br/> pDimStyleTblRcd->setDimclrt(suiceng);//为标注文字指定颜色,0为随图层<br/> pDimStyleTblRcd->setDimdec(0);//设置标注主单位显示的小数位位数,0为随图层<br/> <br/> pDimStyleTblRcd->setDimexo(30*bili);//指定尺寸界线偏移原点的距离<br/> <br/> pDimStyleTblRcd->setDimgap(10*bili);//文字从尺寸线偏移 '当尺寸线分成段以在两段之间放置标注文字时,设置标注文字周围的距离<br/> pDimStyleTblRcd->setDimjust(0);//控制标注文字的水平位置<br/> pDimStyleTblRcd->setDimtix(1);//设置标注文字始终绘制在尺寸界线之间</p><p><br/> //'.SetVariable "DimJust", 0 '控制标注文字的水平位置<br/> // '0 将文字置于尺寸线之上,并在尺寸界线之间置中对正<br/> // '1 紧邻第一条尺寸界线放置标注文字<br/> // '2 紧邻第二条尺寸界线放置标注文字<br/> // '3 将标注文字放在第一条尺寸界线以上,并与之对齐<br/> //'4 将标注文字放在第二条尺寸界线以上,并与之对齐<br/> pDimStyleTblRcd->setDimtmove(0);//设置标注文字的移动规则</p><p> //'0 尺寸线和标注文字一起移动<br/> //'1 在移动标注文字时添加一条引线<br/> // '2 允许标注文字自由移动而不用添加引线</p><p> pDimStyleTblRcd->setDimtxsty(lineId2);//指定标注的文字样式</p><p> pDimStyleTblRcd->setDimtxt(100);//指定标注文字的高度,除非当前文字样式具有固定的高度<br/> <br/> pDimStyleTblRcd->setDimtad(1*bili); // 文字位于标注线的上方<br/> <br/> <br/> // 将标注样式表记录添加到标注样式表中<br/> pDimStyleTbl->add(lineId,pDimStyleTblRcd);</p><p> pDimStyleTblRcd->close();<br/> //设置为当前<br/> pDimStyleTbl->close();<br/> acdbHostApplicationServices()->workingDatabase()<br/> ->getDimStyleTable(pDimStyleTbl, AcDb::kForRead);<br/> //使用下面的方法不成功~<br/> acedGetVar(_T("DIMSTYLE"),&pResult);//取得当前标注<br/> pResult.resval.rstring =styleName;//;pLtName;<br/> acedSetVar(_T("DIMSTYLE"), &pResult); <br/> pDimStyleTbl->close();<br/> return lineId;</p><p>}</p><p></p><p>问题是:我如何把某一标注样式设置为当前的标注样式,并且不要出现样式替代?</p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p> acdbHostApplicationServices()->workingDatabase()->setDimstyle(pDimStyleTblRcd->objectId());<br/> 也在等答案,谁能回答啊 thank you 我已经钻研出来了 有很强的可以说读性啊! acdbHostApplicationServices()->workingDatabase()->setDimstyleData(idDimstyle);acdbHostApplicationServices()->workingDatabase()->setDimstyle(idDimstyle);
上面两个同时用 感谢……楼上的
页:
[1]