protected override Result RunCommand(RhinoDoc doc, RunMode mode) { Circle circle; var rc = RhinoGet.GetCircle(out circle); if (rc != Result.Success) { return(rc); } doc.Objects.AddCircle(circle); doc.Views.Redraw(); Line line; rc = RhinoGet.GetLine(out line); if (rc != Result.Success) { return(rc); } doc.Objects.AddLine(line); doc.Views.Redraw(); double t1, t2; Point3d point1, point2; var line_circle_intersect = Intersection.LineCircle(line, circle, out t1, out point1, out t2, out point2); string msg = ""; switch (line_circle_intersect) { case LineCircleIntersection.None: msg = "line does not intersect circle"; break; case LineCircleIntersection.Single: msg = string.Format("line intersects circle at point ({0})", point1); doc.Objects.AddPoint(point1); break; case LineCircleIntersection.Multiple: msg = string.Format("line intersects circle at points ({0}) and ({1})", point1, point2); doc.Objects.AddPoint(point1); doc.Objects.AddPoint(point2); break; } RhinoApp.WriteLine(msg); doc.Views.Redraw(); return(Result.Success); }