public void CreateVoxMatrixTerrain(Point3d[] terrainPoints, Grid grid) { TerrainflagMatrix = String.Empty; List <string> tempTerrainFlag = new List <string>(); int numberZpoint = (grid.CombineGridType && grid.Telescope > 0) ? grid.NumZ + Grid.FIRST_CELL_COMBINED_GRID : grid.NumZ; foreach (Point3d pt in terrainPoints) { try { int valX = (int)Math.Round(((pt.X - grid.MinX) / grid.DimX), 0); int valY = (int)Math.Round(((pt.Y - grid.MinY) / grid.DimY), 0); int valZ = (int)Math.Round(grid.CastingPrecision(pt.Z), 0); tempTerrainFlag.Add(String.Format("{0},{1},{2},1.00000", valX, valY, valZ)); } catch (IndexOutOfRangeException) { // terrain is bigger than grid continue; } } TerrainflagMatrix = String.Join("\n", tempTerrainFlag) + "\n"; }
public void CreateVoxMatrixBuilding(Point3d[] buildingPoints, Point3d[] terrainPoints, Grid grid, int index) { BuildingFlagAndNr = String.Empty; List <string> tempBuildingFlag = new List <string>(); //int numberZpoint = (grid.CombineGridType && grid.Telescope > 0) ? grid.NumZ + Grid.FIRST_CELL_COMBINED_GRID : grid.NumZ; _matrix = new Matrix3d(grid.NumX, grid.NumY, grid.NumZ); foreach (Point3d pt in buildingPoints) { int valX = (int)Math.Round(((pt.X - grid.MinX) / grid.DimX), 0); int valY = (int)Math.Round(((pt.Y - grid.MinY) / grid.DimY), 0); if (!terrainPoints.Contains(pt)) { int valZ = (int)Math.Round(grid.CastingPrecision(pt.Z), 0); _matrix[valX, valY, valZ] = index; tempBuildingFlag.Add(String.Format("{0},{1},{2},{3},{4}", valX, valY, valZ, 1, index)); } } BuildingFlagAndNr = String.Join("\n", tempBuildingFlag) + "\n"; }