Pangge_118 发表于 2004-5-13 11:01:00

请教在ObjectARX中如何标尺寸?

请教大哥大姐们:


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


在此先谢谢了哈!!!!!!!

111111 发表于 2004-5-13 12:54:00

先定义尺寸样式,如下:


void CreateNewDimStyle(char *dimname)<BR>{//创建尺寸样式,并设置为数据库默认的尺寸样式,但在使用AcDbDimension类时,好象还得调用setDimensionStyle()。


        AcDbDatabase *pcurdb=acdbHostApplicationServices()-&gt;workingDatabase();<BR>        AcDbDimStyleTable *pnewdimtable;<BR>        pcurdb-&gt;getSymbolTable(pnewdimtable,AcDb::kForWrite);<BR>        AcDbDimStyleTableRecord *pnewdimrecord=new AcDbDimStyleTableRecord();<BR>//下面改变尺寸标注样式的默认值<BR>        pnewdimrecord-&gt;setDimasz(100);//设置箭头大小<BR>        pnewdimrecord-&gt;setDimzin(8);//十进制小数显示时,抑制后续零<BR>        pnewdimrecord-&gt;setDimblk("_ARCHTICK");//设置箭头的形状为建筑标记<BR>        pnewdimrecord-&gt;setDimexe(400);//设置尺寸界线超出尺寸线距离为400<BR>        pnewdimrecord-&gt;setDimexo(300);//设置尺寸界线的起点偏移量为300<BR>        pnewdimrecord-&gt;setDimtxt(200);//设置文字高度<BR>        pnewdimrecord-&gt;setDimtad(1);//设置文字位置-垂直为上方,水平默认为居中,不用设置<BR>        pnewdimrecord-&gt;setDimgap(100);//设置文字位置-从尺寸线的偏移量<BR>        pnewdimrecord-&gt;setDimtih(0);       pnewdimrecord-&gt;setDimtoh(0);//设置文字对齐为:与尺寸线对齐<BR>        pnewdimrecord-&gt;setDimtix(1);//设置标注文字始终绘制在尺寸界线之间<BR>        pnewdimrecord-&gt;setDimtofl(1);//即使箭头放置于测量点之外,尺寸线也将绘制在测量点之间<BR>        pnewdimrecord-&gt;setName(dimname);//设置尺寸样式的名称<BR>        AcDbObjectId dimrecordid;<BR>        pnewdimtable-&gt;add(dimrecordid,pnewdimrecord);<BR>        pnewdimtable-&gt;close();<BR>        pnewdimrecord-&gt;close();<BR>        if(strcmp(dimname,"my_dim")==0)<BR>                       pcurdb-&gt;setDimstyle(dimrecordid);//设置新创建的尺寸样式为数据库的尺寸样式


}


然后创建AcDbAlignedDimension实体,并添加到模型空间即可,如下:


        AcDbAlignedDimension *pnewdim=new AcDbAlignedDimension(Line1Point,Line2Point,dimLinePoint,NULL,GetDimId("my_dim"));//创建标注实体<BR>        pnewdim-&gt;setLayer(GetLayerId("biaozhu_layer"));//设置它到标注层,而不是当前的层<BR>       AcDbObjectId dimid;<BR>        AddToModelspace(pnewdim,dimid);


这是从我的程序中摘录下来的,希望能对你有所帮助!

easypower 发表于 2004-5-14 09:04:00

同意樓上的


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


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


感覺沒有起作用.


希望幫忙.

111111 发表于 2004-5-14 15:05:00

我不知道你是什么意思,你输入命令:DIMSTYLE,看看它是否已被置为数据库的当前样式!

easypower 发表于 2004-5-15 13:55:00

virtual AcRx::AppRetCode On_kLoadDwgMsg (void *pkt) {<BR>                AcRx::AppRetCode retCode =AcRxArxApp::On_kLoadDwgMsg (pkt) ;<BR>                // TODO: Add your initialization code here<BR>                acedCommand(RTSTR,"dimstyle",RTSTR,"",RTSTR,"CM-ST001",0);<BR>                acedCommand(RTSTR,"textstyle",RTSTR,"CMS01",0);<BR>                return (retCode) ;<BR>        }


       


以上代碼在你新開AutoCAD時起效果,但是當你在已開AutoCAD中新開文檔時不起效果.ARX已設置為AutoCAD自動加載.

111111 发表于 2004-5-15 14:00:00

我也不知道问题出在哪!

easypower 发表于 2004-5-16 18:39:00

你在你那试下,是不是这样的情况呢?

nnwu 发表于 2004-5-17 11:06:00

我还遇到一个关于标注的问题 ,我想提取标注的文本信息,有没有比较方便的方法啊!
页: [1]
查看完整版本: 请教在ObjectARX中如何标尺寸?