public void Activate(ESRI.ArcGIS.Controls.IEngineEditor pEditor, ESRI.ArcGIS.Controls.IEngineEditTask pOldTask)
        {
            if (pEditor == null)
                return;

            pEngineEditor = pEditor;
            pEditSketch = pEngineEditor as IEngineEditSketch;
            pEditSketch.GeometryType = esriGeometryType.esriGeometryPolyline;
            pEditLayer = pEditSketch as IEngineEditLayers;

            //Listen to engine editor events
            ((IEngineEditEvents_Event)pEditSketch).OnTargetLayerChanged += new IEngineEditEvents_OnTargetLayerChangedEventHandler(OnTargetLayerChanged);

            ((IEngineEditEvents_Event)pEditSketch).OnCurrentTaskChanged += new IEngineEditEvents_OnCurrentTaskChangedEventHandler(OnCurrentTaskChanged);
        }
Esempio n. 2
0
 public void OnClick()
 {
     map              = hookHelper.FocusMap;
     activeView       = map as IActiveView;
     engineEditor     = MapManager.EngineEditor;
     engineEditLayers = MapManager.EngineEditor as IEngineEditLayers;
 }
 public void OnClick()
 {
     m_Map              = m_hookHelper.FocusMap;
     m_activeView       = m_Map as IActiveView;
     m_EngineEditor     = MapManager.EngineEditor;
     m_EngineEditLayers = MapManager.EngineEditor as IEngineEditLayers;
 }
Esempio n. 4
0
        private void cmdEdit_Click(object sender, EventArgs e)
        {
            if (cmdEdit.Text == "Edit")
            {
                IFeatureLayer featlayer = FindFeatureLayer("usa_major_highways");

                if (featlayer != null)
                {
                    m_engineEditor.StartEditing(((IDataset)featlayer.FeatureClass).Workspace, m_mapControl.Map);
                    IEngineEditLayers editLayer = (IEngineEditLayers)m_engineEditor;
                    editLayer.SetTargetLayer(featlayer, 0);
                    EnableButtons();

                    cmdEdit.Text = "Finish";
                    Color color = Color.Red;
                    cmdEdit.BackColor = color;
                    cmdCreate_Click(cmdCreate, null);
                }
            }
            else
            {
                SaveEdits();
                DisableButtons();
                cmdEdit.Text = "Edit";
                Color color = Color.White;
                cmdEdit.BackColor = color;
                SetErrorLabel("");
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Load
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            m_controlsSynchronizer = new ControlsSynchronizer(m_mapControl, m_pageLayoutControl);
            //把 MapControl 和 PageLayoutControl 绑定起来(两个都指向同一个 Map),然后设置 MapControl 为活动的 Control
            m_controlsSynchronizer.BindControls(true);
            //为了在切换 MapControl 和 PageLayoutControl 视图同步,要添加 Framework Control
            m_controlsSynchronizer.AddFrameworkControl(axToolbarControl1.Object);
            m_controlsSynchronizer.AddFrameworkControl(axTOCControl1.Object);


            axToolbarControl1.AddItem(new DotDensitySymbolsCmd(), -1, -1, false, -1, esriCommandStyles.esriCommandStyleIconAndText);//点密度
            axTOCControl1.SetBuddyControl(axMapControl1);

            axToolbarControl1.SetBuddyControl(axMapControl1);
            //定制菜单
            chkCustomize.Checked      = false;
            chkCustomize.CheckOnClick = true;
            //调用非模态定制对话框
            this.presenter.CreateCustomizeDialog();
            //初始化自定义命令
            axToolbarControl1.AddItem(new ClearCurrentActiveToolCmd(), -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconAndText);
            axToolbarControl1.AddItem(new AddDateTool(axToolbarControl1, axPageLayoutControl1), -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconAndText);
            //设置编辑菜单的状态
            saveEdit.Enabled    = false;
            endEdit.Enabled     = false;
            selectLayer.Enabled = false;
            addLayer.Enabled    = false;
            //编辑
            pEngineEditor           = new EngineEditorClass();
            MapManager.EngineEditor = pEngineEditor;
            pEngineEditTask         = pEngineEditor as IEngineEditTask;
            pEngineEditLayers       = pEngineEditor as IEngineEditLayers;
        }
Esempio n. 6
0
        private void 赋值ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayerFrm lf = new LayerFrm(m_mapControl);

            lf.ShowDialog();
            ILayer        pLayer        = lf.PLayer;
            IFeatureClass pFeatureClass = (pLayer as IFeatureLayer).FeatureClass;
            IDataset      pDataset      = pFeatureClass as IDataset;
            IEngineEditor pEngineEditor = new EngineEditorClass();

            //开始编辑
            pEngineEditor.StartEditing(pDataset.Workspace, axMapControl1.Map);
            //开始操作
            pEngineEditor.StartOperation();
            //设置目标图层
            IEngineEditLayers pEditLayer = pEngineEditor as IEngineEditLayers;

            pEditLayer.SetTargetLayer(pLayer as IFeatureLayer, 0);
            //设置当前任务
            pEngineEditor.CurrentTask = new Utilities.CalculatContourTask() as IEngineEditTask;
            //执行绘制操作
            ICommand pSketch = new ControlsEditingSketchToolClass();

            pSketch.OnCreate(axMapControl1.Object);
            //pSketch.OnClick();
            axMapControl1.CurrentTool = pSketch as ITool;
            if (pEngineEditor.EditState == esriEngineEditState.esriEngineStateEditing)
            {
                pEngineEditor.StopEditing(true);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add CmdCreateParrallel.OnClick implementation
            IEngineEditor     pEngineEdit  = new EngineEditorClass();
            IEngineEditLayers pEEditLayers = pEngineEdit as IEngineEditLayers;
            IFeatureLayer     targetLayer  = pEEditLayers.TargetLayer;


            IFeatureSelection featureSelection = targetLayer as IFeatureSelection;
            ISelectionSet     selectionSet     = featureSelection.SelectionSet;

            if (selectionSet.Count > 0)
            {
                ICursor cursor;
                selectionSet.Search(null, true, out cursor);
                IFeatureCursor        featureCursor = cursor as IFeatureCursor;
                IFeature              feature       = null;
                FrmParallelLineOffset frm           = new FrmParallelLineOffset();
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    while ((feature = featureCursor.NextFeature()) != null)
                    {
                        IPolyline pPolyline = ConstructOffset(feature.Shape as IPolyline, frm.offset);
                        IFeature  pFeature  = targetLayer.FeatureClass.CreateFeature();
                        pFeature.Shape = pPolyline;
                        pFeature.Store();
                        m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                    }
                }
            }
        }
