ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping.Voxel Namespace / VoxelVariableProfile Class / CanCreateIsosurface Property
Example

In This Topic
    CanCreateIsosurface Property
    In This Topic
    Gets whether an isosurface can be added to this variable profile.
    Syntax
    public bool CanCreateIsosurface {get;}
    Public ReadOnly Property CanCreateIsosurface As Boolean
    Remarks
    Example
    Check CanCreateIsoSurface
    //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
    }
    
    Check CanCreateIsoSurface
    //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
    }
    
    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