ArcGIS Pro 3.7 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 ReadOnly Property CanCreateIsosurface As Boolean
    public bool CanCreateIsosurface {get;}
    Remarks
    Example
    Check CanCreateIsoSurface
    {
      //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
    {
      // Note: call within 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
    
          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 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also