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); }
// Interval2d public static SpeckleInterval2d ToSpeckle(this UVInterval interval) { return(new SpeckleInterval2d(interval.U.ToSpeckle(), interval.V.ToSpeckle())); }
// Interval2d public Interval2d Interval2dToSpeckle(UVInterval interval) { return(new Interval2d(IntervalToSpeckle(interval.U), IntervalToSpeckle(interval.V))); }
/// <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); } }
public static void WriteInterval2D(GH_IWriter writer, string itemName, UVInterval data) { writer.SetInterval2D(itemName, data.ToIO()); }