- UID
- 30904
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-2-22
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在使用intersectWith()函数时,明明是只有一个交点,程序却说有3个交点,不知谁知道,
我自己测试其中一个原因可能是一条线的端点与另一条线很近时,程序会认为是相交的,不知是我的参数设置有问题,下面是图例
代码为
ads_name ent1,ent2;
AcGePoint3d pt;
int rc;
rc = acedEntSel("\n请选择一条线段: ", ent1,
asDblArray(pt));
if(rc==RTCAN) return;
if (rc != RTNORM) {
// acutPrintf("\n 在选择实体时出错!");
return;
}
rc = acedEntSel("\n请选择另一条线段: ", ent2,
asDblArray(pt));
if(rc==RTCAN) return;
if (rc != RTNORM) {
// acutPrintf("\n 在选择实体时出错!");
return;
}
AcDbObjectId eId;
acdbGetObjectId(eId, ent1);
AcDbEntity *pEnt,*pEntity;
acdbOpenObject(pEnt, eId, AcDb::kForRead);
pEnt->close();
acdbGetObjectId(eId, ent2);
acdbOpenObject(pEntity, eId, AcDb::kForRead);
pEntity->close();
AcGePoint3dArray ptArray;
AcGePlane plane;
AcDb::Planarity flag;
pEntity->getPlane(plane,flag);
if(pEntity->intersectWith(pEnt,AcDb::kOnBothOperands,plane,ptArray)
!=Acad::eOk) return;//求实体的交点集
acutPrintf("\n有交点 共 %i ",ptArray.length()); |
|