private static PixelCoordinate GetPixelFromRhinoObject(string name, string material) { string[] pixelInfo = name.Split(':'); int i = Convert.ToInt32(pixelInfo[1]); int j = Convert.ToInt32(pixelInfo[2]); int k = Convert.ToInt32(pixelInfo[3]); PixelCoordinate pix = new PixelCoordinate() { I = i, J = j, K = k }; switch (pixelInfo[0]) { case "X": pix.MaterialX = material; break; case "Y": pix.MaterialY = material; break; default: pix.MaterialZ = material; break; } return(pix); }
public static IEnumerable <PixelCoordinate> GetPixelFromSparseMatrix(List <string> rows) { List <PixelCoordinate> pixels = new List <PixelCoordinate>(); for (int i = 0; i < rows.Count; i++) { Facade face = new Facade(); string[] row = rows[i].Replace(" ", "").Split(','); double x = Convert.ToInt32(row[(int)FaceDirection.X]); double y = Convert.ToInt32(row[(int)FaceDirection.Y]); int z = Convert.ToInt32(row[(int)FaceDirection.Z]); string matX = row[3]; string matY = row[4]; string matZ = row[5]; PixelCoordinate pix = new PixelCoordinate() { I = x, J = y, K = z, MaterialX = matX, MaterialY = matY, MaterialZ = matZ }; pixels.Add(pix); } return(pixels); }
public static IEnumerable <PixelCoordinate> GetPixelFromSelection(List <Rhino.DocObjects.RhinoObject> rhinoObjects, string material) { List <PixelCoordinate> pixels = new List <PixelCoordinate>(); foreach (Rhino.DocObjects.RhinoObject rhobj in rhinoObjects) { if (rhobj.Name.Contains("X:") || rhobj.Name.Contains("Y:") || rhobj.Name.Contains("Z:")) { PixelCoordinate pix = GetPixelFromRhinoObject(rhobj.Name, material); pixels.Add(pix); } } return(pixels); }
public static IEnumerable <PixelCoordinate> GetUniqueSelectedPixels(List <PixelCoordinate> pixels) { List <PixelCoordinate> uniquePixels = new List <PixelCoordinate>(); List <string> series = new List <string>(); foreach (PixelCoordinate pix in pixels) { string line = String.Join(",", new[] { pix.I, pix.J, pix.K }); series.Add(line); } series = series.Distinct().ToList(); for (int i = 0; i < series.Count; i++) { string[] elements = series[i].Split(','); int ci = Convert.ToInt32(elements[0]); int cj = Convert.ToInt32(elements[1]); int ck = Convert.ToInt32(elements[2]); var pix = new PixelCoordinate() { I = ci, J = cj, K = ck }; foreach (PixelCoordinate pixelSel in pixels) { if ((pixelSel.I == pix.I) && (pixelSel.J == pix.J) && (pixelSel.K == pix.K)) { if (pixelSel.MaterialX != null) { pix.MaterialX = pixelSel.MaterialX; } if (pixelSel.MaterialY != null) { pix.MaterialY = pixelSel.MaterialY; } if (pixelSel.MaterialZ != null) { pix.MaterialZ = pixelSel.MaterialZ; } } } uniquePixels.Add(pix); } return(uniquePixels); }
protected static Facade GenerateXfacade(Grid grid, PixelCoordinate pix) { var sequence = grid.Sequence; var position = grid.Height; var point = new Point3d((pix.I * grid.DimX) + grid.MinX - (grid.DimX / 2), (pix.J * grid.DimY) + grid.MinY, position[pix.K]); var plane = new Plane(point, Vector3d.XAxis); var dimY = grid.DimY; var mesh = Mesh.CreateFromPlane(plane, new Interval(-dimY / 2, dimY / 2), new Interval(-sequence[pix.K] / 2, sequence[pix.K] / 2), 1, 1); Facade face = new Facade() { Id = String.Format("X:{0}:{1}:{2}", pix.I, pix.J, pix.K), Geometry = mesh, Centroid = point }; return(face); }
private static Mesh ConvertToRhinoXZMesh(Grid grid) { Mesh result = new Mesh(); Facade face = new Facade(); var height = grid.Height; int numX = grid.NumX; for (int k = 0; k < height.Length; k++) { for (int i = 0; i < numX; i++) { PixelCoordinate pix = new PixelCoordinate() { I = i, J = 0, K = k }; face = GenerateYfacade(grid, pix); result.Append(face.Geometry); } } return(result); }
private static Mesh ConvertToRhinoXYMesh(Grid grid) { Mesh result = new Mesh(); Facade face = new Facade(); int numX = grid.NumY; int numY = grid.NumX; for (int i = 0; i < numX; i++) { for (int j = 0; j < numY; j++) { PixelCoordinate pix = new PixelCoordinate() { I = j, J = i, K = 0 }; face = GenerateZfacade(grid, pix); result.Append(face.Geometry); } } return(result); }