ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / Layer Class / SetDefinition Method
ArcGIS.Core.CIM.CIMBaseLayer
Example

In This Topic
    SetDefinition Method (Layer)
    In This Topic
    Updates the layer's CIM definition. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    public void SetDefinition( 
       CIMBaseLayer baseLayer
    )
    Public Sub SetDefinition( _
       ByVal baseLayer As CIMBaseLayer _
    ) 

    Parameters

    baseLayer
    ArcGIS.Core.CIM.CIMBaseLayer
    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Example
    Hide or show editing tools on templates
    QueuedTask.Run(() =>
    {
      //hide all tools except line tool on layer
      var featLayer = MapView.Active.Map.FindLayers("Roads").First();
    
      var editTemplates = featLayer.GetTemplates();
      var newCIMEditingTemplates = new List<CIMEditingTemplate>();
    
      foreach (var et in editTemplates)
      {
        //initialize template by activating default tool
        et.ActivateDefaultToolAsync();
        var cimEditTemplate = et.GetDefinition();
        //get the visible tools on this template
        var allTools = et.ToolIDs.ToList();
        //add the hidden tools on this template
        allTools.AddRange(cimEditTemplate.GetExcludedToolIDs().ToList());
        //hide all the tools then allow the line tool
      
        //At 2.x -
        //allTools.AddRange(cimEditTemplate.GetExcludedToolDamlIds().ToList());
        allTools.AddRange(cimEditTemplate.GetExcludedToolIDs().ToList());
        
        //At 2.x - 
        //cimEditTemplate.SetExcludedToolDamlIds(allTools.ToArray());
        //cimEditTemplate.AllowToolDamlID("esri_editing_SketchLineTool");
        
        cimEditTemplate.SetExcludedToolIDs(allTools.ToArray());
        cimEditTemplate.AllowToolID("esri_editing_SketchLineTool");
        newCIMEditingTemplates.Add(cimEditTemplate);
      }
      //update the layer templates
      var layerDef = featLayer.GetDefinition() as CIMFeatureLayer;
      // Set AutoGenerateFeatureTemplates to false for template changes to stick
      layerDef.AutoGenerateFeatureTemplates = false;
      layerDef.FeatureTemplates = newCIMEditingTemplates.ToArray();
      featLayer.SetDefinition(layerDef);
    });
    Edit Color Modulation
    //Must be called on the MCT
    //var pcsl = ...;
    var def = pcsl.GetDefinition() as CIMPointCloudLayer;
    //Get the ColorModulation off the renderer
    var modulation = def.Renderer.ColorModulation;
    if (modulation == null)
      modulation = new CIMColorModulationInfo();
    //Set the minimum and maximum intensity as needed
    modulation.MinValue = 0;
    modulation.MaxValue = 100.0;
    //apply back
    def.Renderer.ColorModulation = modulation;
    //Commit changes back to the CIM
    pcsl.SetDefinition(def);
    
    Edit The Renderer to use Fixed Size
    //Must be called on the MCT
    //var pcsl = ...;
    var def = pcsl.GetDefinition() as CIMPointCloudLayer;
    
    //Set the point shape and sizing on the renderer
    def.Renderer.PointShape = PointCloudShapeType.DiskShaded;
    var pointSize = new CIMPointCloudFixedSizeAlgorithm()
    {
      UseRealWorldSymbolSizes = false,
      Size = 8
    };
    def.Renderer.PointSizeAlgorithm = pointSize;
    //Commit changes back to the CIM
    pcsl.SetDefinition(def);
    Edit the Renderer to Scale Size
    //Must be called on the MCT
    //var pcsl = ...;
    var def = pcsl.GetDefinition() as CIMPointCloudLayer;
    
    //Set the point shape and sizing on the renderer
    def.Renderer.PointShape = PointCloudShapeType.DiskFlat;//default
    var scaleSize = new CIMPointCloudSplatAlgorithm()
    {
      MinSize = 8,
      ScaleFactor = 1.0 //100%
    };
    def.Renderer.PointSizeAlgorithm = scaleSize;
    //Commit changes back to the CIM
    pcsl.SetDefinition(def);
    Edit Density settings
    //Must be called on the MCT
    //var pcsl = ...;
    var def = pcsl.GetDefinition() as CIMPointCloudLayer;
    //PointsBudget - corresponds to Display Limit on the UI
    // - the absolute maximum # of points to display
    def.PointsBudget = 1000000;
    
    //PointsPerInch - corresponds to Density Min --- Max on the UI
    // - the max number of points per display inch to renderer
    def.PointsPerInch = 15;
    //Commit changes back to the CIM
    pcsl.SetDefinition(def);
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also