//var voxelLayer = ... ; //Must be on the QueuedTask.Run() //Visualization must be surface or CanCreateIsosurface will return //false if (voxelLayer.Visualization != VoxelVisualization.Surface) voxelLayer.SetVisualization(VoxelVisualization.Surface); //Get the variable profile on which to create the iso surface var variable = voxelLayer.SelectedVariableProfile; //or use ...voxelLayer.GetVariableProfiles().First(.... // o Visualization must be Surface // o Variable profile must be continuous // o Variable MaxNumberofIsoSurfaces must not have been reached... if (variable.CanCreateIsosurface) { //Do the create }
//var voxelLayer = ... ; //Must be on the QueuedTask.Run() //Visualization must be surface or CanCreateIsosurface will return //false if (voxelLayer.Visualization != VoxelVisualization.Surface) voxelLayer.SetVisualization(VoxelVisualization.Surface); //Get the variable profile on which to create the iso surface var variable = voxelLayer.SelectedVariableProfile; //or use ...voxelLayer.GetVariableProfiles().First(.... // o Visualization must be Surface // o Variable profile must be continuous // o Variable MaxNumberofIsoSurfaces must not have been reached... if (variable.CanCreateIsosurface) { //Do the create }
//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