Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }