ArcGIS Pro 3.2 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMLabelClass Class / MaplexLabelPlacementProperties Property
Example Version

    MaplexLabelPlacementProperties Property
    Gets or sets the Maplex placement properties which are used when the map uses the Maplex label engine.
    Syntax
    public CIMMaplexLabelPlacementProperties MaplexLabelPlacementProperties {get; set;}
    Example
    Modify the Placement/Position of labels - Point geometry
    //Note: call within QueuedTask.Run()
    
    //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 
    //Check if the label engine is Maplex or standard.
    CIMGeneralPlacementProperties labelEngine = 
       MapView.Active.Map.GetDefinition().GeneralPlacementProperties;
    if (labelEngine is CIMStandardGeneralPlacementProperties) //Current labeling engine is Standard labeling engine               
      theLabelClass.StandardLabelPlacementProperties.PointPlacementMethod = 
               StandardPointPlacementMethod.OnTopPoint;
    else    //Current labeling engine is Maplex labeling engine            
      theLabelClass.MaplexLabelPlacementProperties.PointPlacementMethod = 
              MaplexPointPlacementMethod.CenteredOnPoint;
    
    lyrDefn.LabelClasses = listLabelClasses.ToArray(); //Set the labelClasses back
    featureLayer.SetDefinition(lyrDefn); //set the layer's definition
    Modify label Rotation - Point geometry
    //Note: call within QueuedTask.Run()
    
    //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 Rotation
    CIMMaplexRotationProperties rotationProperties = new CIMMaplexRotationProperties
    {
      Enable = true, //Enable rotation
      RotationField = "ELEVATION", //Field that is used to define rotation angle
      AdditionalAngle = 15, //Additional rotation 
      RotationType = MaplexLabelRotationType.Arithmetic,
      AlignmentType = MaplexRotationAlignmentType.Perpendicular,
      AlignLabelToAngle = true
    };
    theLabelClass.MaplexLabelPlacementProperties.RotationProperties = rotationProperties;
    lyrDefn.LabelClasses = listLabelClasses.ToArray(); //Set the labelClasses back
    featureLayer.SetDefinition(lyrDefn); //set the layer's definition
    Spread labels across Polygon geometry
    //Note: call within QueuedTask.Run()
    
    //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();
    //Spread Labels (words and characters to fill feature)
    // Spread words to fill feature
    theLabelClass.MaplexLabelPlacementProperties.SpreadWords = true;
    //Spread Characters to a fixed limit of 50%
    theLabelClass.MaplexLabelPlacementProperties.SpreadCharacters = true;
    theLabelClass.MaplexLabelPlacementProperties.MaximumCharacterSpacing = 50.0;
    lyrDefn.LabelClasses = listLabelClasses.ToArray(); //Set the labelClasses back
    featureLayer.SetDefinition(lyrDefn); //set the layer's definition
    Modify label's Leader Line Anchor point properties - Polygon geometry
    //Note: call within QueuedTask.Run()
    
    //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();
    //If TextSymbol is a callout the leader line anachor point can be modified
    theLabelClass.MaplexLabelPlacementProperties.PolygonAnchorPointType = MaplexAnchorPointType.Perimeter;
    lyrDefn.LabelClasses = listLabelClasses.ToArray(); //Set the labelClasses back
    featureLayer.SetDefinition(lyrDefn); //set the layer's definition
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also