public static NurbsCurve ToNative(this SpeckleEllipse e)
        {
            Ellipse elp    = new Ellipse(e.Plane.ToNative(), ( double )e.FirstRadius, ( double )e.SecondRadius);
            var     myEllp = elp.ToNurbsCurve();

            myEllp.UserDictionary.ReplaceContentsWith(e.Properties.ToNative());
            return(myEllp);
        }
예제 #2
0
 /// <summary>
 /// SpeckleEllipseto DS Ellipse
 /// </summary>
 /// <param name="e"></param>
 /// <returns></returns>
 public static Ellipse ToNative(this SpeckleEllipse e)
 {
     return(Ellipse.ByPlaneRadii(
                e.Plane.ToNative(),
                e.FirstRadius.Value,
                e.SecondRadius.Value
                ));
 }
        public static SpeckleObject ToSpeckle(this Curve curve)
        {
            var properties = curve.UserDictionary.ToSpeckle();

            if (curve is PolyCurve)
            {
                return((( PolyCurve )curve).ToSpeckle());
            }

            if (curve.IsArc())
            {
                Arc        getObj; curve.TryGetArc(out getObj);
                SpeckleArc myObject = getObj.ToSpeckle(); myObject.Properties = properties;
                return(myObject);
            }

            if (curve.IsCircle())
            {
                Circle        getObj; curve.TryGetCircle(out getObj);
                SpeckleCircle myObject = getObj.ToSpeckle(); myObject.Properties = properties;
                return(myObject);
            }

            if (curve.IsEllipse())
            {
                Ellipse        getObj; curve.TryGetEllipse(out getObj);
                SpeckleEllipse myObject = getObj.ToSpeckle(); myObject.Properties = properties;
                return(myObject);
            }

            if (curve.IsLinear() || curve.IsPolyline()) // defaults to polyline
            {
                Polyline        getObj; curve.TryGetPolyline(out getObj);
                SpecklePolyline myObject = getObj.ToSpeckle(); myObject.Properties = properties;
                return(myObject);
            }

            Polyline poly;

            curve.ToPolyline(0, 1, 0, 0, 0, 0.1, 0, 0, true).TryGetPolyline(out poly);

            SpeckleCurve myCurve    = new SpeckleCurve(poly.ToSpeckle(), properties: curve.UserDictionary.ToSpeckle());
            NurbsCurve   nurbsCurve = curve.ToNurbsCurve();


            myCurve.Weights  = nurbsCurve.Points.Select(ctp => ctp.Weight).ToArray();
            myCurve.Points   = nurbsCurve.Points.Select(ctp => ctp.Location).ToFlatArray();
            myCurve.Knots    = nurbsCurve.Knots.ToArray();
            myCurve.Degree   = nurbsCurve.Degree;
            myCurve.Periodic = nurbsCurve.IsPeriodic;
            myCurve.Rational = nurbsCurve.IsRational;
            myCurve.Domain   = nurbsCurve.Domain.ToSpeckle();

            myCurve.Properties = properties;
            return(myCurve);
        }
예제 #4
0
        /// <summary>
        /// SpeckleEllipse to DS Ellipse
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public static Ellipse ToNative(this SpeckleEllipse e)
        {
            var ellipse = Ellipse.ByPlaneRadii(
                e.Plane.ToNative(),
                e.FirstRadius.Value,
                e.SecondRadius.Value
                );

            return(ellipse.SetSpeckleProperties <Ellipse>(e.Properties));
        }
        public static NurbsCurve ToNative(this SpeckleEllipse e)
        {
            Ellipse elp = new Ellipse(e.Plane.ToNative(), ( double )e.FirstRadius, ( double )e.SecondRadius);


            var myEllp = NurbsCurve.CreateFromEllipse(elp);
            var shit   = myEllp.IsEllipse(Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance);

            if (e.Domain != null)
            {
                myEllp.Domain = e.Domain.ToNative();
            }
            myEllp.UserDictionary.ReplaceContentsWith(e.Properties.ToNative());

            return(myEllp);
        }
        // Curve
        public static SpeckleObject ToSpeckle(this NurbsCurve curve)
        {
            var properties = curve.UserDictionary.ToSpeckle(root: curve);

            if (curve.IsArc(Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance))
            {
                Arc        getObj; curve.TryGetArc(out getObj);
                SpeckleArc myObject = getObj.ToSpeckle(); myObject.Properties = properties; myObject.GenerateHash();
                return(myObject);
            }

            if (curve.IsCircle(Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance))
            {
                Circle        getObj; curve.TryGetCircle(out getObj);
                SpeckleCircle myObject = getObj.ToSpeckle(); myObject.Properties = properties; myObject.GenerateHash();
                return(myObject);
            }

            if (curve.IsEllipse(Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance))
            {
                Ellipse        getObj; curve.TryGetEllipse(out getObj);
                SpeckleEllipse myObject = getObj.ToSpeckle(); myObject.Properties = properties; myObject.GenerateHash();
                return(myObject);
            }

            if (curve.IsLinear(Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance) || curve.IsPolyline()) // defaults to polyline
            {
                Polyline      getObj; curve.TryGetPolyline(out getObj);
                SpeckleObject myObject = getObj.ToSpeckle(); myObject.Properties = properties; myObject.GenerateHash();
                return(myObject);
            }

            Polyline poly;

            curve.ToPolyline(0, 1, 0, 0, 0, 0.1, 0, 0, true).TryGetPolyline(out poly);

            SpecklePolyline displayValue;

            if (poly.Count == 2)
            {
                displayValue       = new SpecklePolyline();
                displayValue.Value = new List <double> {
                    poly[0].X, poly[0].Y, poly[0].Z, poly[1].X, poly[1].Y, poly[1].Z
                };
                displayValue.GenerateHash();
            }
            else
            {
                displayValue = poly.ToSpeckle() as SpecklePolyline;
            }

            SpeckleCurve myCurve    = new SpeckleCurve(displayValue);
            NurbsCurve   nurbsCurve = curve.ToNurbsCurve();

            myCurve.Weights  = nurbsCurve.Points.Select(ctp => ctp.Weight).ToList();
            myCurve.Points   = nurbsCurve.Points.Select(ctp => ctp.Location).ToFlatArray().ToList();
            myCurve.Knots    = nurbsCurve.Knots.ToList();
            myCurve.Degree   = nurbsCurve.Degree;
            myCurve.Periodic = nurbsCurve.IsPeriodic;
            myCurve.Rational = nurbsCurve.IsRational;
            myCurve.Domain   = nurbsCurve.Domain.ToSpeckle();
            myCurve.Closed   = nurbsCurve.IsClosed;

            myCurve.Properties = properties;
            myCurve.GenerateHash();

            return(myCurve);
        }
    //needs plane definition

    //public static Circle ToNative(this SpeckleCircle sCirc)
    //{
    //    var normal = sCirc.Normal.ToVector3();
    //    var center = sCirc.Center.ToVector3();
    //
    //    //var yAxis = new Vec
    //
    //    var plane = new Plane(normal, center);
    //
    //   return new Circle(sCirc.Center.ToVector3,plane.)
    //
    //}

    public static Ellipse ToVerb(this SpeckleEllipse sEllipse)
    {
        var plane = sEllipse.Plane;

        return(new Ellipse(plane.Origin.ToVector3(), plane.Xdir.ToVector3(), plane.Ydir.ToVector3()));
    }