IntersectWith用来寻找两个实体的交点
public unsafe void IntersectWith(
  Entity entityPointer,
  Intersect intersectType,
  Point3dCollection points,
  IntPtr thisGraphicSystemMarker,
  IntPtr otherGraphicSystemMarker)
此函数应用于两个Entity的简单相交,返回值为Entity的的点集
- entityPointer:相交的另一个Entity 
- 
intersectType:计算交点的方式 namespace Autodesk.AutoCAD.DatabaseServices { [Wrapper("AcDb::Intersect")] public enum Intersect { OnBothOperands, ExtendThis, ExtendArgument, ExtendBoth, } }- Intersect.OnBothOperands :实际交点
- Intersect.ExtendThis : 延长IntersectWith之前的Entity
- Intersect.ExtendArgument : 延长entityPointer
- Intersect.ExtendBoth : 两个都延长
 
- points : 点集 
- thisGraphicSystemMarker :下级实体的图形系统标记,如果不适用就用缺省值IntPtr.Zero 
- otherGraphicSystemMarker :下级实体的图形系统标记,如果不适用就用缺省值IntPtr.Zero 
示例程序
public static void IntersectWithTest () {
    Database db = HostApplicationServices.WorkingDatabase;
    Editor editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  
    Line line1 = new Line();
    line1.StartPoint = new Point3d(0, 0, 0);
    line1.EndPoint = new Point3d(0, 100, 0);
   
    Circle circle = new Circle();
    circle.Center = new Point3d(0, 0, 0);
    circle.Radius = 80;
    //放交点的集合
    Point3dCollection intersectionPoints1 = new Point3dCollection();
    line1.IntersectWith(circle, Intersect.OnBothOperands, intersectionPoints1, IntPtr.Zero,IntPtr.Zero);
    //intersectionPoints1 中有一个点 (0, 80, 0)
    Point3dCollection intersectionPoints2 = new Point3dCollection();
    circle.IntersectWith(line1, Intersect.OnBothOperands, intersectionPoints2, IntPtr.Zero, IntPtr.Zero);
    //intersectionPoints2 中有一个点 (0, 80, 0)
    Point3dCollection intersectionPoints3 = new Point3dCollection();
    line1.IntersectWith(circle, Intersect.ExtendThis, intersectionPoints3, IntPtr.Zero,IntPtr.Zero);
    //intersectionPoints3 中有两个点 (0, 80, 0)(0, -80, 0)
    Point3dCollection intersectionPoints4 = new Point3dCollection();
    circle.IntersectWith(line1, Intersect.ExtendThis, intersectionPoints4, IntPtr.Zero, IntPtr.Zero);
    //intersectionPoints4 中有一个点 (0, 80, 0)
    Point3dCollection intersectionPoints5 = new Point3dCollection();
    line1.IntersectWith(circle, Intersect.ExtendArgument, intersectionPoints5, IntPtr.Zero, IntPtr.Zero);
    //intersectionPoints5 中有一个点 (0, 80, 0)
    Point3dCollection intersectionPoints6 = new Point3dCollection();
    circle.IntersectWith(line1, Intersect.ExtendArgument, intersectionPoints6, IntPtr.Zero, IntPtr.Zero);
    //intersectionPoints6 中有两个点 (0, 80, 0)(0, -80, 0)
    Point3dCollection intersectionPoints7 = new Point3dCollection();
    line1.IntersectWith(circle, Intersect.ExtendBoth, intersectionPoints7, IntPtr.Zero, IntPtr.Zero);
    //intersectionPoints7 中有两个点 (0, 80, 0)(0, -80, 0)
    Point3dCollection intersectionPoints8 = new Point3dCollection();
    circle.IntersectWith(line1, Intersect.ExtendBoth, intersectionPoints8, IntPtr.Zero, IntPtr.Zero);
    //intersectionPoints8 中有两个点 (0, 80, 0)(0, -80, 0)
}
 
                                 
                                 
                 
             
                            