コード例 #1
0
        public static SpeckleObject fromInterval2d(UVInterval i)
        {
            SpeckleObject obj = new SpeckleObject();

            obj.value = new ExpandoObject();

            obj.type    = "Interval2d";
            obj.hash    = "NoHash";
            obj.value.u = fromInterval(i.U);
            obj.value.v = fromInterval(i.V);
            return(obj);
        }
コード例 #2
0
 // Interval2d
 public static SpeckleInterval2d ToSpeckle(this UVInterval interval)
 {
     return(new SpeckleInterval2d(interval.U.ToSpeckle(), interval.V.ToSpeckle()));
 }
コード例 #3
0
 // Interval2d
 public Interval2d Interval2dToSpeckle(UVInterval interval)
 {
     return(new Interval2d(IntervalToSpeckle(interval.U), IntervalToSpeckle(interval.V)));
 }
コード例 #4
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            Surface surface   = null;
            int     uNumber   = 0;
            int     vNumber   = 0;
            int     otherness = 0;
            int     seed      = 0;

            if (!DA.GetData(0, ref surface))
            {
                return;
            }
            if (!DA.GetData(1, ref uNumber))
            {
                return;
            }
            if (!DA.GetData(2, ref vNumber))
            {
                return;
            }
            if (!DA.GetData(3, ref otherness))
            {
                return;
            }
            if (!DA.GetData(4, ref seed))
            {
                return;
            }
            Surface x = surface;
            int     y = uNumber;
            int     z = vNumber;

            if (otherness > 0.5)
            {
                Random        rand = new Random(seed);
                List <double> r1   = new List <double>();
                List <double> r2   = new List <double>();
                for (int i = 0; i < y + z; i++)
                {
                    double random = rand.Next(otherness * 10);
                    if (random == 0)
                    {
                        i--;
                        continue;
                    }
                    if (i >= y)
                    {
                        r2.Add(random / 10);
                        continue;
                    }
                    r1.Add(random / 10);
                }
                Interval              uu    = x.Domain(0);
                Interval              vv    = x.Domain(1);
                List <Interval>       ulist = randInterval(uu, r1);
                List <Interval>       vlist = randInterval(vv, r2);
                DataTree <Surface>    sss   = new DataTree <Surface>();
                DataTree <UVInterval> uv    = new DataTree <UVInterval>();
                int index = 0;
                for (int i = 0; i < y; i++)
                {
                    for (int j = 0; j < z; j++)
                    {
                        UVInterval uvinterval = new UVInterval(ulist[i], vlist[j]);
                        sss.Add(x.Trim(ulist[i], vlist[j]), new GH_Path(0, index));
                        uv.Add(uvinterval, new GH_Path(0, index));
                    }
                    index++;
                }
                DA.SetDataTree(0, sss);
                DA.SetDataTree(1, uv);
            }
        }
コード例 #5
0
 public static void WriteInterval2D(GH_IWriter writer, string itemName, UVInterval data)
 {
     writer.SetInterval2D(itemName, data.ToIO());
 }