ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / ScaleBarInfo Class
Members Example

In This Topic
    ScaleBarInfo Class
    In This Topic
    Scale bar properties for use with ElementFactory
    Object Model
    ScaleBarInfo ClassScaleBarStyleItem Class
    Syntax
    Public Class ScaleBarInfo 
       Inherits MapSurroundInfo
    public class ScaleBarInfo : MapSurroundInfo 
    Example
    Create Scale Bar From StyleItem
    {
      //Create a scale bar using a style.
    
      //Search for a style project item by name
      StyleProjectItem arcgis_2dStyle = Project.Current.GetItems<StyleProjectItem>()
                                  .First(si => si.Name == "ArcGIS 2D");
    
      //Note: Must be on QueuedTask.Run
    
      //Reference the specific scale bar by name 
      ScaleBarStyleItem scaleBarItem = arcgis_2dStyle.SearchScaleBars(
                          "Double Alternating Scale Bar").FirstOrDefault();
    
      //Reference the map frame and define the location
      MapFrame myMapFrame = layout.FindElement("Map Frame") as MapFrame;
      Coordinate2D coord2D = new Coordinate2D(10.0, 7.0);
    
      //Construct the scale bar
      var sbarInfo = new ScaleBarInfo()
      {
        MapFrameName = myMapFrame.Name,
        ScaleBarStyleItem = scaleBarItem
      };
      ElementFactory.Instance.CreateMapSurroundElement(
              layout, coord2D.ToMapPoint(), sbarInfo);
    }
    Create Scale Bar
    {
      //Note: Must be on QueuedTask.Run
    
      //Build geometry
      Coordinate2D ll = new Coordinate2D(5.0, 6);
      Coordinate2D ur = new Coordinate2D(6.0, 7);
      Envelope sbEnv = EnvelopeBuilderEx.CreateEnvelope(ll, ur);
    
      //Reference a Scale Bar in a style
      StyleProjectItem stylePrjItm = Project.Current.GetItems<StyleProjectItem>()
                    .FirstOrDefault(item => item.Name == "ArcGIS 2D");
      ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars(
                   "Alternating Scale Bar 1")[0];
      //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars(
      //                                   "Double Alternating Scale Bar 1")[0];
      //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars(
      //                                    "Hollow Scale Bar 1")[0];
    
      //Create Scale Bar
      ScaleBarInfo sbInfo = new ScaleBarInfo()
      {
        MapFrameName = mapFrame.Name,
      };
    
      var sbElm = ElementFactory.Instance.CreateMapSurroundElement(
                                         layout, sbEnv, sbInfo) as ScaleBar;
    }
    Create Scale Line
    {
      //Note: Must be on QueuedTask.Run
      //Build geometry
      Coordinate2D ll = new Coordinate2D(5.0, 8);
      Coordinate2D ur = new Coordinate2D(6.0, 9);
      Envelope sbEnv = EnvelopeBuilderEx.CreateEnvelope(ll, ur);
    
      //Reference a Scale Bar in a style
      StyleProjectItem stylePrjItm = Project.Current.GetItems<StyleProjectItem>()
                                   .FirstOrDefault(item => item.Name == "ArcGIS 2D");
      ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars(
                                    "Scale Line 1")[0];
      //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars(
      //                                           "Stepped Scale Line")[0];
      //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars(
      //                                            "Scale Line 2")[0];
    
      //Create Scale Bar
      ScaleBarInfo sbInfo = new ScaleBarInfo()
      {
        MapFrameName = mapFrame.Name,
        ScaleBarStyleItem = sbStyleItm
      };
    
      var sbElm = ElementFactory.Instance.CreateMapSurroundElement(
                        layout, sbEnv, sbInfo, "ScaleBar Line") as ScaleBar;
    }
    Inheritance Hierarchy

    System.Object
       ArcGIS.Desktop.Layouts.MapSurroundInfo
          ArcGIS.Desktop.Layouts.ScaleBarInfo

    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also