public Task <UtilityNetwork> GetUNByLayer(Layer layer) { return(QueuedTask.Run(() => { if (layer is FeatureLayer) { FeatureLayer featureLayer = layer as FeatureLayer; using (FeatureClass featureClass = featureLayer.GetFeatureClass()) { if (featureClass.IsControllerDatasetSupported()) { IReadOnlyList <Dataset> datasets = featureClass.GetControllerDatasets(); foreach (var dataset in datasets) { if (dataset is UtilityNetwork) { return dataset as UtilityNetwork; } else { dataset.Dispose(); } } } } } else if (layer is UtilityNetworkLayer) { UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer; return utilityNetworkLayer.GetUtilityNetwork(); } return null; })); }
/// <summary> /// GetUtilityNetworkFromFeatureClass - gets a utility network from a layer /// </summary> /// <param name="layer"></param> /// <returns>a UtilityNetwork object, or null if the layer does not reference a utility network</returns> public static UtilityNetwork GetUtilityNetworkFromLayer(Layer layer) { if (layer is UtilityNetworkLayer) { UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer; return(utilityNetworkLayer.GetUtilityNetwork()); } else if (layer is SubtypeGroupLayer) { CompositeLayer compositeLayer = layer as CompositeLayer; return(GetUtilityNetworkFromLayer(compositeLayer.Layers.First())); } else if (layer is FeatureLayer) { FeatureLayer featureLayer = layer as FeatureLayer; using (FeatureClass featureClass = featureLayer.GetFeatureClass()) { if (featureClass.IsControllerDatasetSupported()) { IReadOnlyList <Dataset> controllerDatasets = featureClass.GetControllerDatasets(); foreach (Dataset controllerDataset in controllerDatasets) { if (controllerDataset is UtilityNetwork) { return(controllerDataset as UtilityNetwork); } } } } } return(null); }
/// <summary> /// GetUtilityNetworkFromFeatureClass - gets a utility network from a layer /// </summary> /// <param name="layer"></param> /// <returns>a UtilityNetwork object, or null if the layer does not reference a utility network</returns> public static UtilityNetwork GetUtilityNetworkFromLayer(Layer layer) { UtilityNetwork utilityNetwork = null; if (layer is UtilityNetworkLayer) { UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer; utilityNetwork = utilityNetworkLayer.GetUtilityNetwork(); } else if (layer is SubtypeGroupLayer) { CompositeLayer compositeLayer = layer as CompositeLayer; utilityNetwork = GetUtilityNetworkFromLayer(compositeLayer.Layers.First()); } else if (layer is FeatureLayer) { FeatureLayer featureLayer = layer as FeatureLayer; using (FeatureClass featureClass = featureLayer.GetFeatureClass()) { if (featureClass.IsControllerDatasetSupported()) { IReadOnlyList <Dataset> controllerDatasets = new List <Dataset>(); controllerDatasets = featureClass.GetControllerDatasets(); foreach (Dataset controllerDataset in controllerDatasets) { if (controllerDataset is UtilityNetwork) { utilityNetwork = controllerDataset as UtilityNetwork; } else { controllerDataset.Dispose(); } } } } } else if (layer is GroupLayer) { CompositeLayer compositeLayer = layer as CompositeLayer; foreach (Layer childLayer in compositeLayer.Layers) { utilityNetwork = GetUtilityNetworkFromLayer(childLayer); // Break at the first layer inside a group layer that belongs to a utility network if (utilityNetwork != null) { break; } } } return(utilityNetwork); }
/// <summary> /// Get the UtilityNetwork from the layer /// </summary> /// <param name="layer">Layer</param> /// <returns>UtilityNetwork</returns> private static UtilityNetwork GetUtilityNetworkFromLayer(Layer layer) { if (layer == null) { return(null); } if (layer is UtilityNetworkLayer) { UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer; return(utilityNetworkLayer.GetUtilityNetwork()); } else if (layer is SubtypeGroupLayer) { CompositeLayer compositeLayer = layer as CompositeLayer; UtilityNetwork un; foreach (var v in compositeLayer.Layers) { un = GetUtilityNetworkFromLayer(v); if (un != null) { return(un); } } } else if (layer is FeatureLayer) { FeatureLayer featureLayer = layer as FeatureLayer; using FeatureClass featureClass = featureLayer.GetFeatureClass(); if (featureClass.IsControllerDatasetSupported()) { IReadOnlyList <Dataset> controllerDatasets = featureClass.GetControllerDatasets(); foreach (Dataset controllerDataset in controllerDatasets) { if (controllerDataset is UtilityNetwork) { return(controllerDataset as UtilityNetwork); } } } } else if (layer is DiagramLayer dl) { NetworkDiagram diagram = dl.GetNetworkDiagram(); DiagramManager diagramManager = diagram.DiagramManager; return(diagramManager.GetNetwork <UtilityNetwork>()); } return(null); }