/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { Mesh M = new Mesh(); double S = 0.0; int G = 2; // Load input values of a mesh and size if (!DA.GetData(0, ref M)) { return; } DA.GetData(1, ref S); DA.GetData(2, ref G); if (!(M is Mesh)) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "M must be Mesh."); } ; Voxels voxels = Voxelizer.Run(M, S); // ocree Octree tree = new Octree(voxels.min_x, voxels.max_x, voxels.min_y, voxels.max_y, voxels.min_z, voxels.max_z, G); foreach (Point3d p in voxels.points) { tree.Add(p); } voxels.voxels.Clear(); voxels.points.Clear(); foreach (OctreeNode node in tree.getChildren()) { Point3d center = node.getCenter(); double size = node.getWidth(); Plane grid_plane = new Plane(center, Plane.WorldXY.ZAxis); Interval interval = new Interval(-size, size); Box voxel = new Box(grid_plane, interval, interval, interval); voxels.voxels.Add(voxel); voxels.points.Add(center); } // assign the output values DA.SetDataList(0, voxels.voxels); DA.SetDataList(1, voxels.points); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { Mesh M = new Mesh(); double S = 0.0; // Load input values of a mesh and size if (!DA.GetData(0, ref M)) { return; } DA.GetData(1, ref S); if (!(M is Mesh)) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "M must be Mesh."); } ; Voxels voxels = Voxelizer.Run(M, S); // assign the output values DA.SetDataList(0, voxels.voxels); DA.SetDataList(1, voxels.points); }