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); }
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); }