ArcGIS Pro SDK (七)编辑 14 编辑选项

发布于:2024-07-06 ⋅ 阅读:(164) ⋅ 点赞:(0)

ArcGIS Pro SDK (七)编辑 14 编辑选项

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

获取/设置编辑选项

// 切换、切换选项值
var options = ApplicationOptions.EditingOptions;

options.EnforceAttributeValidation = !options.EnforceAttributeValidation;
options.WarnOnSubtypeChange = !options.WarnOnSubtypeChange;
options.InitializeDefaultValuesOnSubtypeChange = !options.InitializeDefaultValuesOnSubtypeChange;
options.UncommitedAttributeEdits = (options.UncommitedAttributeEdits == 
                                    UncommitedEditMode.AlwaysPrompt) ? UncommitedEditMode.Apply : UncommitedEditMode.AlwaysPrompt;

options.StretchGeometry = !options.StretchGeometry;
options.StretchTopology = !options.StretchTopology;
options.UncommitedGeometryEdits = (options.UncommitedGeometryEdits == 
                                   UncommitedEditMode.AlwaysPrompt) ? UncommitedEditMode.Apply : UncommitedEditMode.AlwaysPrompt;

options.ActivateMoveAfterPaste = !options.ActivateMoveAfterPaste;
options.ShowFeatureSketchSymbology = !options.ShowFeatureSketchSymbology;
options.FinishSketchOnDoubleClick = !options.FinishSketchOnDoubleClick;
options.AllowVertexEditingWhileSketching = !options.AllowVertexEditingWhileSketching;
options.ShowDeleteDialog = !options.ShowDeleteDialog;
options.EnableStereoEscape = !options.EnableStereoEscape;
options.DragSketch = !options.DragSketch;
options.ShowDynamicConstraints = !options.ShowDynamicConstraints;
options.IsDeflectionDefaultDirectionConstraint = 
    !options.IsDeflectionDefaultDirectionConstraint;
options.IsDirectionDefaultInputConstraint = !options.IsDirectionDefaultInputConstraint;
options.ShowEditingToolbar = !options.ShowEditingToolbar;
options.ToolbarPosition = (options.ToolbarPosition == ToolbarPosition.Bottom) ? 
    ToolbarPosition.Right : ToolbarPosition.Bottom;
options.ToolbarSize = (options.ToolbarSize == ToolbarSize.Medium) ? 
    ToolbarSize.Small : ToolbarSize.Medium;
options.MagnifyToolbar = !options.MagnifyToolbar;

options.EnableEditingFromEditTab = !options.EnableEditingFromEditTab;
options.AutomaticallySaveEdits = !options.AutomaticallySaveEdits;
options.AutoSaveByTime = !options.AutoSaveByTime;
options.SaveEditsInterval = (options.AutomaticallySaveEdits) ? 20 : 10;
options.SaveEditsOperations = (options.AutomaticallySaveEdits) ? 60 : 30;
options.SaveEditsOnProjectSave = !options.SaveEditsOnProjectSave;
options.ShowSaveEditsDialog = !options.ShowSaveEditsDialog;
options.ShowDiscardEditsDialog = !options.ShowDiscardEditsDialog;
options.DeactivateToolOnSaveOrDiscard = !options.DeactivateToolOnSaveOrDiscard;
options.NewLayersEditable = !options.NewLayersEditable;

获取草图折点符号系统选项

var options = ApplicationOptions.EditingOptions;

// 必须使用 QueuedTask
QueuedTask.Run(() =>
               {
                   // 有 4 种顶点符号设置 - 选中的、未选中的和当前选中的和未选中的顶点。
                   var reg_select = options.GetVertexSymbolOptions(VertexSymbolType.RegularSelected);
                   var reg_unsel = options.GetVertexSymbolOptions(VertexSymbolType.RegularUnselected);
                   var curr_sel = options.GetVertexSymbolOptions(VertexSymbolType.CurrentSelected);
                   var curr_unsel = options.GetVertexSymbolOptions(VertexSymbolType.CurrentUnselected);

                   // 转换选项为符号使用 GetPointSymbol
                   var reg_sel_pt_symbol = reg_select.GetPointSymbol();
                   // 同样适用于 reg_unsel、curr_sel、curr_unsel
               });

获取草图线段符号系统选项

// var options = ApplicationOptions.EditingOptions;
QueuedTask.Run(() =>
               {
                   var seg_options = options.GetSegmentSymbolOptions();
                   // 转换选项为符号使用 SymbolFactory。注意:这是近似值....草图不直接使用 CIM 来表示段
                   var layers = new List<CIMSymbolLayer>();
                   var stroke0 = SymbolFactory.Instance.ConstructStroke(seg_options.PrimaryColor, 
                                                                        seg_options.Width, SimpleLineStyle.Dash);
                   layers.Add(stroke0);
                   if (seg_options.HasSecondaryColor) {
                       var stroke1 = SymbolFactory.Instance.ConstructStroke(
                           seg_options.SecondaryColor, seg_options.Width, SimpleLineStyle.Solid);
                       layers.Add(stroke1);
                   }
                   // 仅使用段符号
                   var sketch_line = new CIMLineSymbol() {
                       SymbolLayers = layers.ToArray()
                   };
               });

设置草图顶点符号选项

// var options = ApplicationOptions.EditingOptions;
QueuedTask.Run(() =>
               {
                   // 修改常规未选定顶点符号
                   // 默认是绿色、空心、方形、5 点。修改为蓝色轮廓、菱形、10 点
                   var vertexSymbol = new VertexSymbolOptions(VertexSymbolType.RegularUnselected);
                   vertexSymbol.OutlineColor = ColorFactory.Instance.BlueRGB;
                   vertexSymbol.MarkerType = VertexMarkerType.Diamond;
                   vertexSymbol.Size = 10;

                   // 是否有效?
                   if (options.CanSetVertexSymbolOptions(
                       VertexSymbolType.RegularUnselected, vertexSymbol)) {
                       // 应用修改
                       options.SetVertexSymbolOptions(VertexSymbolType.RegularUnselected, vertexSymbol);
                   }
               });

设置草图线段符号选项

// var options = ApplicationOptions.EditingOptions;
QueuedTask.Run(() =>
               {
                   // 修改段符号主要颜色为绿色,宽度为 1 点
                   var segSymbol = options.GetSegmentSymbolOptions();
                   segSymbol.PrimaryColor = ColorFactory.Instance.GreenRGB;
                   segSymbol.Width = 1;

                   // 是否有效?
                   if (options.CanSetSegmentSymbolOptions(segSymbol)) {
                       // 应用修改
                       options.SetSegmentSymbolOptions(segSymbol);
                   }
               });

将草图顶点符号设置回默认值

// var options = ApplicationOptions.EditingOptions;
QueuedTask.Run(() =>
               {
                   // 同样适用于常规选定和当前选定、未选定的顶点符号
                   var def_reg_unsel = 
                       options.GetDefaultVertexSymbolOptions(VertexSymbolType.RegularUnselected);
                   // 应用默认值
                   options.SetVertexSymbolOptions(
                       VertexSymbolType.RegularUnselected, def_reg_unsel);
               });

将草图线段符号设置回默认值

// var options = ApplicationOptions.EditingOptions;
QueuedTask.Run(() =>
               {
                   var def_seg = options.GetDefaultSegmentSymbolOptions();
                   options.SetSegmentSymbolOptions(def_seg);
               });

网站公告

今日签到

点亮在社区的每一天
去签到