Esempio n. 8
0
        public void OnClick()
        {
            m_Map = m_hookHelper.FocusMap;
            m_activeView = m_Map as IActiveView;
            m_EngineEditor = MapManager.EngineEditor;
            m_EngineEditLayers = MapManager.EngineEditor as IEngineEditLayers;

            EditVertexClass.m_activeView = m_activeView;
            EditVertexClass.m_Map = m_Map;

            EditVertexClass.ClearResource();

            if (m_EngineEditor == null) return;
            if (m_EngineEditor.EditState != esriEngineEditState.esriEngineStateEditing) return;
            if (m_EngineEditLayers == null) return;

            IFeatureLayer pFeatLyr = m_EngineEditLayers.TargetLayer;
            if (pFeatLyr == null) return;
            IFeatureCursor pFeatCur = MapManager.GetSelectedFeatures(pFeatLyr);
            if (pFeatCur == null)
            {
                MessageBox.Show("请选择要删除节点的要素!", "提示",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            EditVertexClass.ShowAllVertex(pFeatLyr);

            ((IActiveViewEvents_Event)m_Map).AfterDraw += new IActiveViewEvents_AfterDrawEventHandler(map_AfterDraw);

        }
 /// <summary>
 /// 编辑工具初始化
 /// </summary>
 private void EditorInit()
 {
     pEngineEditor           = new EngineEditorClass();
     MapManager.EngineEditor = pEngineEditor;
     pEngineEditTask         = pEngineEditor as IEngineEditTask;
     pEngineEditLayers       = pEngineEditor as IEngineEditLayers;
     pActiveView             = pMap as IActiveView;
 }
Esempio n. 10
0
        public static IFeatureLayer GetEditTargetLayer()
        {
            IEngineEditor     pEngineEdit  = new EngineEditorClass();
            IEngineEditLayers pEEditLayers = pEngineEdit as IEngineEditLayers;
            IFeatureLayer     targetLayer  = pEEditLayers.TargetLayer;

            return(targetLayer);
        }
Esempio n. 11
0
 public void OnClick()
 {
     m_Map              = m_hookHelper.FocusMap;
     m_activeView       = m_Map as IActiveView;
     m_EngineEditor     = MapManager.EngineEditor;
     m_EngineEditLayers = MapManager.EngineEditor as IEngineEditLayers;
     EditVertexClass.ClearResource();
 }
 public void OnClick()
 {
     try
     {
         m_Map              = m_hookHelper.FocusMap;
         m_activeView       = m_Map as IActiveView;
         m_EngineEditor     = MapManager.EngineEditor;
         m_EngineEditLayers = MapManager.EngineEditor as IEngineEditLayers;
         if (m_EngineEditor == null)
         {
             return;
         }
         if (m_EngineEditor.EditState != esriEngineEditState.esriEngineStateEditing)
         {
             return;
         }
         if (m_EngineEditLayers == null)
         {
             return;
         }
         IFeatureLayer pFeatLyr = m_EngineEditLayers.TargetLayer;
         if (pFeatLyr == null)
         {
             return;
         }
         IFeatureClass pFeatCls = pFeatLyr.FeatureClass;
         if (pFeatCls == null)
         {
             return;
         }
         IFeatureCursor pFeatCur = MapManager.GetSelectedFeatures(pFeatLyr);
         if (pFeatCur == null)
         {
             MessageBox.Show("请选择要删除的要素!", "提示",
                             MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         m_EngineEditor.StartOperation();
         IFeature pFeature = pFeatCur.NextFeature();
         if (MessageBox.Show("是否删除所选要素?", "提示", MessageBoxButtons.YesNo,
                             MessageBoxIcon.Information) == DialogResult.Yes)
         {
             while (pFeature != null)
             {
                 pFeature.Delete();
                 pFeature = pFeatCur.NextFeature();
             }
         }
         System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatCur);
         m_EngineEditor.StopOperation("DelFeatureCommand");
         m_activeView.Refresh();
     }
     catch (Exception ex)
     {
         //SysLogHelper.WriteOperationLog("要素删除错误", ex.Source, "数据编辑");
     }
 }
        /// <summary>
        /// 开始编辑按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStartEdit_Click(object sender, EventArgs e)
        {
            try
            {
                mEngineEditor     = new EngineEditorClass();
                mEngineEditTask   = mEngineEditor as IEngineEditTask;
                mEngineEditLayers = mEngineEditor as IEngineEditLayers;
                mMap        = MainMapControl.Map;
                mActiveView = mMap as IActiveView;
                mlistLayers = MapOperation.GetLayers(mMap);

                if (mlistLayers == null || mlistLayers.Count == 0)
                {
                    MessageBox.Show("请加载编辑图层!", "提示",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                mMap.ClearSelection();
                mActiveView.Refresh();
                InitComboBox(mlistLayers);
                ChangeButtonState(true);

                // 如果编辑已经开始,则直接退出
                if (mEngineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
                {
                    return;
                }
                if (mCurrentLyr == null)
                {
                    return;
                }
                // 获取当前编辑图层工作空间
                IDataset   dataset   = mCurrentLyr.FeatureClass as IDataset;
                IWorkspace workspace = dataset.Workspace;
                // 设置编辑模式,如果是ArcSDE采用版本模式
                if (workspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                {
                    mEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned;
                }
                else
                {
                    mEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned;
                }
                // 设置编辑任务
                mEngineEditTask           = mEngineEditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask");
                mEngineEditor.CurrentTask = mEngineEditTask;
                //是否可以进行撤销、恢复操作
                mEngineEditor.EnableUndoRedo(true);
                //开始编辑操作
                mEngineEditor.StartEditing(workspace, mMap);
            }
            catch (Exception ex)
            {
            }
        }
Esempio n. 14
0
        public void Deactivate()
        {
            // throw new NotImplementedException();
            pEditSketch.RefreshSketch();
            ((IEngineEditEvents_Event)pEditSketch).OnTargetLayerChanged -= new IEngineEditEvents_OnTargetLayerChangedEventHandler(OnTargetLayerChanged);

            ((IEngineEditEvents_Event)pEditSketch).OnCurrentTaskChanged -= new IEngineEditEvents_OnCurrentTaskChangedEventHandler(OnCurrentTaskChanged);
            pEngineEditor = null;
            pEditSketch   = null;
            pEditLayer    = null;
        }
        public void Deactivate()
        {
            //Stop listening for editor events.
            ((IEngineEditEvents_Event)m_engineEditor).OnTargetLayerChanged -= OnTargetLayerChanged;
            ((IEngineEditEvents_Event)m_engineEditor).OnCurrentTaskChanged -= OnCurrentTaskChanged;

            //Release object references.
            m_engineEditor = null;
            m_editSketch   = null;
            m_editLayer    = null;
        }
Esempio n. 16
0
        public void Deactivate()
        {
            m_editSketch.RefreshSketch();

            //Stop listening to engine editor events.
            ((IEngineEditEvents_Event)m_editSketch).OnTargetLayerChanged -= OnTargetLayerChanged;
            ((IEngineEditEvents_Event)m_editSketch).OnSelectionChanged   -= OnSelectionChanged;
            ((IEngineEditEvents_Event)m_editSketch).OnCurrentTaskChanged -= OnCurrentTaskChanged;

            //Release object references.
            m_engineEditor = null;
            m_editSketch   = null;
            m_editLayer    = null;
        }
Esempio n. 17
0
        public SnapEditor()
        {
            InitializeComponent();

            //get the snapEnvironment
            editor          = new EngineEditorClass();
            editLayers      = editor as IEngineEditLayers;
            snapEnvironment = editor as IEngineSnapEnvironment;

            //Update this form with the snap environment and snap tips
            //Note: from here on we expect all snap changes to be made via this form, so it is not updated after direct changes to the snapping
            //environment or the Arc Engine Snap Window.
            RefreshDisplay();
        }
    public SnapEditor()
    {
      InitializeComponent();

      //get the snapEnvironment
      editor = new EngineEditorClass();
      editLayers = editor as IEngineEditLayers;
      snapEnvironment = editor as IEngineSnapEnvironment;    
  
      //Update this form with the snap environment and snap tips
      //Note: from here on we expect all snap changes to be made via this form, so it is not updated after direct changes to the snapping 
      //environment or the Arc Engine Snap Window. 
      RefreshDisplay();
    }
Esempio n. 19
0
        public void TargetLayerChanged(TargetLayerChangedEvent ev)
        {
            if (_engineEditor == null)
            {
                return;
            }

            if (_engineEditor.EditState == esriEngineEditState.esriEngineStateEditing)
            {
                _currentLayer = ev.TargerLayer;
                IEngineEditLayers editorLayer = (IEngineEditLayers)_engineEditor;
                editorLayer.SetTargetLayer(_currentLayer, 0);
            }
        }
Esempio n. 20
0
 /// <summary>
 /// Occurs when this tool is created
 /// </summary>
 /// <param name="hook">Instance of the application</param>
 public override void OnCreate(object hook)
 {
     try
     {
         m_hookHelper      = new HookHelperClass();
         m_hookHelper.Hook = hook;
         m_engineEditor    = new EngineEditorClass(); //this class is a singleton
         m_editLayer       = m_engineEditor as IEngineEditLayers;
     }
     catch
     {
         m_hookHelper = null;
     }
 }
Esempio n. 21
0
        /// <summary>
        /// Return the cursor to be used by the tool
        /// </summary>
        //public override int Cursor
        //{
        //    get
        //    {
        //        int iHandle = 0;

        //        iHandle = m_InsertVertexCursor.Handle.ToInt32();
        //        //switch (m_lSubType)
        //        //{
        //        //    case 1:
        //        //        iHandle = m_InsertVertexCursor.Handle.ToInt32();
        //        //        break;

        //        //    case 2:
        //        //        iHandle = m_DeleteVertexCursor.Handle.ToInt32();
        //        //        break;
        //        //}

        //        return (iHandle);
        //    }
        //}

        /// <summary>
        /// Occurs when this tool is created
        /// </summary>
        /// <param name="hook">Instance of the application</param>
        public override void OnCreate(object hook)
        {
            try
            {
                m_hookHelper      = new HookHelperClass();
                m_hookHelper.Hook = hook;
                m_engineEditor    = new EngineEditorClass(); //this class is a singleton
                m_editLayer       = m_engineEditor as IEngineEditLayers;
            }
            catch
            {
                m_hookHelper = null;
            }

            // TODO:  Add ToolSplitLine.OnCreate implementation
        }
        public void Activate(ESRI.ArcGIS.Controls.IEngineEditor editor, ESRI.ArcGIS.Controls.IEngineEditTask oldTask)
        {
            if (editor == null)
            {
                return;
            }

            //Initialize class member variables.
            m_engineEditor            = editor;
            m_editSketch              = editor as IEngineEditSketch;
            m_editSketch.GeometryType = esriGeometryType.esriGeometryPolyline;
            m_editLayer = m_editSketch as IEngineEditLayers;

            //Wire editor events.
            ((IEngineEditEvents_Event)m_editSketch).OnTargetLayerChanged += new IEngineEditEvents_OnTargetLayerChangedEventHandler(OnTargetLayerChanged);
            ((IEngineEditEvents_Event)m_editSketch).OnCurrentTaskChanged += new IEngineEditEvents_OnCurrentTaskChangedEventHandler(OnCurrentTaskChanged);
        }
Esempio n. 23
0
        public void Activate(ESRI.ArcGIS.Controls.IEngineEditor editor, ESRI.ArcGIS.Controls.IEngineEditTask oldTask)
        {
            if (editor == null)
            {
                return;
            }

            m_engineEditor            = editor;
            m_editSketch              = m_engineEditor as IEngineEditSketch;
            m_editSketch.GeometryType = esriGeometryType.esriGeometryPolyline;
            m_editLayer = m_editSketch as IEngineEditLayers;

            //Listen to engine editor events
            ((IEngineEditEvents_Event)m_editSketch).OnTargetLayerChanged += new IEngineEditEvents_OnTargetLayerChangedEventHandler(OnTargetLayerChanged);
            ((IEngineEditEvents_Event)m_editSketch).OnSelectionChanged   += new IEngineEditEvents_OnSelectionChangedEventHandler(OnSelectionChanged);
            ((IEngineEditEvents_Event)m_editSketch).OnCurrentTaskChanged += new IEngineEditEvents_OnCurrentTaskChangedEventHandler(OnCurrentTaskChanged);
        }
Esempio n. 24
0
 private void frmMain_Load(object sender, EventArgs e)
 {
     //地图标注
     m_mapControl = (IMapControl3)axMapControl1.Object;
     //设置伙伴控件关系
     axTOCControl1.SetBuddyControl(axMapControl1);
     axToolbarControl1.SetBuddyControl(axMapControl1);
     //调用操作函数,设置“编辑”菜单的状态
     ChangeButtonState(true);
     //“编辑”菜单变量实例化
     engineEditor            = new EngineEditorClass();
     MapManager.EngineEditor = engineEditor;
     engineEditTask          = engineEditor as IEngineEditTask;
     engineEditLayers        = engineEditor as IEngineEditLayers;
     //定制工具条
     CreateCustomizeDialog();
 }
Esempio n. 25
0
        public void Activate(IEngineEditor editor, IEngineEditTask oldTask)
        {
            //throw new NotImplementedException();

            if (editor == null)
            {
                return;
            }
            pEngineEditor            = editor;
            pEditSketch              = editor as IEngineEditSketch;
            pEditSketch.GeometryType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline;

            pEditLayer = pEditSketch as IEngineEditLayers;
            //

            ((IEngineEditEvents_Event)pEditSketch).OnTargetLayerChanged += new IEngineEditEvents_OnTargetLayerChangedEventHandler(OnTargetLayerChanged);

            ((IEngineEditEvents_Event)pEditSketch).OnCurrentTaskChanged += new IEngineEditEvents_OnCurrentTaskChangedEventHandler(OnCurrentTaskChanged);
        }
Esempio n. 26
0
        private void InitObject()
        {
            try
            {
                ChangeButtonState(false);
                pEngineEditor           = new EngineEditorClass();
                MapManager.EngineEditor = pEngineEditor;
                pEngineEditTask         = pEngineEditor as IEngineEditTask;
                pEngineEditLayers       = pEngineEditor as IEngineEditLayers;

                mMap = axMap.Map;

                //Server server = new Server();
                //server.handler += handleMessage;
                //server.start();
            }
            catch (Exception ex)
            {
            }
        }
Esempio n. 27
0
        private void startEdit_ToolbarItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            IBasicMap          map           = null;
            ILayer             selectedLayer = null;
            object             unk           = null;
            object             data          = null;
            esriTOCControlItem item          = esriTOCControlItem.esriTOCControlItemNone;

            m_tocControl.GetSelectedItem(ref item, ref map, ref selectedLayer, ref unk, ref data);

            if (item == esriTOCControlItem.esriTOCControlItemLayer)
            {
                // 启动编辑
                if (pEngineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
                {
                    return;
                }

                IFeatureLayer featurelayer = selectedLayer as IFeatureLayer;
                IDataset      dataset      = featurelayer.FeatureClass as IDataset;
                IWorkspace    workspace    = dataset.Workspace;

                pEngineEditor.StartEditing(workspace, m_mapControl.Map);
                ((IEngineEditLayers)pEngineEditor).SetTargetLayer(featurelayer, -1);

                pEngineEditor.StartOperation();

                // 设置目标图层
                IEngineEditLayers pEditLayer = pEngineEditor as IEngineEditLayers;
                pEditLayer.SetTargetLayer(featurelayer, 0);
                targetLayer_ToolbarText.Caption += " " + featurelayer.Name;

                featureEditor_ToolbarItem_ItemClick(null, null);

                featureEditToolbar.Visible = true;
            }
            ICommand pcommand = new ControlsEditingStartCommand();

            pcommand.OnCreate(m_mapControl.Object);
            pcommand.OnClick();
        }
Esempio n. 28
0
        /// <summary>
        /// 编辑所选图层
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void editLayer_ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pEngineEditor = new EngineEditorClass();
            IBasicMap          map           = null;
            ILayer             selectedLayer = null;
            object             unk           = null;
            object             data          = null;
            esriTOCControlItem item          = esriTOCControlItem.esriTOCControlItemNone;

            m_tocControl.GetSelectedItem(ref item, ref map, ref selectedLayer, ref unk, ref data);

            if (item == esriTOCControlItem.esriTOCControlItemLayer)
            {
                //启动编辑
                if (pEngineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
                {
                    return;
                }
                IFeatureLayer featurelayer = selectedLayer as IFeatureLayer;
                IDataset      dataset      = featurelayer.FeatureClass as IDataset;
                IWorkspace    workspace    = dataset.Workspace;

                pEngineEditor.StartEditing(workspace, m_mapControl.Map);
                ((IEngineEditLayers)pEngineEditor).SetTargetLayer(featurelayer, -1);

                pEngineEditor.StartOperation();

                //设置目标图层
                IEngineEditLayers pEditLayer = pEngineEditor as IEngineEditLayers;
                pEditLayer.SetTargetLayer(featurelayer, 0);
                m_editinglayer.Caption += " " + featurelayer.Name;

                ICommand t_editcommand = new ESRI.ArcGIS.Controls.ControlsEditingEditToolClass();
                t_editcommand.OnCreate(m_mapControl.Object);
                m_mapControl.CurrentTool = t_editcommand as ITool;
                t_editcommand.OnClick();

                map_edittools.Visible = true;
            }
        }
        private void GetFeatureClass()
        {
            IMap map = m_engineeditor.Map as IMap;
            IEngineEditLayers snapLayers = m_engineeditor as IEngineEditLayers;
            IFeatureLayer     featLayer  = snapLayers.TargetLayer as IFeatureLayer;

            //Search the editable layers and set the snap feature class to the point layer.
            for (int CountLayers = 0; CountLayers < map.LayerCount; CountLayers++)
            {
                if (featLayer == null)
                {
                    return;
                }

                if (featLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint)
                {
                    return;
                }
                else
                {
                    m_featureClass = featLayer.FeatureClass;
                }
            }
        }
Esempio n. 30
0
        /// <summary>
        /// Occurs when this tool is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add ToolSplitLine.OnClick implementation
            //Find the Modify Feature task and set it as the current task
            IEngineEditTask editTask = m_engineEditor.GetTaskByUniqueName("ControlToolsEditing_ModifyFeatureTask");

            m_engineEditor.CurrentTask = editTask;

            IEngineEditLayers editLayers = m_editLayer;

            snapEnvironment = m_engineEditor as IEngineSnapEnvironment;
            pt = new PointClass();
            //Check the user is editing; otherwise, there will be no snap agent loaded.
            if (editLayers.TargetLayer == null)
            {
                System.Windows.Forms.MessageBox.Show("Please start an edit session");
                return;
            }

            ////Create a feature snap agent.
            IEngineFeatureSnapAgent featureSnapAgent  = new EngineFeatureSnap();
            IFeatureClass           layerFeatureClass = editLayers.TargetLayer.FeatureClass;

            featureSnapAgent.FeatureClass = layerFeatureClass;
            featureSnapAgent.HitType      = esriGeometryHitPartType.esriGeometryPartBoundary;

            //Activate only the snap agent for the target layer.
            snapEnvironment.AddSnapAgent(featureSnapAgent);
            pMPfeedback         = new MovePointFeedbackClass();
            pMPfeedback.Display = m_hookHelper.ActiveView.ScreenDisplay;
            pMPfeedback.Start(pt, pt);

            IToolbarBuddy toolbarbuddy = (IToolbarBuddy)((IToolbarControl)m_hookHelper.Hook).Buddy;

            oldtool = toolbarbuddy.CurrentTool;
        }
    public void Deactivate()
    {
      //Stop listening for editor events.
      ((IEngineEditEvents_Event)m_engineEditor).OnTargetLayerChanged -= OnTargetLayerChanged;
      ((IEngineEditEvents_Event)m_engineEditor).OnCurrentTaskChanged -= OnCurrentTaskChanged;

      //Release object references.
      m_engineEditor = null;
      m_editSketch = null;
      m_editLayer = null;
    }
Esempio n. 32
0
        public void Deactivate()
        {
            pEditSketch.RefreshSketch();

            //Stop listening to engine editor events.
            ((IEngineEditEvents_Event)pEditSketch).OnTargetLayerChanged -= OnTargetLayerChanged;

            ((IEngineEditEvents_Event)pEditSketch).OnCurrentTaskChanged -= OnCurrentTaskChanged;

            //Release object references.
            pEngineEditor = null;
            pEditSketch = null;
            pEditLayer = null;
        }
    public void Activate(ESRI.ArcGIS.Controls.IEngineEditor editor, ESRI.ArcGIS.Controls.IEngineEditTask oldTask)
    {      
        if (editor == null)
          return;

        //Initialize class member variables.
        m_engineEditor = editor;
        m_editSketch = editor as IEngineEditSketch;
        m_editSketch.GeometryType = esriGeometryType.esriGeometryPolyline;
        m_editLayer = m_editSketch as IEngineEditLayers;

        //Wire editor events.        
        ((IEngineEditEvents_Event)m_editSketch).OnTargetLayerChanged += new IEngineEditEvents_OnTargetLayerChangedEventHandler(OnTargetLayerChanged);
        ((IEngineEditEvents_Event)m_editSketch).OnCurrentTaskChanged += new IEngineEditEvents_OnCurrentTaskChangedEventHandler(OnCurrentTaskChanged);
    }
        private void barButtonItem8_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            pEngineEditor = new EngineEditorClass();
            MapManagement.EngineEditor = pEngineEditor;
            pEngineEditTask            = pEngineEditor as IEngineEditTask;
            pEngineEditLayers          = pEngineEditor as IEngineEditLayers;

            pMap        = Variable.pMapFrm.mainMapControl.Map;
            pActiveView = pMap as IActiveView;
            pLayerlist  = MapManagement.GetMapLayers(pMap);
            try
            {
                if (pLayerlist == null || pLayerlist.Count == 0)
                {
                    MessageBox.Show("请在主视图中加载编辑图层!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                for (int i = 0; i < pLayerlist.Count; i++)
                {
                    ((DevExpress.XtraEditors.Repository.RepositoryItemComboBox) this.barEditItem1.Edit).Items.Add(pLayerlist[i].Name);
                }
                this.barEditItem1.EditValue = ((DevExpress.XtraEditors.Repository.RepositoryItemComboBox) this.barEditItem1.Edit).Items[0];

                pMap.ClearSelection();
                pActiveView.Refresh();
                //设置数据管理中要素管理未开始编辑状态,图层选择、添加要素、选择编辑要素、要素属性编辑、结束编辑等功能变成正常状态,使得可以操作。
                barEditItem1.Enabled    = true;
                barButtonItem12.Enabled = true;
                barButtonItem14.Enabled = true;
                barButtonItem13.Enabled = true;
                barButtonItem15.Enabled = true;
                barButtonItem4.Enabled  = true;
                barButtonItem20.Enabled = true;
                barButtonItem22.Enabled = true;
                barButtonItem21.Enabled = true;
                barButtonItem23.Enabled = true;
                if (pEngineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
                {
                    return;
                }
                if (pCurrentLayer == null)
                {
                    return;
                }

                IDataset   pDataSet   = pCurrentLayer.FeatureClass as IDataset;
                IWorkspace pWorkspace = pDataSet.Workspace;
                if (pWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                {
                    pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned;
                }
                else
                {
                    pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned;
                }
                pEngineEditTask           = pEngineEditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask");
                pEngineEditor.CurrentTask = pEngineEditTask;
                pEngineEditor.EnableUndoRedo(true);
                pEngineEditor.StartEditing(pWorkspace, pMap);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n" + ex.ToString(), "异常");
            }
        }
 /// <summary>
 /// Occurs when this tool is created
 /// </summary>
 /// <param name="hook">Instance of the application</param>
 public override void OnCreate(object hook)
 {
     try
     {
         m_hookHelper = new HookHelperClass();
         m_hookHelper.Hook = hook;
         m_engineEditor = new EngineEditorClass(); //this class is a singleton
         m_editLayer = m_engineEditor as IEngineEditLayers;
     }
     catch
     {
         m_hookHelper = null;
     }
 }
Esempio n. 36
0
        public static void InitEditEnvironment()
        {
            g_operationStack = new ControlsOperationStackClass();
            g_tbCtlEdit.OperationStack = g_operationStack;
            g_engineEditor = new EngineEditorClass();
            g_engineEditLayers = (IEngineEditLayers)g_engineEditor;

            System.Object tbr = g_tbCtlEdit.Object;
            IExtension engineEditorExt = (IExtension)g_engineEditor;
            engineEditorExt.Startup(tbr);
            g_EngineEditEvents = (IEngineEditEvents_Event)g_engineEditor;
        }
Esempio n. 37
0
        /// <summary>
        /// 开始编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Star_Edit_Click(object sender, EventArgs e)
        {
            if (flaglayer == null)
            {
                MessageBox.Show("请选取图层");
                return;
            }
            else
            {

                istoolenable(true);
                //for (int i = 0; i < axMapControl1.LayerCount;i++)
                //mlayer = axMapControl1.Map.get_Layer(0);
                m_map = axMapControl1.Map;
                //mlayer = getLayerByName(m_map, comboBox1.SelectedText);
                mfeaturelayer = flaglayer as IFeatureLayer;
                mlayer = flaglayer;

                mfeatureclass = mfeaturelayer.FeatureClass;
                dataset = mfeatureclass as IDataset;
                mworkspace = dataset.Workspace;
                CurWorkspaceEdit = mworkspace as IWorkspaceEdit;

                //CurWorkspaceEdit.StartEditing(true);
                //CurWorkspaceEdit.StartEditOperation();

                mEngineEditor.StartEditing(mworkspace, m_map);
                mEngineEditLayer = mEngineEditor as IEngineEditLayers;
                mEngineEditLayer.SetTargetLayer(mfeaturelayer, 0);
                //((IEngineEditLayers)mEngineEditor).SetTargetLayer(mfeaturelayer, 0);

            }
        }
Esempio n. 38
0
        private void InitialGridTable()
        {
            superGridCtl.PrimaryGrid.ClearAll();

            IEngineEditor     pEngineEdit  = new EngineEditorClass();
            IEngineEditLayers pEEditLayers = pEngineEdit as IEngineEditLayers;
            IFeatureLayer     targetLayer  = pEEditLayers.TargetLayer;

            IFeatureSelection featureSelection = targetLayer as IFeatureSelection;
            ISelectionSet     selectionSet     = featureSelection.SelectionSet;

            if (selectionSet.Count > 0)
            {
                IFields fields = targetLayer.FeatureClass.Fields;
                IField  field  = null;
                //填充表格开头
                for (int i = 0; i < fields.FieldCount; i++)
                {
                    field = fields.get_Field(i);
                    GridColumn col = new GridColumn(field.Name);
                    col.Width = 100;
                    superGridCtl.PrimaryGrid.Columns.Add(col);

                    //记录OID字段索引
                    if (field.Type == esriFieldType.esriFieldTypeOID)
                    {
                        m_nIDFieldIndex = i;
                    }
                }
                //读取要素属性
                ICursor cursor;
                selectionSet.Search(null, true, out cursor);
                IFeatureCursor featureCursor = cursor as IFeatureCursor;
                IFeature       feature       = null;
                while ((feature = featureCursor.NextFeature()) != null)
                {
                    object[] obj = new object[fields.FieldCount];
                    for (int i = 0; i < fields.FieldCount; i++)
                    {
                        field = fields.get_Field(i);
                        if (field.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            obj[i] = field.Type.ToString();
                        }
                        else
                        {
                            obj[i] = feature.get_Value(i);
                        }
                    }
                    GridRow row = new GridRow(obj);
                    superGridCtl.PrimaryGrid.Rows.Add(row);
                }

                //if (superGridCtl.PrimaryGrid.Rows.Count >0)
                //{
                //    GridRow row = (GridRow)superGridCtl.PrimaryGrid.GetRowFromIndex(0);
                //    superGridCtl.PrimaryGrid.SetSelected(row, true);
                //    superGridCtl.Refresh();
                //}
            }
        }