10.20提取“标注”的尺寸值信息(已经找了2天2夜了,苦啊!!!)
//开发环境:Vc6.0和arx2000//调试下面的代码段时,报错:contextmenu\ModalDlg.cpp(53) : error C2664: //'measurement' : cannot convert parameter 1 from 'const double *' to 'double &'
//A reference that is not to 'const' cannot be bound to a non-lvalue
//代码段欲实现的目标(未能实现)
//提取“标注”的尺寸值信息,比如:在autocad2000中画一直线段,并标注有//尺寸100,想通过arx程序编码形式,实现通过鼠标选中该“尺寸标注”,读取//并显示这个尺寸值“100”到自定义的对话框中的一文本框里。
ads_nameen;
AcDbObjectId eId;
acdbGetObjectId(eId,en);
AcDbObject *pObj;
acdbOpenObject(pObj,eId,AcDb::kForRead);
if(pObj->isKindOf(AcDbDimension::desc()))
{
//m_measure关联对话框上的一个文本框的double型变量
//问1:m_measure变量应定义成什么类型?
AcDbDimension::measurement(&m_measure);
//帮助项中写道:Acad::ErrorStatus measurement( double &val);
//val This function returns set to the current measurement value for this dimension.
//问2:提取“标注”的尺寸值信息的函数是measurement吗?其格式是?
//问2续:怎么让m_measure得到尺寸值?
UpdateData(FALSE);//FALSE大写
pObj->close();
// iterate(eId);
}
else
{
pObj->close();
ads_printf("\nselected entity is unknow!");
}
//非常感谢!!! 试试这个:
// double m_measure;
//如果你将变量m_measure声明为double指针,可用measure(*m_measure);
ads_nameen;
AcDbObjectId eId;
acdbGetObjectId(eId,en);
AcDbObject *pObj;
acdbOpenObject(pObj,eId,AcDb::kForRead);
AcDbDimension *ObjDim; //这个临时变量用于存放转换为AcDbDimension类型的实体
if(pObj->isKindOf(AcDbDimension::desc()))
{
ObjDim = AcDbDimension::cast(pObj);
ObjDim->measure(m_measure);//或者ObjDim->measure(*measure);
ObjDim->close();
pObj->close();
}
else
{
......
}
至于指针和引用的正确使用,你可以看看源码区的置顶帖子“深入......”,当你理解了那篇文章所述内容后,遇到error C2664就不会措手无策了。 哈哈哈
我会了
今天是个好~~好~~~日子 我也拜读了斑竹的文章,现在差不多会用帮助项里的函数格式了
程序结果已经调试出来了 gao ren a ,lihai
页:
[1]