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); }
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; }
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(""); } }
/// <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; }
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); } }
/// <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); } } } }
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; }
public static IFeatureLayer GetEditTargetLayer() { IEngineEditor pEngineEdit = new EngineEditorClass(); IEngineEditLayers pEEditLayers = pEngineEdit as IEngineEditLayers; IFeatureLayer targetLayer = pEEditLayers.TargetLayer; return(targetLayer); }
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) { } }
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; }
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; }
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 void TargetLayerChanged(TargetLayerChangedEvent ev) { if (_engineEditor == null) { return; } if (_engineEditor.EditState == esriEngineEditState.esriEngineStateEditing) { _currentLayer = ev.TargerLayer; IEngineEditLayers editorLayer = (IEngineEditLayers)_engineEditor; editorLayer.SetTargetLayer(_currentLayer, 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; } }
/// <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); }
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); }
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(); }
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); }
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) { } }
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(); }
/// <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; } } }
/// <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() { 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(), "异常"); } }
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; }
/// <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); } }
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(); //} } }