public void CreateIsosurface( IsosurfaceDefinition isosurfaceDef )
Public Sub CreateIsosurface( _ ByVal isosurfaceDef As IsosurfaceDefinition _ )
Parameters
- isosurfaceDef
- The definition of the surface to create.
public void CreateIsosurface( IsosurfaceDefinition isosurfaceDef )
Public Sub CreateIsosurface( _ ByVal isosurfaceDef As IsosurfaceDefinition _ )
Exception | Description |
---|---|
ArcGIS.Core.CalledOnWrongThreadException | This method or property must be called within the lambda passed to QueuedTask.Run. |
System.InvalidOperationException | Isosurface cannot be added to this variable profile. |
System.ArgumentException | Value cannot be null |
//var voxelLayer = ... ; //Must be on the QueuedTask.Run() //Visualization must be surface if (voxelLayer.Visualization != VoxelVisualization.Surface) voxelLayer.SetVisualization(VoxelVisualization.Surface); //Get the variable profile on which to create the iso surface var variable = voxelLayer.SelectedVariableProfile; // o Visualization must be Surface // o Variable profile must be continuous // o Variable MaxNumberofIsoSurfaces must not have been reached... if (variable.CanCreateIsosurface) { //Note: calling create if variable.CanCreateIsosurface == false //will trigger an InvalidOperationException //Specify a voxel value for the iso surface //At 2.x - //var min = variable.GetVariableStatistics().MinimumValue; //var max = variable.GetVariableStatistics().MaximumValue; var min = variable.Statistics.MinimumValue; var max = variable.Statistics.MaximumValue; var mid = (max + min) / 2; //color range (i.e. values that are being rendered) var renderer = variable.Renderer as CIMVoxelStretchRenderer; var color_min = renderer.ColorRangeMin; var color_max = renderer.ColorRangeMax; //keep the surface within the current color range (or it //won't render) if (mid < color_min) { mid = renderer.ColorRangeMin; } else if (mid > color_max) { mid = renderer.ColorRangeMax; } //Create the iso surface var suffix = Math.Truncate(mid * 100) / 100; variable.CreateIsosurface(new IsosurfaceDefinition() { Name = $"Surface {suffix}", Value = mid, IsVisible = true }); }
Target Platforms: Windows 11, Windows 10