使用CurveCurve下的IntersectionsXY方法可以获得两条CurveVector的首尾交点。如果这两条CurveVector有两个以上的交点,那么就需要使用GetIntersectionPoints方法。
本文只显示如何通过IntersectionsXY方法来获取CurveVector的首尾交点:
为了方便观察交点,在求得交点后我们把起始点和结束点分别作为长度为0的Line并设置颜色和线宽添加到模型中。
public static void CurveCurveTest()
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
Element elem1 = dgnModel.FindElementById((ElementId)2074L);
Element elem2 = dgnModel.FindElementById((ElementId)2075L);
CurveVector cvElem1 = CurvePathQuery.ElementToCurveVector(elem1);
CurveVector cvElem2 = CurvePathQuery.ElementToCurveVector(elem2);
CurveVector cv1 = CurveVector.Create(CurveVector.BoundaryType.Open);
CurveVector cv2 = CurveVector.Create(CurveVector.BoundaryType.Open);
CurveCurve.IntersectionsXY(cv1, cv2, cvElem1, cvElem2);
cv1.GetStartEnd(out DPoint3d pA, out DPoint3d pB);
DSegment3d segment1 = new DSegment3d(pA, pA);
LineElement lineElem1 = new LineElement(dgnModel, null, segment1);
ElementPropertiesSetter setter = new ElementPropertiesSetter();
setter.SetColor(2);
setter.SetWeight(10);
setter.Apply(lineElem1);
lineElem1.AddToModel();
DSegment3d segment2 = new DSegment3d(pB, pB);
LineElement lineElem2 = new LineElement(dgnModel, null, segment2);
setter.Apply(lineElem2);
lineElem2.AddToModel();
}