/// <summary> /// 获取两条线段重合部分 /// </summary> /// <param name="line1">线段1</param> /// <param name="line2">线段2</param> /// <returns>重合部分</returns> public static Line Coincide(Line line1, Line line2) { LineSegment3d l1 = new LineSegment3d(line1.StartPoint, line1.EndPoint); LineSegment3d l2 = new LineSegment3d(line2.StartPoint, line2.EndPoint); LinearEntity3d l3 = l1.Overlap(l2); return(new Line(l3.StartPoint, l3.EndPoint)); }
public static bool isSegmentsProjectionOverlapped(LineSegment3d lineseg1, LineSegment3d lineseg2) { Point3d projectPt1 = lineseg1.GetClosestPointTo(lineseg2.StartPoint).Point; Point3d projectPt2 = lineseg1.GetClosestPointTo(lineseg2.EndPoint).Point; // after the projection, the two line segments(p1->p2 & p3->p4) may be same if ((projectPt1.IsEqualTo(lineseg1.StartPoint) && projectPt2.IsEqualTo(lineseg1.EndPoint)) || (projectPt1.IsEqualTo(lineseg1.EndPoint) && projectPt2.IsEqualTo(lineseg1.StartPoint))) { return(true); } // [Daniel] retrun null if no overlap??? LineSegment3d projectSeg2 = new LineSegment3d(projectPt1, projectPt2); LinearEntity3d overlap = lineseg1.Overlap(projectSeg2); return(overlap != null); }