//-------------------------------------------------------------------------------------------------- public static bool RenderCircle(IDrawingRenderer renderer, Geom2d_Circle circle, double first, double last, bool reverse) { if (renderer.Capabilities.CircleAsCurve) { var bsplineCurve = ShapeConstruct.ConvertCurveToBSpline(circle, first, last, 0.001, GeomAbs_Shape.GeomAbs_C2, 100, 3); if (bsplineCurve != null) { return(RenderBSplineCurve(renderer, bsplineCurve, first, last, reverse)); } return(false); } var center = circle.Location(); var radius = circle.Radius(); double rotation = circle.XAxis().Direction.Angle(Dir2d.DX); if (circle.Position().Sense() > 0) { first = Maths.DoublePI - first; last = Maths.DoublePI - last; } if (reverse) { first.Swap(ref last); } renderer.Circle(center, radius, first - rotation, last - rotation); return(true); }