ArcGIS Pro SDK (五)内容 6 工程单位

ArcGIS Pro SDK (五)内容 6 工程单位

目录

  • [ArcGIS Pro SDK (五)内容 6 工程单位](#ArcGIS Pro SDK (五)内容 6 工程单位)
    • [1 获取所有可用单位格式的完整列表](#1 获取所有可用单位格式的完整列表)
    • [2 获取当前项目的单位格式列表](#2 获取当前项目的单位格式列表)
    • [3 获取当前项目的特定单位格式列表](#3 获取当前项目的特定单位格式列表)
    • [4 获取当前项目的默认格式列表](#4 获取当前项目的默认格式列表)
    • [5 获取当前项目的特定默认单位格式](#5 获取当前项目的特定默认单位格式)
    • [6 为当前项目设置特定的单位格式列表](#6 为当前项目设置特定的单位格式列表)
    • [7 设置项目单位格式的默认值](#7 设置项目单位格式的默认值)
    • [8 更新项目的单位格式](#8 更新项目的单位格式)

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 获取所有可用单位格式的完整列表

csharp 复制代码
//需要使用 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("");
}

2 获取当前项目的单位格式列表

csharp 复制代码
//需要使用 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("");
}

3 获取当前项目的特定单位格式列表

csharp 复制代码
//需要使用 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);

4 获取当前项目的默认格式列表

csharp 复制代码
//需要使用 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("");

5 获取当前项目的特定默认单位格式

csharp 复制代码
//需要使用 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);

6 为当前项目设置特定的单位格式列表

csharp 复制代码
//需要使用 QueuedTask.Run()

//UnitFormatType.Angular, UnitFormatType.Area, UnitFormatType.Distance, 
//UnitFormatType.Direction, UnitFormatType.Location

//获取所有可用位置单位的完整列表
var all_units = DisplayUnitFormats.Instance.GetPredefinedProjectUnitFormats(
                                                      UnitFormatType.Location);
//保持单位的偶数工厂代码
var list_units = all_units.Where(du => du.UnitCode % 2 == 0).ToList();

//将它们设置为新的位置单位集合。没有指定新的默认值......
DisplayUnitFormats.Instance.SetProjectUnitFormats(list_units);

//将它们设置为新的位置单位集合以及新的默认值
DisplayUnitFormats.Instance.SetProjectUnitFormats(
                                        list_units, list_units.First());

//Note: UnitFormatType.Page, UnitFormatType.Symbol2D, UnitFormatType.Symbol3D

7 设置项目单位格式的默认值

csharp 复制代码
//需要使用 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);
  //任意选择每个单位格式列表中的最后一个单位
  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}");
}

8 更新项目的单位格式

csharp 复制代码
//UnitFormatType.Angular, UnitFormatType.Area, UnitFormatType.Distance, 
//UnitFormatType.Direction, UnitFormatType.Location
var angle_units = DisplayUnitFormats.Instance.GetProjectUnitFormats(UnitFormatType.Angular);

//编辑每个单位的显示名称-添加缩写
foreach (var unit in angle_units)
{
  unit.DisplayName = $"{unit.DisplayName} ({unit.Abbreviation})";
}
//将更改应用到单位上,并将默认值设置为第一个条目
DisplayUnitFormats.Instance.SetProjectUnitFormats(angle_units, angle_units.First());

//项目必须保存以持久化更改......
相关推荐
大飞pkz2 小时前
【设计模式】题目小练2
开发语言·设计模式·c#·题目小练
csdn_aspnet4 小时前
MongoDB C# .NetCore 驱动程序 序列化忽略属性
mongodb·c#·.netcore
浪扼飞舟4 小时前
c#基础二(类和对象,构造器调用顺序、访问级别、重写和多态、抽象类和接口)
java·开发语言·c#
好望角雾眠8 小时前
第四阶段C#通讯开发-1:通讯基础理论,串口,通讯模式,单位转换,代码示例
开发语言·笔记·c#·串口·通讯
阿智@118 小时前
推荐使用 pnpm 而不是 npm
前端·arcgis·npm
GIS思维9 小时前
ArcGIS(Pro)在线地图服务被禁?提示感叹号?应急方案来了——重新正常显示
arcgis·arcgispro
bug总结9 小时前
多楼层室内定位可视化 Demo(A*路径避障)
arcgis
薄荷撞~可乐15 小时前
C#Task(Api)应用
开发语言·c#
almighty2720 小时前
C#WPF控制USB摄像头参数:曝光、白平衡等高级设置完全指南
开发语言·c#·wpf·usb相机·参数设置
后青春期的诗go21 小时前
金蝶云星空插件开发记录(一)
c#·钉钉·金蝶云星空·插件开发