请教在ObjectARX中如何标尺寸?
请教大哥大姐们:在ObjectARX中如何运用Dimsions类来进行尺寸标注?
在此先谢谢了哈!!!!!!! 先定义尺寸样式,如下:
void CreateNewDimStyle(char *dimname)<BR>{//创建尺寸样式,并设置为数据库默认的尺寸样式,但在使用AcDbDimension类时,好象还得调用setDimensionStyle()。
AcDbDatabase *pcurdb=acdbHostApplicationServices()->workingDatabase();<BR> AcDbDimStyleTable *pnewdimtable;<BR> pcurdb->getSymbolTable(pnewdimtable,AcDb::kForWrite);<BR> AcDbDimStyleTableRecord *pnewdimrecord=new AcDbDimStyleTableRecord();<BR>//下面改变尺寸标注样式的默认值<BR> pnewdimrecord->setDimasz(100);//设置箭头大小<BR> pnewdimrecord->setDimzin(8);//十进制小数显示时,抑制后续零<BR> pnewdimrecord->setDimblk("_ARCHTICK");//设置箭头的形状为建筑标记<BR> pnewdimrecord->setDimexe(400);//设置尺寸界线超出尺寸线距离为400<BR> pnewdimrecord->setDimexo(300);//设置尺寸界线的起点偏移量为300<BR> pnewdimrecord->setDimtxt(200);//设置文字高度<BR> pnewdimrecord->setDimtad(1);//设置文字位置-垂直为上方,水平默认为居中,不用设置<BR> pnewdimrecord->setDimgap(100);//设置文字位置-从尺寸线的偏移量<BR> pnewdimrecord->setDimtih(0); pnewdimrecord->setDimtoh(0);//设置文字对齐为:与尺寸线对齐<BR> pnewdimrecord->setDimtix(1);//设置标注文字始终绘制在尺寸界线之间<BR> pnewdimrecord->setDimtofl(1);//即使箭头放置于测量点之外,尺寸线也将绘制在测量点之间<BR> pnewdimrecord->setName(dimname);//设置尺寸样式的名称<BR> AcDbObjectId dimrecordid;<BR> pnewdimtable->add(dimrecordid,pnewdimrecord);<BR> pnewdimtable->close();<BR> pnewdimrecord->close();<BR> if(strcmp(dimname,"my_dim")==0)<BR> pcurdb->setDimstyle(dimrecordid);//设置新创建的尺寸样式为数据库的尺寸样式
}
然后创建AcDbAlignedDimension实体,并添加到模型空间即可,如下:
AcDbAlignedDimension *pnewdim=new AcDbAlignedDimension(Line1Point,Line2Point,dimLinePoint,NULL,GetDimId("my_dim"));//创建标注实体<BR> pnewdim->setLayer(GetLayerId("biaozhu_layer"));//设置它到标注层,而不是当前的层<BR> AcDbObjectId dimid;<BR> AddToModelspace(pnewdim,dimid);
这是从我的程序中摘录下来的,希望能对你有所帮助! 同意樓上的
但是為何我在On_kLoadDwgMsg函數中調用
pcurdb->setDimstyle(dimrecordid);//设置新创建的尺寸样式为数据库的尺寸样式
感覺沒有起作用.
希望幫忙. 我不知道你是什么意思,你输入命令:DIMSTYLE,看看它是否已被置为数据库的当前样式! 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自動加載. 我也不知道问题出在哪! 你在你那试下,是不是这样的情况呢? 我还遇到一个关于标注的问题 ,我想提取标注的文本信息,有没有比较方便的方法啊!
页:
[1]