ArcGIS Pro 3.7 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 Property GeneralPlacementProperties As CIMGeneralPlacementProperties
    public CIMGeneralPlacementProperties GeneralPlacementProperties {get; set;}
    Example
    Create Abbreviation Dictionary in the Map Definition to a layer
    {
        //Get the map's definition
        //Note: needs to be called on the MCT
        var mapDefn = MapView.Active.Map.GetDefinition();
        //Get the Map's Maplex labelling engine properties
        var mapDefnPlacementProps = mapDefn.GeneralPlacementProperties as CIMMaplexGeneralPlacementProperties;
    
        //Define the abbreviations 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 definition 
        MapView.Active.Map.SetDefinition(mapDefn);
    }
    Apply Abbreviation Dictionary in the Map Definition to a layer
    {
        //Creates Abbreviation dictionary and adds to Map Definition                                
        //Refer to the " Create Abbreviation Dictionary in the Map Definition to a layer" snippet above
        //Get the layer's definition
        //Note: needs to be called on the MCT
        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;
        //Get the dictionary from the map definition
        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 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also