怎样标注尺寸啊?新手求助!
本帖最后由 作者 于 2004-2-24 11:03:50 编辑 <br /><br /> 画了两条直线,怎样标注它们得尺寸啊。要加些什么代码?double x1,x2,x3,y1,y2,y3;
AcGePoint3d pt1(x1,y1,0),pt2(x2,y2,0),pt3(x3,y3,0);<BR> AcDbLine* pLine1=new AcDbLine(pt1,pt2);<BR> AcDbLine* pLine2=new AcDbLine(pt2,pt3);
AcDbDatabase *pCurDb;<BR> AcDbBlockTable *pBlockTable;<BR> pCurDb=acdbHostApplicationServices()->workingDatabase();
pCurDb->getSymbolTable(pBlockTable,AcDb::kForRead);<BR> AcDbBlockTableRecord *pBlockTableRecord;<BR> pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);<BR> pBlockTable->close();
AcDbObjectId lineId;<BR> pBlockTableRecord->appendAcDbEntity(lineId,pLine1);<BR> pBlockTableRecord->appendAcDbEntity(lineId,pLine2);<BR> <BR> pBlockTableRecord->close();<BR> pLine1->close();<BR> pLine2->close(); 与画线相似,当然稍微麻烦一点点。
以对齐标注为例,使用AcDbAlignedDimsion类的构造函数建立标注对象,构造函数原型为:
<P class=signature>AcDbAlignedDimension(const AcGePoint3d& xLine1Point, const AcGePoint3d& xLine2Point, const AcGePoint3d& dimLinePoint, const char* dimText = NULL, AcDbObjectId dimStyle = AcDbObjectId::kNull);
<P class=signature>然后添加到当前图形数据库即可。 不好意思,能不能些详细一些啊。 在你给出的代码最后三行前加上以下代码试试:
AcDbAlignedDimension pDim = new AcDbAlignedDimension(pLine1->startpoint(), pLine1->endpoint(), AcGePoint3d(x3, y3, 0), "<>");
AcDbObjectId Id;
pBlockTableRecord->appendEntity(Id, pDim);
最后close pDim对象。 非常感谢<A name=82005><FONT color=#000066><B>leeyeafu</B></FONT></A>的指导!标注了尺寸之后,发现图形看起来非常小而尺寸很大,不协调。怎样处理啊?还有如果有斜线又怎样标注它的水平和铅直尺寸呢? 不知道楼主是否有ACAD手工绘图经验,请回忆一下手工绘图时遇到尺寸与图形不协调时是如何解决的,这对于编程解决是有帮助的。
具体编程解决5楼提出的第一个问题,要使用标注样式表,请先阅读ARX联机文档中有关AcDbDimStyleTableRecord类及其变量编辑函数的说明。若还有问题再发帖。
第二个问题:使用AcDbRotatedDimension类,详见ARX联机文档。 是不是用setDimscale(0.2)啊,我试了一下好像图形没有什么变化。 我定义了一个修改尺寸标注样式的函数editDimStyle(),主要是修改全局变量:pDimStyleTblRcd->setDimscale(0.1)。运行后图形的标注还是那样没什么变化。打开cad标注-样式,发现当前标注样式还是原来的。从新定义了一个设置尺寸标注样式的函数setDimStyle(),设置新的样式名NewDim,还是一样的问题。怎么办啊。
页:
[1]