ArcGIS Pro 3.2 API Reference Guide
ArcGIS.Desktop.Core.UnitFormats Namespace / DisplayUnitFormats Class
Members Example

In This Topic
    DisplayUnitFormats Class
    In This Topic
    Provides access to, and updating of, project unit formatting
    Object Model
    DisplayUnitFormats ClassDisplayUnitFormat ClassIDisplayUnitFormats Interface
    Syntax
    public class DisplayUnitFormats : IDisplayUnitFormats  
    Public Class DisplayUnitFormats 
       Implements IDisplayUnitFormats 
    Example
    Get The Full List of All Available Unit Formats
    //Must be on the QueuedTask.Run()
    
    var unit_formats = Enum.GetValues(typeof(UnitFormatType))
                          .OfType<UnitFormatType>().ToList();
    System.Diagnostics.Debug.WriteLine("All available units\r\n");
    
    foreach (var unit_format in unit_formats)
    {
      var units = DisplayUnitFormats.Instance.GetPredefinedProjectUnitFormats(unit_format);
      System.Diagnostics.Debug.WriteLine(unit_format.ToString());
    
      foreach (var display_unit_format in units)
      {
        var line = $"{display_unit_format.DisplayName}, {display_unit_format.UnitCode}";
        System.Diagnostics.Debug.WriteLine(line);
      }
      System.Diagnostics.Debug.WriteLine("");
    }
    Get The List of Unit Formats for the Current Project
    //Must be on the QueuedTask.Run()
    
    var unit_formats = Enum.GetValues(typeof(UnitFormatType))
                          .OfType<UnitFormatType>().ToList();
    System.Diagnostics.Debug.WriteLine("Project units\r\n");
    
    foreach (var unit_format in unit_formats)
    {
      var units = DisplayUnitFormats.Instance.GetProjectUnitFormats(unit_format);
      System.Diagnostics.Debug.WriteLine(unit_format.ToString());
    
      foreach (var display_unit_format in units)
      {
        var line = $"{display_unit_format.DisplayName}, {display_unit_format.UnitCode}";
        System.Diagnostics.Debug.WriteLine(line);
      }
      System.Diagnostics.Debug.WriteLine("");
    }
    Get A Specific List of Unit Formats for the Current Project
    //Must be on the QueuedTask.Run()
    
    //UnitFormatType.Angular, UnitFormatType.Area, UnitFormatType.Distance, 
    //UnitFormatType.Direction, UnitFormatType.Location, UnitFormatType.Page
    //UnitFormatType.Symbol2D, UnitFormatType.Symbol3D
    var units = DisplayUnitFormats.Instance.GetProjectUnitFormats(UnitFormatType.Distance);
    
    Get The List of Default Formats for the Current Project
    //Must be on the QueuedTask.Run()
    
    var unit_formats = Enum.GetValues(typeof(UnitFormatType))
                          .OfType<UnitFormatType>().ToList();
    System.Diagnostics.Debug.WriteLine("Default project units\r\n");
    
    foreach (var unit_format in unit_formats)
    {
      var default_unit = DisplayUnitFormats.Instance.GetDefaultProjectUnitFormat(unit_format);
      var line = $"{unit_format.ToString()}: {default_unit.DisplayName}, {default_unit.UnitCode}";
      System.Diagnostics.Debug.WriteLine(line);
    }
    System.Diagnostics.Debug.WriteLine("");
    
    Get A Specific Default Unit Format for the Current Project
    //Must be on the QueuedTask.Run()
    
    //UnitFormatType.Angular, UnitFormatType.Area, UnitFormatType.Distance, 
    //UnitFormatType.Direction, UnitFormatType.Location, UnitFormatType.Page
    //UnitFormatType.Symbol2D, UnitFormatType.Symbol3D
    var default_unit = DisplayUnitFormats.Instance.GetDefaultProjectUnitFormat(
                                                         UnitFormatType.Distance);
    
    Set a Specific List of Unit Formats for the Current Project
    //Must be on the QueuedTask.Run()
    
    //UnitFormatType.Angular, UnitFormatType.Area, UnitFormatType.Distance, 
    //UnitFormatType.Direction, UnitFormatType.Location
    
    //Get the full list of all available location units
    var all_units = DisplayUnitFormats.Instance.GetPredefinedProjectUnitFormats(
                                                          UnitFormatType.Location);
    //keep units with an even factory code
    var list_units = all_units.Where(du => du.UnitCode % 2 == 0).ToList();
    
    //set them as the new location unit collection. A new default is not being specified...
    DisplayUnitFormats.Instance.SetProjectUnitFormats(list_units);
    
    //set them as the new location unit collection along with a new default
    DisplayUnitFormats.Instance.SetProjectUnitFormats(
                                            list_units, list_units.First());
    
    //Note: UnitFormatType.Page, UnitFormatType.Symbol2D, UnitFormatType.Symbol3D
    //cannot be set.
    Set the Defaults for the Project Unit Formats
    //Must be on the QueuedTask.Run()
    
    var unit_formats = Enum.GetValues(typeof(UnitFormatType)).OfType<UnitFormatType>().ToList();
    foreach (var unit_type in unit_formats)
    {
      var current_default = DisplayUnitFormats.Instance.GetDefaultProjectUnitFormat(unit_type);
      //Arbitrarily pick the last unit in each unit format list
      var replacement = DisplayUnitFormats.Instance.GetProjectUnitFormats(unit_type).Last();
      DisplayUnitFormats.Instance.SetDefaultProjectUnitFormat(replacement);
    
      var line = $"{current_default.DisplayName}, {current_default.UnitName}, {current_default.UnitCode}";
      var line2 = $"{replacement.DisplayName}, {replacement.UnitName}, {replacement.UnitCode}";
    
      System.Diagnostics.Debug.WriteLine($"Format: {unit_type.ToString()}");
      System.Diagnostics.Debug.WriteLine($" Current default: {line}");
      System.Diagnostics.Debug.WriteLine($" Replacement default: {line2}");
    }
    
    Update Unit Formats for the Project
    //UnitFormatType.Angular, UnitFormatType.Area, UnitFormatType.Distance, 
    //UnitFormatType.Direction, UnitFormatType.Location
    var angle_units = DisplayUnitFormats.Instance.GetProjectUnitFormats(UnitFormatType.Angular);
    
    //Edit the display name of each unit - append the abbreviation
    foreach (var unit in angle_units)
    {
      unit.DisplayName = $"{unit.DisplayName} ({unit.Abbreviation})";
    }
    //apply the changes to the units and set the default to be the first entry
    DisplayUnitFormats.Instance.SetProjectUnitFormats(angle_units, angle_units.First());
    
    //The project must be saved to persist the changes...
    Inheritance Hierarchy

    System.Object
       ArcGIS.Desktop.Core.UnitFormats.DisplayUnitFormats

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also