明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3781|回复: 7

请教在ObjectARX中如何标尺寸?

[复制链接]
发表于 2004-5-13 11:01:00 | 显示全部楼层 |阅读模式
请教大哥大姐们:


在ObjectARX中如何运用Dimsions类来进行尺寸标注?


在此先谢谢了哈!!!!!!!
发表于 2004-5-13 12:54:00 | 显示全部楼层
先定义尺寸样式,如下: void CreateNewDimStyle(char *dimname)
{//创建尺寸样式,并设置为数据库默认的尺寸样式,但在使用AcDbDimension类时,好象还得调用setDimensionStyle()。 AcDbDatabase *pcurdb=acdbHostApplicationServices()->workingDatabase();
AcDbDimStyleTable *pnewdimtable;
pcurdb->getSymbolTable(pnewdimtable,AcDb::kForWrite);
AcDbDimStyleTableRecord *pnewdimrecord=new AcDbDimStyleTableRecord();
//下面改变尺寸标注样式的默认值
pnewdimrecord->setDimasz(100);//设置箭头大小
pnewdimrecord->setDimzin(8);//十进制小数显示时,抑制后续零
pnewdimrecord->setDimblk("_ARCHTICK");//设置箭头的形状为建筑标记
pnewdimrecord->setDimexe(400);//设置尺寸界线超出尺寸线距离为400
pnewdimrecord->setDimexo(300);//设置尺寸界线的起点偏移量为300
pnewdimrecord->setDimtxt(200);//设置文字高度
pnewdimrecord->setDimtad(1);//设置文字位置-垂直为上方,水平默认为居中,不用设置
pnewdimrecord->setDimgap(100);//设置文字位置-从尺寸线的偏移量
pnewdimrecord->setDimtih(0); pnewdimrecord->setDimtoh(0);//设置文字对齐为:与尺寸线对齐
pnewdimrecord->setDimtix(1);//设置标注文字始终绘制在尺寸界线之间
pnewdimrecord->setDimtofl(1);//即使箭头放置于测量点之外,尺寸线也将绘制在测量点之间
pnewdimrecord->setName(dimname);//设置尺寸样式的名称
AcDbObjectId dimrecordid;
pnewdimtable->add(dimrecordid,pnewdimrecord);
pnewdimtable->close();
pnewdimrecord->close();
if(strcmp(dimname,"my_dim")==0)
pcurdb->setDimstyle(dimrecordid);//设置新创建的尺寸样式为数据库的尺寸样式 } 然后创建AcDbAlignedDimension实体,并添加到模型空间即可,如下: AcDbAlignedDimension *pnewdim=new AcDbAlignedDimension(Line1Point,Line2Point,dimLinePoint,NULL,GetDimId("my_dim"));//创建标注实体
pnewdim->setLayer(GetLayerId("biaozhu_layer"));//设置它到标注层,而不是当前的层
AcDbObjectId dimid;
AddToModelspace(pnewdim,dimid); 这是从我的程序中摘录下来的,希望能对你有所帮助!
发表于 2004-5-14 09:04:00 | 显示全部楼层
同意樓上的


但是為何我在On_kLoadDwgMsg函數中調用


        pcurdb->setDimstyle(dimrecordid);//设置新创建的尺寸样式为数据库的尺寸样式


感覺沒有起作用.


希望幫忙.
发表于 2004-5-14 15:05:00 | 显示全部楼层
我不知道你是什么意思,你输入命令:DIMSTYLE,看看它是否已被置为数据库的当前样式!
发表于 2004-5-15 13:55:00 | 显示全部楼层
virtual AcRx::AppRetCode On_kLoadDwgMsg (void *pkt) {
AcRx::AppRetCode retCode =AcRxArxApp::On_kLoadDwgMsg (pkt) ;
// TODO: Add your initialization code here
acedCommand(RTSTR,"dimstyle",RTSTR,"",RTSTR,"CM-ST001",0);
acedCommand(RTSTR,"textstyle",RTSTR,"CMS01",0);
return (retCode) ;
} 以上代碼在你新開AutoCAD時起效果,但是當你在已開AutoCAD中新開文檔時不起效果.ARX已設置為AutoCAD自動加載.
发表于 2004-5-15 14:00:00 | 显示全部楼层
我也不知道问题出在哪!
发表于 2004-5-16 18:39:00 | 显示全部楼层
你在你那试下,是不是这样的情况呢?
发表于 2004-5-17 11:06:00 | 显示全部楼层
我还遇到一个关于标注的问题 ,我想提取标注的文本信息,有没有比较方便的方法啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 05:32 , Processed in 0.175560 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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