public NurbsSurface SurfaceToNative(Surface surface)
        {
            var points  = new DS.Point[] [] { };
            var weights = new double[] [] { };

            var controlPoints = surface.GetControlPoints();

            points = controlPoints.Select(row => row.Select(p => DS.Point.ByCoordinates(
                                                                ScaleToNative(p.x, p.units),
                                                                ScaleToNative(p.y, p.units),
                                                                ScaleToNative(p.z, p.units))).ToArray())
                     .ToArray();

            weights = controlPoints.Select(row => row.Select(p => p.weight).ToArray()).ToArray();

            var knotsU = surface.knotsU;

            knotsU.Insert(0, knotsU[0]);
            knotsU.Add(knotsU[knotsU.Count - 1]);

            var knotsV = surface.knotsV;

            knotsV.Insert(0, knotsV[0]);
            knotsV.Add(knotsV[knotsV.Count - 1]);

            var result = DS.NurbsSurface.ByControlPointsWeightsKnots(points, weights, knotsU.ToArray(), surface.knotsV.ToArray(),
                                                                     surface.degreeU, surface.degreeV);

            return(result);
        }
        /// <summary>
        /// DS Point to SpecklePoint
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public Point PointToSpeckle(DS.Point pt, string units = null)
        {
            var point = new Point(pt.X, pt.Y, pt.Z, units ?? ModelUnits);

            CopyProperties(point, pt);
            return(point);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// DS Point to SpecklePoint
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public Point PointToSpeckle(DS.Point pt)
        {
            var point = new Point(pt.X, pt.Y, pt.Z, ModelUnits);

            CopyProperties(point, pt);
            return(point);
        }
 /// <summary>
 /// SpeckleArc to DS Arc
 /// </summary>
 /// <param name="a"></param>
 /// <returns></returns>
 public DS.Arc ArcToNative(Arc a)
 {
     using (DS.Plane basePlane = PlaneToNative(a.plane))
         using (DS.Point startPoint = (DS.Point)basePlane.Origin.Translate(basePlane.XAxis, ScaleToNative(a.radius.Value, a.units)))
         {
             var arc = DS.Arc.ByCenterPointStartPointSweepAngle(
                 basePlane.Origin,
                 startPoint,
                 a.angleRadians.Value.ToDegrees(),
                 basePlane.Normal
                 );
             return(arc.SetDynamoProperties <DS.Arc>(GetDynamicMembersFromBase(a)));
         }
 }
        /// <summary>
        /// Array of point coordinates to array of DS Points
        /// </summary>
        /// <param name="arr"></param>
        /// <returns></returns>
        public DS.Point[] ArrayToPointList(IEnumerable <double> arr, string units = null)
        {
            if (arr.Count() % 3 != 0)
            {
                throw new SpeckleException("Array malformed: length%3 != 0.");
            }

            DS.Point[] points  = new DS.Point[arr.Count() / 3];
            var        asArray = arr.ToArray();

            for (int i = 2, k = 0; i < arr.Count(); i += 3)
            {
                points[k++] = DS.Point.ByCoordinates(ScaleToNative(asArray[i - 2], units), ScaleToNative(asArray[i - 1], units), ScaleToNative(asArray[i], units));
            }

            return(points);
        }
 public double[] PointToArray(DS.Point pt)
 {
     return(new double[] { pt.X, pt.Y, pt.Z });
 }