private void reverseAgentsPriority_Click(object sender, EventArgs e) { //get all the snap agents in reverse order and then deactivate them ArrayList snapAgentList = new ArrayList(); for (int i = snapEnvironment.SnapAgentCount - 1; i >= 0; i--) { IEngineSnapAgent tmpAgent = snapEnvironment.get_SnapAgent(i); snapAgentList.Add(tmpAgent); snapEnvironment.RemoveSnapAgent(i); } //add the agents back to the environment foreach (IEngineSnapAgent agent in snapAgentList) { snapEnvironment.AddSnapAgent(agent); } //refresh this window RefreshDisplay(); }
public void RefreshSnapAgent(List <SnapAgent> pSnapAgents, bool pSnapTip) { IEngineSnapEnvironment environment = this._editor as IEngineSnapEnvironment; environment.ClearSnapAgents(); this._snapLayers.Clear(); foreach (SnapAgent agent in pSnapAgents) { try { esriGeometryHitPartType esriGeometryPartNone = esriGeometryHitPartType.esriGeometryPartNone; if (agent.Vertex) { esriGeometryPartNone ^= esriGeometryHitPartType.esriGeometryPartVertex; } if (agent.Edge) { esriGeometryPartNone ^= esriGeometryHitPartType.esriGeometryPartBoundary; } if (agent.EndPoint) { esriGeometryPartNone ^= esriGeometryHitPartType.esriGeometryPartEndpoint; } if (esriGeometryPartNone != esriGeometryHitPartType.esriGeometryPartNone) { IEngineFeatureSnapAgent snapAgent = new EngineFeatureSnapClass { FeatureClass = agent.FeatureLayer.FeatureClass, HitType = esriGeometryPartNone }; environment.AddSnapAgent(snapAgent); this._snapLayers.Add(agent.FeatureLayer); } } catch { } } ((IEngineEditProperties2)this._editor).SnapTips = pSnapTip; }
/// <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; }