GetTheEngineNetworkAnalystEnvironment() public static method

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);
        }
示例#2
0
        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);
            }
        }
示例#4
0
        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;
        }