当前位置:   article > 正文

判断一个点是否在面域上(包括在面域的边上),都投影到XY平面上_acdbray setunitdir

acdbray setunitdir

bool isPointOnRegion(AcGePoint3d pt,AcDbObjectId regionId)
{
 Acad::ErrorStatus es;

 AcDbRegion* pRegion ;
 es = acdbOpenObject( pRegion, regionId, AcDb::kForRead );
 if( es ) return false;

 //创建射线,根据射线与面域边线相交的点数为奇数就说明点在面域上的理论
 AcDbRay* pRay = new AcDbRay ;
 pRay->setBasePoint( pt );
 pRay->setUnitDir( AcGeVector3d(1, 0, 0));

   AcGePlane  projPlane = AcGePlane(AcGePoint3d(0,0,0), AcGeVector3d(0,0,1));
 AcGePoint3dArray ptArray;
 es = pRegion->intersectWith( pRay, AcDb::kOnBothOperands,projPlane, ptArray,0,0 );//AcDb::kExtendArg
  pRegion->close();
  delete pRay;
  if(es )
 {
  return false;
 }

 int iNum = ptArray.length();

 if( (iNum%2 ) == 0 ) return false;
  

 return true;
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/114386
推荐阅读
相关标签
  

闽ICP备14008679号