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); } }
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; }