ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data.NetworkDiagrams Namespace / NetworkDiagram Class
Members Example

In This Topic
    NetworkDiagram Class
    In This Topic
    Represents a network diagram.
    Object Model
    NetworkDiagram ClassDiagramManager ClassDiagramTemplate ClassNetworkDiagramInfo ClassDiagramElementsAttributes ClassDiagramElementQueryResult Class
    Syntax
    Public NotInheritable Class NetworkDiagram 
       Inherits ArcGIS.Core.CoreObjectsBase
       Implements System.IDisposable 
    public sealed class NetworkDiagram : ArcGIS.Core.CoreObjectsBase, System.IDisposable  
    Remarks
    New network diagrams can be created using the DiagramManager.CreateNetworkDiagram factory method. Existing network diagrams can be retrieved from the DiagramManager or DiagramTemplate classes.
    Example
    Get Network Diagrams
    {
      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);
        }
      }
    }
    Get a list of Network Diagrams with inconsistent ConsistencyState
    {
      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;
        }
      }
    }
    Open a diagram pane from a Network Diagram
    {
      // 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 Diagram from DiagramLayer
    {
      // 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
    {
      // 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);
        }
      }
    }
    Get Network Diagram Information as JSON string
    {
      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
    {
      // 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);
        }
      }
    }
    Inheritance Hierarchy

    System.Object
       ArcGIS.Core.CoreObjectsBase
          ArcGIS.Core.Data.NetworkDiagrams.NetworkDiagram

    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also