ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMStandardLabelPlacementProperties Class / LineLabelPosition Property
Example Version

LineLabelPosition Property
Gets or sets the line label position.
Syntax
public CIMStandardLineLabelPosition LineLabelPosition {get; set;}
Example
Modify the Placement/Position of labels - Line 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
  var lineLablePosition = new CIMStandardLineLabelPosition
  {
    Perpendicular = true,
    Parallel = false,
    ProduceCurvedLabels = false,
    Horizontal = false,
    OnTop = true
  };
  theLabelClass.StandardLabelPlacementProperties.LineLabelPosition = 
      lineLablePosition;
}
else //Current labeling engine is Maplex labeling engine
{
  theLabelClass.MaplexLabelPlacementProperties.LinePlacementMethod = 
                MaplexLinePlacementMethod.CenteredPerpendicularOnLine;
  theLabelClass.MaplexLabelPlacementProperties.LineFeatureType = 
                MaplexLineFeatureType.General;
}
//theLabelClass.MaplexLabelPlacementProperties.LinePlacementMethod = MaplexLinePlacementMethod.CenteredPerpendicularOnLine;
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