private static GH_Mesh CreateRefinementMesh(Point3d centerPoint, double radius, int index, List <double> heights, int?meshLevel, List <double> resolutions)
        {
            var height = index < heights.Count ? heights[index] : heights.Last();
            var mesh   = CreateMesh(centerPoint, radius, height);

            if (meshLevel != null)
            {
                meshLevel = meshLevel - index <= 1 ? 1 : meshLevel - index;

                var refinementRegion = new RefinementDetails
                {
                    Mode   = "inside",
                    Levels = $"(( {meshLevel} {meshLevel} ))"
                };
                Geometry.setUserString(
                    mesh,
                    "ComputeRefinementRegion",
                    refinementRegion.ToJson()
                    );
            }
            else
            {
                var resolution       = index < resolutions.Count ? resolutions[index] : resolutions.Last();
                var refinementRegion = new RefinementDetails
                {
                    Mode       = "inside",
                    Resolution = resolution
                };
                Geometry.setUserString(
                    mesh,
                    "ComputeRefinementRegion",
                    refinementRegion.ToJson()
                    );
            }

            Geometry.setUserString(
                mesh,
                "ComputeName",
                $"Refinement_X{centerPoint.X}_Y{centerPoint.Y}_Z{centerPoint.Z}_R{radius}"
                );
            return(mesh);
        }
예제 #2
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            var meshes   = new List <GH_Mesh>();
            var location = "inside";
            var minLevel = 1;
            var maxLevel = 1;


            DA.GetDataList(0, meshes);
            if (!DA.GetData(1, ref location))
            {
                return;
            }

            DA.GetData(2, ref minLevel);
            DA.GetData(2, ref maxLevel);

            var refLevels = $"(( {minLevel} {maxLevel} ))";

            // Get a list of object references in the Rhino model
            foreach (var mesh in meshes)
            {
                var refinementRegion = new RefinementDetails
                {
                    Mode   = location,
                    Levels = refLevels
                };
                Geometry.setUserString(
                    mesh,
                    "ComputeRefinementRegion",
                    refinementRegion.ToJson()
                    );
            }

            DA.SetDataList(0, meshes);
        }