ObjectARX自定义实体的最近点和垂点捕捉算法

 最近点用pickPoint来计算,垂点用lastPoint计算.

一般AcDbCurve类可以用AcGe类的 getClosestPointTo 来实现计算需要的点值.

下面是代码示例: 

case AcDb::kOsModeNear:

       {

           AcGeLine3d line3d(m_ptA,m_ptC);         

           AcGePointOnCurve3d tmpPt;

           line3d.getClosestPointTo(pickPoint,tmpPt);

           AcGePoint3d pt=tmpPt.point();

          

           snapPoints.append(AcGePoint3d(pt));

           line3d.set(m_ptB,m_ptD);

           line3d.getClosestPointTo(pickPoint,tmpPt);

           pt=tmpPt.point();

           snapPoints.append(AcGePoint3d(pt));

       }

       break;

    case AcDb::kOsModePerp:

       {

           AcGeLine3d line3d(m_ptA,m_ptC);         

           AcGePointOnCurve3d tmpPt;

           line3d.getClosestPointTo(lastPoint,tmpPt);

           AcGePoint3d pt=tmpPt.point();

 

           snapPoints.append(AcGePoint3d(pt));

           line3d.set(m_ptB,m_ptD);

           line3d.getClosestPointTo(lastPoint,tmpPt);

           pt=tmpPt.point();

           snapPoints.append(AcGePoint3d(pt));

       }

       break;

 

原文地址:https://www.cnblogs.com/edata/p/6817621.html