// Gh Capture
        public Arc ArcToSpeckle(RH.Arc a)
        {
            Arc arc = new Arc(PlaneToSpeckle(a.Plane), a.Radius, a.StartAngle, a.EndAngle, a.Angle, ModelUnits);

            arc.endPoint   = PointToSpeckle(a.EndPoint);
            arc.startPoint = PointToSpeckle(a.StartPoint);
            arc.midPoint   = PointToSpeckle(a.MidPoint);
            arc.domain     = new Interval(0, 1);
            return(arc);
        }
        // Gh Capture
        public Arc ArcToSpeckle(RH.Arc a, string units = null)
        {
            var u   = units ?? ModelUnits;
            Arc arc = new Arc(PlaneToSpeckle(a.Plane, u), a.Radius, a.StartAngle, a.EndAngle, a.Angle, u);

            arc.endPoint   = PointToSpeckle(a.EndPoint, u);
            arc.startPoint = PointToSpeckle(a.StartPoint, u);
            arc.midPoint   = PointToSpeckle(a.MidPoint, u);
            arc.domain     = new Interval(0, 1);
            arc.length     = a.Length;
            arc.bbox       = BoxToSpeckle(new RH.Box(a.BoundingBox()), u);
            return(arc);
        }
        public ArcCurve ArcToNative(Arc a)
        {
            RH.Arc arc = new RH.Arc(PlaneToNative(a.plane), ScaleToNative((double)a.radius, a.units), (double)a.angleRadians);
            arc.StartAngle = (double)a.startAngle;
            arc.EndAngle   = (double)a.endAngle;
            var myArc = new ArcCurve(arc);

            if (a.domain != null)
            {
                myArc.Domain = IntervalToNative(a.domain);
            }

            return(myArc);
        }
        public ArcCurve ArcToNative(Arc a)
        {
            RH.Arc arc = new RH.Arc(PlaneToNative(a.plane), ScaleToNative((double)a.radius, a.units), (double)a.angleRadians);
            arc.StartAngle = (double)a.startAngle;
            arc.EndAngle   = (double)a.endAngle;
            if (!arc.IsValid) // try with different method if not valid
            {
                arc = new RH.Arc(PointToNative(a.startPoint).Location, PointToNative(a.midPoint).Location, PointToNative(a.endPoint).Location);
            }
            var myArc = new ArcCurve(arc);

            if (a.domain != null)
            {
                myArc.Domain = IntervalToNative(a.domain);
            }

            return(myArc);
        }