public static GetTheEngineNetworkAnalystEnvironment ( ) : IEngineNetworkAnalystEnvironment | ||
return | IEngineNetworkAnalystEnvironment |
public override void OnClick() { if (m_mapControl == null) { MessageBox.Show("Error: Map control is null for this command"); return; } // Get the NALayer and corresponding NAContext of the layer that // was right-clicked on in the table of contents // m_MapControl.CustomProperty was set in frmMain.axTOCControl1_OnMouseDown INALayer naLayer = m_mapControl.CustomProperty as INALayer; if (naLayer == null) { MessageBox.Show("Error: NALayer was not set as the CustomProperty of the map control"); return; } var naEnv = CommonFunctions.GetTheEngineNetworkAnalystEnvironment(); if (naEnv == null || naEnv.NAWindow == null) { MessageBox.Show("Error: EngineNetworkAnalystEnvironment is not properly configured"); return; } // Set the active Analysis layer IEngineNAWindow naWindow = naEnv.NAWindow; if (naWindow.ActiveAnalysis != naLayer) { naWindow.ActiveAnalysis = naLayer; } // Remember what the current category is IEngineNAWindowCategory originalCategory = naWindow.ActiveCategory; // Loop through deleting all the items from all the categories INamedSet naClasses = naLayer.Context.NAClasses; var naHelper = naEnv as IEngineNetworkAnalystHelper; for (int i = 0; i < naClasses.Count; i++) { IEngineNAWindowCategory category = naWindow.get_CategoryByNAClassName(naClasses.get_Name(i)); naWindow.ActiveCategory = category; naHelper.DeleteAllNetworkLocations(); } //Reset to the original category naWindow.ActiveCategory = originalCategory; // Redraw the map m_mapControl.Refresh(esriViewDrawPhase.esriViewGeography, naLayer, m_mapControl.Extent); }
public void ShowModal() { m_okClicked = false; var naEnv = CommonFunctions.GetTheEngineNetworkAnalystEnvironment(); if (naEnv == null) { System.Windows.Forms.MessageBox.Show("Error: EngineNetworkAnalystEnvironment is not properly configured"); return; } // Zoom to result after solve or not chkZoomToResultAfterSolve.Checked = naEnv.ZoomToResultAfterSolve; // Set the radio button based on the value in ShowAnalysisMessagesAfterSolve. // This is a bit property where multiple values are possible. // Simplify it for the user so assume message types build on each other. // For example, if you want info, you probably want warnings and errors too // No Messages = 0 // Errors = esriEngineNAMessageTypeError // Errors and warnings = esriEngineNAMessageTypeError & esriEngineNAMessageTypeWarning // All = esriEngineNAMessageTypeError & esriEngineNAMessageTypeWarning & esriEngineNAMessageTypeInformative if ((esriEngineNAMessageType)(naEnv.ShowAnalysisMessagesAfterSolve & (int)esriEngineNAMessageType.esriEngineNAMessageTypeInformative) == esriEngineNAMessageType.esriEngineNAMessageTypeInformative) { rdoAllMessages.Checked = true; } else if ((esriEngineNAMessageType)(naEnv.ShowAnalysisMessagesAfterSolve & (int)esriEngineNAMessageType.esriEngineNAMessageTypeWarning) == esriEngineNAMessageType.esriEngineNAMessageTypeWarning) { rdoErrorsAndWarnings.Checked = true; } else if ((esriEngineNAMessageType)(naEnv.ShowAnalysisMessagesAfterSolve & (int)esriEngineNAMessageType.esriEngineNAMessageTypeError) == esriEngineNAMessageType.esriEngineNAMessageTypeError) { rdoErrors.Checked = true; } else { rdoNoMessages.Checked = true; } this.ShowDialog(); if (m_okClicked) { // Set ZoomToResultAfterSolve naEnv.ZoomToResultAfterSolve = chkZoomToResultAfterSolve.Checked; // Set ShowAnalysisMessagesAfterSolve // Use simplified version so higher severity errors also show lower severity "info" and "warnings" if (rdoAllMessages.Checked) { naEnv.ShowAnalysisMessagesAfterSolve = (int)esriEngineNAMessageType.esriEngineNAMessageTypeInformative + (int)esriEngineNAMessageType.esriEngineNAMessageTypeWarning + (int)esriEngineNAMessageType.esriEngineNAMessageTypeError; } else if (rdoErrorsAndWarnings.Checked) { naEnv.ShowAnalysisMessagesAfterSolve = (int)esriEngineNAMessageType.esriEngineNAMessageTypeWarning + (int)esriEngineNAMessageType.esriEngineNAMessageTypeError; } else if (rdoErrors.Checked) { naEnv.ShowAnalysisMessagesAfterSolve = (int)esriEngineNAMessageType.esriEngineNAMessageTypeError; } else { naEnv.ShowAnalysisMessagesAfterSolve = 0; } } }
public override void OnClick() { if (m_mapControl == null) { MessageBox.Show("Error: Map control is null for this command"); return; } // Get the NALayer and corresponding NAContext of the layer that // was right-clicked on in the table of contents // m_MapControl.CustomProperty was set in frmMain.axTOCControl1_OnMouseDown var naLayer = m_mapControl.CustomProperty as INALayer; if (naLayer == null) { MessageBox.Show("Error: NALayer was not set as the CustomProperty of the map control"); return; } var naEnv = CommonFunctions.GetTheEngineNetworkAnalystEnvironment(); if (naEnv == null || naEnv.NAWindow == null) { MessageBox.Show("Error: EngineNetworkAnalystEnvironment is not properly configured"); return; } ESRI.ArcGIS.Controls.IEngineNAWindowCategory naWindowCategory = naEnv.NAWindow.ActiveCategory; if (naWindowCategory == null) { MessageBox.Show("Error: There is no active category for the NAWindow"); return; } INAClass naClass = naWindowCategory.NAClass; if (naClass == null) { MessageBox.Show("Error: There is no NAClass for the active category"); return; } INAClassDefinition naClassDefinition = naClass.ClassDefinition; if (naClassDefinition == null) { MessageBox.Show("Error: NAClassDefinition is null for the active NAClass"); return; } if (!naClassDefinition.IsInput) { MessageBox.Show("Error: Locations can only be loaded into an input NAClass"); return; } // Set the Active Analysis layer to be the layer right-clicked on naEnv.NAWindow.ActiveAnalysis = naLayer; // Show the Property Page form for ArcGIS Network Analyst extension var loadLocations = new frmLoadLocations(); if (loadLocations.ShowModal(m_mapControl, naEnv)) { // Notify that the context has changed, because we have added locations to a NAClass within it var contextEdit = naEnv.NAWindow.ActiveAnalysis.Context as INAContextEdit; contextEdit.ContextChanged(); // Refresh the NAWindow and the map m_mapControl.Refresh(esriViewDrawPhase.esriViewGeography, naLayer, m_mapControl.Extent); naEnv.NAWindow.UpdateContent(naEnv.NAWindow.ActiveCategory); } }
private void frmMain_Load(object sender, System.EventArgs e) { // Add commands to the NALayer context menu m_menuLayer = new ToolbarMenuClass(); int nItem = -1; m_menuLayer.AddItem(new cmdLoadLocations(), -1, ++nItem, false, esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.AddItem(new cmdRemoveLayer(), -1, ++nItem, false, esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.AddItem(new cmdClearAnalysisLayer(), -1, ++nItem, true, esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.AddItem(new cmdNALayerProperties(), -1, ++nItem, true, esriCommandStyles.esriCommandStyleTextOnly); // Since this ToolbarMenu is a standalone popup menu use the SetHook method to // specify the object that will be sent as a "hook" to the menu commands in their OnCreate methods. m_menuLayer.SetHook(axMapControl1); // Add command for ArcGIS Network Analyst extension env properties to end of "Network Analyst" dropdown menu nItem = -1; for (int i = 0; i < axToolbarControl1.Count; ++i) { IToolbarItem item = axToolbarControl1.GetItem(i); IToolbarMenu mnu = item.Menu; if (mnu == null) { continue; } IMenuDef mnudef = mnu.GetMenuDef(); string name = mnudef.Name; // Find the ArcGIS Network Analyst extension solver menu drop down and note the index if (name == "ControlToolsNetworkAnalyst_SolverMenu") { nItem = i; //break; } } if (nItem >= 0) { // Using the index found above, get the solver menu drop down and add the Properties command to the end of it. IToolbarItem item = axToolbarControl1.GetItem(nItem); IToolbarMenu mnu = item.Menu; if (mnu != null) { mnu.AddItem(new cmdNAProperties(), -1, mnu.Count, true, esriCommandStyles.esriCommandStyleTextOnly); } // Since this ToolbarMenu is an item on the ToolbarControl the Hook is shared and initialized by the ToolbarControl. // Therefore, SetHook is not called here, like it is for the menu above. } // Initialize naEnv variables m_naEnv = CommonFunctions.GetTheEngineNetworkAnalystEnvironment(); if (m_naEnv == null) { MessageBox.Show("Error: EngineNetworkAnalystEnvironment is not properly configured"); return; } m_naEnv.ZoomToResultAfterSolve = false; m_naEnv.ShowAnalysisMessagesAfterSolve = (int)(esriEngineNAMessageType.esriEngineNAMessageTypeInformative | esriEngineNAMessageType.esriEngineNAMessageTypeWarning); // Set up the buddy control and initialize the NA extension, so we can get to NAWindow to listen to window events. // This is necessary, as the various controls are not yet set up. They need to be in order to get the NAWindow's events. axToolbarControl1.SetBuddyControl(axMapControl1); IExtension ext = m_naEnv as IExtension; object obj = axToolbarControl1.Object; ext.Startup(ref obj); // m_naWindow is set after Startup of the Network Analyst extension m_naWindow = m_naEnv.NAWindow; if (m_naWindow == null) { MessageBox.Show("Error: Unexpected null NAWindow"); return; } m_onContextMenu = new IEngineNAWindowEventsEx_OnContextMenuEventHandler(OnContextMenu); ((IEngineNAWindowEventsEx_Event)m_naWindow).OnContextMenu += m_onContextMenu; m_OnNetworkLayersChanged = new IEngineNetworkAnalystEnvironmentEvents_OnNetworkLayersChangedEventHandler(OnNetworkLayersChanged); ((IEngineNetworkAnalystEnvironmentEvents_Event)m_naEnv).OnNetworkLayersChanged += m_OnNetworkLayersChanged; m_OnCurrentNetworkLayerChanged = new IEngineNetworkAnalystEnvironmentEvents_OnCurrentNetworkLayerChangedEventHandler(OnCurrentNetworkLayerChanged); ((IEngineNetworkAnalystEnvironmentEvents_Event)m_naEnv).OnCurrentNetworkLayerChanged += m_OnCurrentNetworkLayerChanged; }