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

In This Topic
    CreateIsosurface Method
    In This Topic
    Create an isosurface for the variable profile. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    public void CreateIsosurface( 
       IsosurfaceDefinition isosurfaceDef
    )
    Public Sub CreateIsosurface( _
       ByVal isosurfaceDef As IsosurfaceDefinition _
    ) 

    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