Exemple #1
0
        private static GH_Mesh SetMeshLevel(GH_Mesh mesh, List <int> meshLevels, double?resolution)
        {
            var levelDetails = new MeshLevelDetails
            {
                Resolution = resolution,
                Level      = meshLevels.Count > 0? new MeshLevels {
                    Min = meshLevels.First(), Max = meshLevels.Last()
                }: null
            };

            Geometry.setUserString(
                mesh,
                "ComputeMeshLevels",
                levelDetails.ToJson()
                );
            return(mesh);
        }
Exemple #2
0
        public static double EstimateSurfaceAreaCells(IGH_GeometricGoo geo, double baseCellSize)
        {
            var surfaceName = Geometry.getUserString(geo, "ComputeName");
            var levels      = Geometry.getUserString(geo, "ComputeMeshLevels");

            if (string.IsNullOrEmpty(surfaceName) || string.IsNullOrEmpty(levels))
            {
                return(0.0);
            }

            var meshLevel = new MeshLevelDetails().FromJson(levels);

            meshLevel.CellSize = baseCellSize;
            var cellSize = baseCellSize / Math.Pow(2, meshLevel.Level.Min);
            var mesh     = new Mesh();

            geo.CastTo(out mesh);
            var area = AreaMassProperties.Compute(mesh).Area;

            return((area / Math.Pow(cellSize, 2)) * 4);
        }
Exemple #3
0
        private static Dictionary <string, MeshLevelDetails> GetSurfaces(List <IGH_GeometricGoo> meshes, double cellSize)
        {
            var surfaces = new Dictionary <string, MeshLevelDetails>();

            foreach (var mesh in meshes)
            {
                var surfaceName = Geometry.getUserString(mesh, "ComputeName");
                var meshLevels  = Geometry.getUserString(mesh, "ComputeMeshLevels");

                if (string.IsNullOrEmpty(surfaceName) || string.IsNullOrEmpty(meshLevels))
                {
                    continue;
                }

                var meshLevel = new MeshLevelDetails().FromJson(meshLevels);
                meshLevel.CellSize = cellSize;
                surfaces.Add(
                    surfaceName, meshLevel
                    );
            }

            return(surfaces);
        }