ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping.Voxel Namespace / VoxelVariableProfile Class / CreateIsosurface Method
The definition of the surface to create.
Example Version

CreateIsosurface Method
Create an isosurface for the variable profile. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
public void CreateIsosurface( 
   IsosurfaceDefinition isosurfaceDef
)

Parameters

isosurfaceDef
The definition of the surface to create.
Exceptions
ExceptionDescription
This method or property must be called within the lambda passed to QueuedTask.Run.
Isosurface cannot be added to this variable profile.
Value cannot be null
Remarks
IsoSurfaces can only be created for variable profiles that are of type ArcGIS.Core.CIM.VoxelVariableDataType.Continuous. By definition, they must be using a ArcGIS.Core.CIM.CIMVoxelStretchRenderer. Only a maximum of MaxNumberOfIsosurfaces can be created per variable. Refer to CanCreateIsosurface.
Example
Create Isosurface
//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
    });
}
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also