

Public NotInheritable Class NetworkDiagram Inherits ArcGIS.Core.CoreObjectsBase Implements System.IDisposable
public sealed class NetworkDiagram : ArcGIS.Core.CoreObjectsBase, System.IDisposable
{
static void GetDiagram(UtilityNetwork utilityNetwork, IEnumerable<Guid> globalIDs)
{
Envelope extentOfInterest = MapView.Active.Map.GetDefaultExtent();
using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
{
// Get all the diagrams
IReadOnlyList<NetworkDiagram> diagrams = diagramManager.GetNetworkDiagrams();
// Get a diagram by name
NetworkDiagram diagram = diagramManager.GetNetworkDiagram(_diagramName);
// Get diagrams by extent
diagrams = diagramManager.GetNetworkDiagrams(extentOfInterest);
// Get diagrams from a set of utility network feature GlobalIDs
diagrams = diagramManager.GetNetworkDiagrams(globalIDs);
// Get diagrams from a set of utility network feature GlobalIDs within an extent
diagrams = diagramManager.GetNetworkDiagrams(extentOfInterest, globalIDs);
}
}
}
{
static List<NetworkDiagram> GetInconsistentDiagrams(UtilityNetwork utilityNetwork)
{
// Get the DiagramManager from the utility network
using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
{
List<NetworkDiagram> networkDiagrams = new List<NetworkDiagram>();
// Loop through the network diagrams in the diagram manager
foreach (NetworkDiagram diagram in diagramManager.GetNetworkDiagrams())
{
NetworkDiagramInfo diagramInfo = diagram.GetDiagramInfo();
// If the diagram is not a system diagram and is in an inconsistent state, add it to our list
if (!diagramInfo.IsSystem &&
diagram.GetConsistencyState() != NetworkDiagramConsistencyState.DiagramIsConsistent)
{
networkDiagrams.Add(diagram);
}
else
{
diagram.Dispose(); // If we are not returning it we need to Dispose it
}
}
return networkDiagrams;
}
}
}
{
// Create a diagram layer from a NetworkDiagram
static void CreateDiagramLayerFromNetworkDiagram(NetworkDiagram networkDiagram)
{
// Create the diagram map
Map newMap = MapFactory.Instance.CreateMap(networkDiagram.Name, MapType.NetworkDiagram, MapViewingMode.Map);
// Open the diagram map
Task<IMapPane> mapPane = ProApp.Panes.CreateMapPaneAsync(newMap, MapViewingMode.Map);
//Add the diagram to the map
DiagramLayer diagramLayer = newMap.AddDiagramLayer(networkDiagram);
}
}
{
// Get the NetworkDiagram from a DiagramLayer and check its ConsistencyState
static void GetDiagram(DiagramLayer diagramLayer)
{
NetworkDiagram diagram = diagramLayer.GetNetworkDiagram();
// Get the consistency state from the layer
DiagramLayerConsistencyState diagramLayerConsistencyState = diagramLayer.ConsistencyState;
// Or from the diagram
NetworkDiagramConsistencyState diagramConsistencyState = diagram.GetConsistencyState();
}
}
{
// Create a network diagram from a template and a set of utility network feature GlobalIDs
static void CreateNetworkDiagram(UtilityNetwork utilityNetwork, IEnumerable<Guid> globalIDs)
{
using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
{
// Get the template
DiagramTemplate template = diagramManager.GetDiagramTemplate(TemplateName);
// Create the diagram
NetworkDiagram diagram = diagramManager.CreateNetworkDiagram(template, globalIDs);
}
}
}
{
static void GetDiagramContent(UtilityNetwork utilityNetwork)
{
using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
{
// Get a diagram by name
NetworkDiagram diagram = diagramManager.GetNetworkDiagram(TemplateName);
string jsonContent = diagram.GetContent(true, true, true, true);
}
}
}
{
// Change the layout of a network diagram by querying for all the diagram elements, editing their shapes,
static void ChangeDiagramLayout(DiagramManager diagramManager, string diagramName)
{
// Retrieve a diagram
using (NetworkDiagram diagramTest = diagramManager.GetNetworkDiagram(diagramName))
{
// Create a DiagramElementQueryByElementTypes query object to get the diagram elements we want to work with
DiagramElementQueryByElementTypes query = new DiagramElementQueryByElementTypes();
query.QueryDiagramJunctionElement = true;
query.QueryDiagramEdgeElement = true;
query.QueryDiagramContainerElement = true;
// Retrieve those diagram elements
DiagramElementQueryResult elements = diagramTest.QueryDiagramElements(query);
// Create a NetworkDiagramSubset object to edit this set of diagram elements
NetworkDiagramSubset subset = new NetworkDiagramSubset();
subset.DiagramJunctionElements = elements.DiagramJunctionElements;
subset.DiagramEdgeElements = elements.DiagramEdgeElements;
subset.DiagramContainerElements = elements.DiagramContainerElements;
// Save the new layout of the diagram elements
diagramTest.SaveLayout(subset, true);
}
}
}
System.Object
ArcGIS.Core.CoreObjectsBase
ArcGIS.Core.Data.NetworkDiagrams.NetworkDiagram
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)