ArcGIS Pro 3.0 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMMap Class / GeneralPlacementProperties Property
Example

In This Topic
    GeneralPlacementProperties Property (CIMMap)
    In This Topic
    Gets or sets the general label placement properties for dynamic labels in the map.
    Syntax
    public CIMGeneralPlacementProperties GeneralPlacementProperties {get; set;}
    Public Property GeneralPlacementProperties As CIMGeneralPlacementProperties
    Example
    Create and apply Abbreviation Dictionary in the Map Definition to a layer
    public static void CreateDictionary()
    {
      //Get the map's defintion
      var mapDefn = MapView.Active.Map.GetDefinition();
      //Get the Map's Maplex labelling engine properties
      var mapDefnPlacementProps = mapDefn.GeneralPlacementProperties as CIMMaplexGeneralPlacementProperties;
    
      //Define the abbreaviations we need in an array            
      List<CIMMaplexDictionaryEntry> abbreviationDictionary = new List<CIMMaplexDictionaryEntry>
            {
                new CIMMaplexDictionaryEntry {
                Abbreviation = "Hts",
                Text = "Heights",
                MaplexAbbreviationType = MaplexAbbreviationType.Ending
    
             },
                new CIMMaplexDictionaryEntry
                {
                    Abbreviation = "Ct",
                    Text = "Text",
                    MaplexAbbreviationType = MaplexAbbreviationType.Ending
    
                }
                //etc
            };
      //The Maplex Dictionary - can hold multiple Abbreviation collections
      var maplexDictionary = new List<CIMMaplexDictionary>
            {
                new CIMMaplexDictionary {
                    Name = "NameEndingsAbbreviations",
                    MaplexDictionary = abbreviationDictionary.ToArray()
                }
    
            };
      //Set the Maplex Label Engine Dictionary property to the Maplex Dictionary collection created above.
      mapDefnPlacementProps.Dictionaries = maplexDictionary.ToArray();
      //Set the Map defintion 
      MapView.Active.Map.SetDefinition(mapDefn);
    }
    
    private static void ApplyDictionary()
    {
      var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().First();
    
      QueuedTask.Run(() =>
      {
        //Creates Abbreviation dictionary and adds to Map Defintion                                
        CreateDictionary();
        //Get the layer's definition
        var lyrDefn = featureLayer.GetDefinition() as CIMFeatureLayer;
        //Get the label classes - we need the first one
        var listLabelClasses = lyrDefn.LabelClasses.ToList();
        var theLabelClass = listLabelClasses.FirstOrDefault();
        //Modify label Placement props to use abbreviation dictionary 
        CIMGeneralPlacementProperties labelEngine = MapView.Active.Map.GetDefinition().GeneralPlacementProperties;
        theLabelClass.MaplexLabelPlacementProperties.DictionaryName = "NameEndingsAbbreviations";
        theLabelClass.MaplexLabelPlacementProperties.CanAbbreviateLabel = true;
        theLabelClass.MaplexLabelPlacementProperties.CanStackLabel = false;
        //Set the labelClasses back
        lyrDefn.LabelClasses = listLabelClasses.ToArray();
        //set the layer's definition
        featureLayer.SetDefinition(lyrDefn);
      });
    }
    
    
    Get the active map's labeling engine - Maplex or Standard labeling engine
    //Note: call within QueuedTask.Run()
    
    //Get the active map's definition - CIMMap.
    var cimMap = MapView.Active.Map.GetDefinition();
    //Get the labeling engine from the map definition
    CIMGeneralPlacementProperties labelEngine = cimMap.GeneralPlacementProperties;
    Change the active map's labeling engine from Standard to Maplex or vice versa
    //Note: call within QueuedTask.Run()
    
    //Get the active map's definition - CIMMap.
    var cimMap = MapView.Active.Map.GetDefinition();
    //Get the labeling engine from the map definition
    var cimGeneralPlacement = cimMap.GeneralPlacementProperties;
    
    if (cimGeneralPlacement is CIMMaplexGeneralPlacementProperties)
    {
      //Current labeling engine is Maplex labeling engine
      //Create a new standard label engine properties
      var cimStandardPlacementProperties = new CIMStandardGeneralPlacementProperties();
      //Set the CIMMap's GeneralPlacementProperties to the new label engine
      cimMap.GeneralPlacementProperties = cimStandardPlacementProperties;
    }
    else
    {
      //Current labeling engine is Standard labeling engine
      //Create a new Maplex label engine properties
      var cimMaplexGeneralPlacementProperties = new CIMMaplexGeneralPlacementProperties();
      //Set the CIMMap's GeneralPlacementProperties to the new label engine
      cimMap.GeneralPlacementProperties = cimMaplexGeneralPlacementProperties;
    }
    //Set the map's definition
    MapView.Active.Map.SetDefinition(cimMap);
    Requirements

    Target Platforms: Windows 11, Windows 10, Windows 8.1

    See Also