- UID
- 594385
- 积分
- 11
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2008-1-2
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.用Draworder时要注意了
ads_command(RTSTR,_T("draworder"),RTENAME,entMain,RTSTR,_T(""),RTSTR,_T("A"),RTPICKS,ssName,RTNONE);
ads_command(RTSTR,_T("regen"),RTSTR,_T(""),RTNONE);
上面的命令,在2002中,CAD会全图刷新,
在2004中就只刷新ssNamet和entMain.
2005(不包括2005)以下版本,不能用draworder局部刷新。没有draworderctl这个全局变量。
2.在Debug模式下,ads_point pt;acgepoint2d ptPick;
ads_point_set(pt,asDblArray(ptPick));
上面的代码,在VC6里不出错,
在VS2002 Debug中就会出现 内存崩溃。
但在VS2002 Release下不崩溃。
3有关AcdbCurve的一些函数
AcdbArc对AcdbCurve的函数的实现有些不完全。
比如GetStartDparm和GetEndDparm。但GetDist正确
//下面是测试函数,在CAD2002、2005上完成。
AcDbObjectId objID;
if (SelectEnt(objID,_T("弧")) == false)
return;
ads_point pt;
int ese= acedGetPoint(NULL,_T("\nGet Point:"),pt);
if ( ese == RTCAN) return;
AcDbArc* pArc;
acdbOpenObject(pArc,objID,AcDb::kForRead);
double dAngleSt,dAngleEnd;
dAngleSt = pArc->startAngle();
dAngleEnd = pArc->endAngle();//起始角,和终止角都在0-2PI之间,弧都是逆时针创建的,起始角可能小于张终止角。
acutPrintf(_T("\nStart Angle: %.3f"),dAngleSt);
acutPrintf(_T("\nEnd Angle: %.3f"),dAngleEnd);
Acad::ErrorStatus es= pArc->getStartParam(dAngleSt);
acutPrintf(_T("\nStart Parm: %.3f"),dAngleSt);
es=pArc->getEndParam(dAngleEnd);//dParm,返回的都是弧度,与多段线的不同,但EndParm一定大于StartParm,所以endParm有可能是endAngle+2PI;
acutPrintf(_T("\nEnd Parm: %.3f"),dAngleEnd);
AcGePoint3d pt3d;
ads_point_set(pt,asDblArray(pt3d));
dAngleSt = 0.0;
es = pArc->getParamAtPoint(pt3d,dAngleSt);
acutPrintf(_T("\nX:%.3f Y:%.3f dParm:%.3f"),pt3d.x,pt3d.y,dAngleSt);
pArc->getDistAtPoint(pt3d,dAngleSt);
acutPrintf(_T("\nX:%.3f Y:%.3f dDist:%.3f"),pt3d.x,pt3d.y,dAngleSt);
pArc->close();
对于圆,getStartParam返回。GetEndParm返回2PI。 |
|