在这个高手如云的地方,再次希望有人帮我解决一下下面的这个小问题!
我做了一个自动标注孔尺寸(包括孔径、孔深)的程序,部分代码如下:
double leaderLength=50; int iDimColor=1; int iTextColor=1; AcCmColor color; char* dimText=="光孔<>"; AcDbDatabase *pcurdb=acdbHostApplicationServices()->workingDatabase(); AcDbDimStyleTable *pnewdimtable; pcurdb->getSymbolTable(pnewdimtable,AcDb::kForWrite); AcDbDimStyleTableRecord *pnewdimrecord=new AcDbDimStyleTableRecord(); pnewdimrecord->setDimasz(20);//设置箭头大小 pnewdimrecord->setDimzin(8);//十进制小数显示时,抑制后续零 pnewdimrecord->setDimexe(30);//设置尺寸界线超出尺寸线距离为400 pnewdimrecord->setDimexo(0);//设置尺寸界线的起点偏移量为300 pnewdimrecord->setDimtxt(30);//设置文字高度 pnewdimrecord->setDimtad(1);//设置文字位置-垂直为上方,水平默认为居中,不用设置 pnewdimrecord->setDimgap(10);//设置文字位置-从尺寸线的偏移量 pnewdimrecord->setDimtih(0); pnewdimrecord->setDimtix(1);//设置标注文字始终绘制在尺寸界线之间 pnewdimrecord->setDimtofl(1);//即使箭头放置于测量点之外,尺寸线也将绘制在测量点之间 pnewdimrecord->setDimlfac(0.125); color.setColorIndex(iDimColor); pnewdimrecord->setDimclrd(color); //尺寸线颜色 pnewdimrecord->setDimclre(color); //尺寸边界线颜色 color.setColorIndex(iTextColor); pnewdimrecord->setDimclrt(color); //文字颜色
AcDbObjectId dimrecordid; pnewdimtable->add(dimrecordid,pnewdimrecord); pnewdimtable->close(); pnewdimrecord->close(); AcGePoint3d Pt1(KD[k].ZB_X+t-KD[k].KongJing/2*cos(PI/4.0),KD[k].ZB_Y+t+KD[k].KongJing/2*sin(PI/4.0),0); AcGePoint3d Pt2(KD[k].ZB_X+t+KD[k].KongJing/2*cos(PI/4.0),KD[k].ZB_Y+t-KD[k].KongJing/2*sin(PI/4.0),0); AcDbBlockTable *pBlockTable;//定义块表指针 acdbHostApplicationServices()->workingDatabase() ->getSymbolTable(pBlockTable, AcDb::kForRead); AcDbBlockTableRecord *pBlockTableRecord; pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite); pBlockTable->close(); AcDbDiametricDimension *pDim = new AcDbDiametricDimension(Pt6,Pt7,leaderLength,dimText,dimrecordid); pDim->setLeaderLength(20); AcDbObjectId Id; pBlockTableRecord->appendAcDbEntity(Id, pDim); pBlockTableRecord->close(); pDim->close(); }
运行后标出了孔的直径,形式为“光孔Ф120”。其中“Ф120”是系统自动读取生成的。现在我想把Ф换成M,也就是变成“光孔M120”,不知道可不可能,怎末才能实现,请指教,谢谢1 |