public static ArcCurve ToNative(this SpeckleArc a)
        {
            Arc arc   = new Arc(a.Plane.ToNative(), ( double )a.Radius, ( double )a.AngleRadians);
            var myArc = new ArcCurve(arc);

            myArc.UserDictionary.ReplaceContentsWith(a.Properties.ToNative());
            return(myArc);
        }
        // Gh Capture
        public static SpeckleArc ToSpeckle(this Arc a)
        {
            SpeckleArc arc = new SpeckleArc(a.Plane.ToSpeckle(), a.Radius, a.StartAngle, a.EndAngle, a.Angle);

            arc.EndPoint   = a.EndPoint.ToSpeckle();
            arc.StartPoint = a.StartPoint.ToSpeckle();
            arc.MidPoint   = a.MidPoint.ToSpeckle();
            return(arc);
        }
        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);
        }
Beispiel #4
0
        public static SpeckleArc ToSpeckleArc(this ArcPayload payload)
        {
            var arc = new SpeckleArc(
                payload.Plane.ToSpecklePlane(),
                payload.Radius,
                payload.StartAngle,
                payload.EndAngle,
                payload.AngleRadians);

            return(arc);
        }
Beispiel #5
0
        /// <summary>
        /// SpeckleArc to DS Arc
        /// </summary>
        /// <param name="a"></param>
        /// <returns></returns>
        public static Arc ToNative(this SpeckleArc a)
        {
            Arc arc = Arc.ByCenterPointRadiusAngle(
                a.Plane.Origin.ToNative(),
                a.Radius.Value,
                a.StartAngle.Value.ToDegrees(),
                a.EndAngle.Value.ToDegrees(),
                a.Plane.Normal.ToNative()
                );

            return(arc);
        }
Beispiel #6
0
        /// <summary>
        /// DS Arc to SpeckleArc
        /// </summary>
        /// <param name="a"></param>
        /// <returns></returns>
        public static SpeckleArc ToSpeckle(this Arc a)
        {
            SpeckleArc arc = new SpeckleArc(
                Plane.ByOriginNormal(a.CenterPoint, a.Normal).ToSpeckle(),
                a.Radius,
                a.StartAngle.ToRadians(),
                (a.StartAngle + a.SweepAngle).ToRadians(),
                a.SweepAngle.ToRadians()
                );

            return(arc);
        }
Beispiel #7
0
 /// <summary>
 /// SpeckleArc to DS Arc
 /// </summary>
 /// <param name="a"></param>
 /// <returns></returns>
 public static Arc ToNative(this SpeckleArc a)
 {
     using (Plane basePlane = a.Plane.ToNative())
         using (Point startPoint = (Point)basePlane.Origin.Translate(basePlane.XAxis, a.Radius.Value))
         {
             var arc = Arc.ByCenterPointStartPointSweepAngle(
                 basePlane.Origin,
                 startPoint,
                 a.AngleRadians.Value.ToDegrees(),
                 basePlane.Normal
                 );
             return(arc.SetSpeckleProperties <Arc>(a.Properties));
         }
 }
        public static ArcCurve ToNative(this SpeckleArc a)
        {
            Arc arc = new Arc(a.Plane.ToNative(), ( double )a.Radius, ( double )a.AngleRadians);

            arc.StartAngle = ( double )a.StartAngle;
            arc.EndAngle   = ( double )a.EndAngle;
            var myArc = new ArcCurve(arc);

            if (a.Domain != null)
            {
                myArc.Domain = a.Domain.ToNative();
            }
            myArc.UserDictionary.ReplaceContentsWith(a.Properties.ToNative());
            return(myArc);
        }
 // Arc
 // Rh Capture can be a circle OR an arc, because f**k you
 public static SpeckleObject ToSpeckle(this ArcCurve a)
 {
     if (a.IsClosed)
     {
         Circle preCircle;
         a.TryGetCircle(out preCircle);
         SpeckleCircle myCircle = preCircle.ToSpeckle();
         myCircle.Properties = a.UserDictionary.ToSpeckle();
         return(myCircle);
     }
     else
     {
         Arc preArc;
         a.TryGetArc(out preArc);
         SpeckleArc myArc = preArc.ToSpeckle();
         myArc.Properties = a.UserDictionary.ToSpeckle();
         return(myArc);
     }
 }
        // 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);
        }
    //verb functions

    public static Arc ToVerb(this SpeckleArc sArc)
    {
        var plane = sArc.Plane;

        return(new Arc(plane.Origin.ToVector3(), plane.Xdir.ToVector3(), plane.Ydir.ToVector3(), (float)sArc.Radius, (float)sArc.StartAngle, (float)sArc.EndAngle));
    }
    public static GameObject ToNative(this SpeckleArc curve)
    {
        var verb = curve.ToVerb();

        return(CurveToObject(curve._id, verb));
    }
Beispiel #13
0
        static async Task TestObjects(SpeckleApiClient myClient)
        {
            var myPoint = new SpecklePoint()
            {
                Value = new List <double>()
                {
                    1, 2, 3
                }
            };
            var mySecondPoint = new SpecklePoint()
            {
                Value = new List <double>()
                {
                    23, 33, 12
                }
            };
            var myCircle = new SpeckleCircle()
            {
                Radius = 21
            };
            var myPlane = new SpecklePlane()
            {
                Origin = new SpecklePoint()
                {
                    Value = new List <double>()
                    {
                        12, 12, 12
                    }
                }
            };
            var myArc = new SpeckleArc()
            {
                Radius = 2, AngleRadians = 2.1, EndAngle = 1, StartAngle = 0
            };

            myCircle.Properties = new Dictionary <string, object>();
            myCircle.Properties.Add("a  property", "Hello!");
            myCircle.Properties.Add("point", myPoint);


            List <SpeckleObject> myList = new List <SpeckleObject>();

            Console.WriteLine();
            try
            {
                Console.WriteLine("Creating some objects.");
                var Response = await myClient.ObjectCreateAsync(new List <SpeckleObject>() { myPoint, myCircle, myArc, myPlane });

                Console.WriteLine("OK: Saved " + Response.Resources.Count + " objects");
                myList = Response.Resources;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine();
            try
            {
                Console.WriteLine("Updating an object");
                var Response = await myClient.ObjectUpdateAsync(myList[1]._id, new SpeckleCircle()
                {
                    Radius = 42
                });

                Console.WriteLine("OK: Saved " + Response.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine();
            try
            {
                Console.WriteLine("Updating an object's properties");
                var Response = await myClient.ObjectUpdatePropertiesAsync(myList[1]._id, new { hello = "World", max = 3.14 });

                Console.WriteLine("OK: Saved " + Response.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine();
            try
            {
                Console.WriteLine("Getting an object");
                var Response = await myClient.ObjectGetAsync(myList[1]._id);

                Console.WriteLine("OK: Got " + Response.Resource.ToJson());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine();
            try
            {
                Console.WriteLine("Getting objects in bulk");
                var Response = await myClient.ObjectGetBulkAsync(new string[] { myList[1]._id, myList[0]._id, myList[2]._id }, "fields=properties,radius");

                Console.WriteLine("OK: Got " + Response.Resources.Count);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine();
            try
            {
                Console.WriteLine("Deleting an object");
                var Response = await myClient.ObjectDeleteAsync(myList[0]._id);

                Console.WriteLine("OK: Got " + Response.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }