Esempio n. 1
0
        private void SelectFeatures(IMMTracedElements pEdges, IMMTracedElements pJunctions, INetwork pNetwork, bool overrideSelectSetting)
        {
            IApplication pApp;
            IEnumNetEID junctionList;
            IEnumNetEID edgeList;

            try
            {
                Type t = Type.GetTypeFromProgID("esriFramework.AppRef");
                System.Object obj = Activator.CreateInstance(t);
                pApp = obj as IApplication;

                //Type type = Type.GetTypeFromProgID("esriSystem.ExtensionManager");
                //IExtensionManager extMgr = Activator.CreateInstance(type) as IExtensionManager;
                //if (extMgr != null)
                //{
                    UID uid = new UIDClass();
                    uid.Value = "esriNetworkAnalystUI.NetworkAnalystExtension"; //ESRI Network Analyst extension
                    //IExtension ext = extMgr.FindExtension(uid);
                    IExtension ext = pApp.FindExtensionByCLSID(uid);
                    if (ext != null)
                    {
                        IUtilityNetworkAnalysisExt utilityNetworkAnalystExt = ext as IUtilityNetworkAnalysisExt;
                        if (utilityNetworkAnalystExt != null)
                        {
                            INetworkAnalysisExtResults networkAnalysisResults = (INetworkAnalysisExtResults) utilityNetworkAnalystExt;
                            if (networkAnalysisResults != null)
                            {
                                networkAnalysisResults.ClearResults();
                                junctionList = ConvertTracedElementsCollectionToEnumNetEid(pJunctions, pNetwork);
                                edgeList = ConvertTracedElementsCollectionToEnumNetEid(pEdges, pNetwork);
                                networkAnalysisResults.SetResults(junctionList, edgeList);
                                //determine if results should be drawn
                                if (networkAnalysisResults.ResultsAsSelection)
                                {
                                    networkAnalysisResults.CreateSelection(junctionList, edgeList);
                                }
                                else if (overrideSelectSetting)
                                {
                                    // temporarily toggle the user's setting
                                    networkAnalysisResults.ResultsAsSelection = true;
                                    networkAnalysisResults.CreateSelection(junctionList, edgeList);
                                    networkAnalysisResults.ResultsAsSelection = false;
                                }
                            }
                            else
                            {
                                this.Logger.WriteLine("NetworkAnalysisResults Null");
                            }
                        }
                        else
                        {
                            this.Logger.WriteLine("UtilityNetworkAnalysisExt Null");
                        }
                    }
                    else
                    {
                        this.Logger.WriteLine("Network Extension Null");
                    }
                //}
                //else
                //{
                //    this.Logger.WriteLine("Extension Manager Null");
                //}
            }
            catch (Exception EX)
            {
                this.Logger.WriteLine("Error in SelectFeatures:" + EX.Message + " " + EX.StackTrace);
            }
        }
Esempio n. 2
0
        public IEnumNetEID ConvertTracedElementsCollectionToEnumNetEid(IMMTracedElements tracedElements, INetwork network)
        {
            IEnumNetEID resultEnum = null;

            try
            {
                // we have a feedpath, now we want to extract all the elements of one type and
                // put them in an esri enumneteid so we can display it on the map or other fun stuff

                IEnumNetEIDBuilder enumNetEIDBuilder = new EnumNetEIDArrayClass();
                enumNetEIDBuilder.Network = network;
                enumNetEIDBuilder.ElementType = (esriElementType)tracedElements.ElementType;

                INetElements netElements = network as INetElements;

                if ((netElements != null) && (esriElementType.esriETEdge == (esriElementType)tracedElements.ElementType))
                {
                    tracedElements.Reset();
                    IMMTracedElement tracedElement = tracedElements.Next();
                    while (tracedElement != null)
                    {
                        IEnumNetEID tempEnumNetEID = netElements.GetEIDs(tracedElement.FCID, tracedElement.OID, esriElementType.esriETEdge);
                        tempEnumNetEID.Reset();
                        for (int eid = tempEnumNetEID.Next(); eid > 0; eid = tempEnumNetEID.Next())
                        {
                            enumNetEIDBuilder.Add(eid);
                        }
                        tracedElement = tracedElements.Next();
                    }
                }
                else
                {
                    tracedElements.Reset();
                    IMMTracedElement tracedElement = tracedElements.Next();
                    while (tracedElement != null)
                    {
                        enumNetEIDBuilder.Add(tracedElement.EID);
                        tracedElement = tracedElements.Next();
                    }
                }
                if (enumNetEIDBuilder == null)
                {
                    this.Logger.WriteLine("Builder is null");
                }
                resultEnum = enumNetEIDBuilder as IEnumNetEID;
            }
            catch (Exception EX)
            {
                this.Logger.WriteLine(" ConvertTracedElements:" + EX.Message + " " + EX.StackTrace);
            }
            return resultEnum;
        }