public unsafe static CircularArc[] CreateTangentToTwoElementsRadius(LinearElement backElement, LinearElement aheadElement, double radius, double tolerance)
使用此接口实现此功能,但是返回数组是空
下面是测试用例代码,您可以参考修改:
BGEO.DPoint3d centerPoint = new BGEO.DPoint3d(1000, 1000, 1000); BGEO.DPoint3d centerPoint2 = new BGEO.DPoint3d(2000, 1000, 1000); BGEO.DPoint3d centerPoint3 = new BGEO.DPoint3d(3000, 1000, 1000); BGEO.DPoint3d point1 = new BGEO.DPoint3d(700.0, 1120.0, 0.0); BGEO.DPoint3d point2 = new BGEO.DPoint3d(1500.0, 1080.0, 0.0); BCG.Line line1 = new BCG.Line(point1, point2); BGEO.DPoint3d point3 = new BGEO.DPoint3d(0.0, 0.0, 0.0); BGEO.DPoint3d point4 = new BGEO.DPoint3d(4500.0, 1580.0, 2000.0); BCG.Line line2 = new BCG.Line(point3, point4); BCG.Spiral spiral1 = new BCG.Spiral(centerPoint, 0, 500, 199, 0.0, SpiralType.Clothoid, BCG.Hand.CounterClockwise); BCG.Spiral spiral2 = new BCG.Spiral(centerPoint, 0, 1000, 999, 0.0, SpiralType.Clothoid, BCG.Hand.CounterClockwise); double radius = 1000; double sweepAngle = 0.2; double startDirection = 0.1; CircularArc arc2 = new BCG.CircularArc(centerPoint3, radius, startDirection, sweepAngle); CircularArc[] results = CircularArc.CreateTangentToCircleThruPointRadius(arc, centerPoint3, centerPoint2, 10000, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToLineThruPointRadius(line1, centerPoint3, centerPoint2, 10000, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToLineThruPoint(line1, centerPoint3, centerPoint2, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToSpiralThruPointRadius(spiral1, centerPoint3, centerPoint2, 10000, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToTwoLinesThruPoint(line1, line2, centerPoint3, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToTwoCirclesThruPoint(arc, arc2, centerPoint3, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToLineAndCircleThruPoint(line1, arc2, centerPoint3, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToLineAndCircleRadius(line1, arc2, 10000, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToTwoLinesRadius(line1, line2, 10000, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToTwoCirclesRadius(arc, arc2, 10000, 0.0001); Assert.IsNotNull(results[0]); //Needs Work //results = CircularArc.CreateTangentToSpiralTwoThruPoints(spiral2, centerPoint3, centerPoint2, 0.0001); //Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToLineTwoThruPoints(line1, centerPoint3, centerPoint2, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToCircleTwoThruPoints(arc2, centerPoint3, centerPoint2, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToTwoElementsThruPoint(arc, arc2, centerPoint3, 0.0001); Assert.IsNotNull(results[0]); results = CircularArc.CreateTangentToTwoElementsRadius(arc, arc2, 10000, 0.0001); Assert.IsNotNull(results[0]);
测试结果第1,6,10,13,14结果返回结果是0个,请问这个传半径的时候需要换算单位吗
按道理应该是需要的,你试试。