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

In This Topic
    DiagramManager Class
    In This Topic
    Represents a diagram manager object, the core class in the network diagram API.
    Object Model
    DiagramManager ClassNetworkDiagram ClassNetworkDiagram ClassNetworkDiagram ClassDiagramTemplate ClassNetworkDiagram Class
    Syntax
    Public NotInheritable Class DiagramManager 
       Inherits ArcGIS.Core.CoreObjectsBase
       Implements System.IDisposable 
    public sealed class DiagramManager : ArcGIS.Core.CoreObjectsBase, System.IDisposable  
    Remarks
    The DiagramManager object is obtained by calling ArcGIS.Core.Data.UtilityNetwork.UtilityNetwork.GetDiagramManager. Use the DiagramManager class to:
    • Create network diagrams
    • Retrieve diagram templates
    • Retrieve network diagrams
    Example
    Get the Diagram Manager
    {
      static void GetDiagramManager(UtilityNetwork utilityNetwork)
      {
        // Get the DiagramManager from the utility network
        using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
        {
          // Use the diagram manager...
        }
      }
    }
    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;
        }
      }
    }
    Get Diagram Templates
    {
      // Get all the diagram templates or a template by name
      static void RetrieveDiagramTemplates(UtilityNetwork utilityNetwork)
      {
        string templateName = "ElectricNetworkTemplate";
        using DiagramManager diagramManager = utilityNetwork.GetDiagramManager();
    
        // Get all templates
        IReadOnlyList<DiagramTemplate> templates = diagramManager.GetDiagramTemplates();
    
        // Get a template by name
        DiagramTemplate template = diagramManager.GetDiagramTemplate(templateName);
      }
    }
    Get Network Diagrams from a Diagram Template
    {
      // Get all the network diagrams from a template or a diagram by name
      static void GetNetworkDiagramFromDiagramTemplates(UtilityNetwork utilityNetwork)
      {
        using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
        {
          // Get the first templates
          DiagramTemplate template = diagramManager.GetDiagramTemplates().FirstOrDefault();
    
          // Get the network diagrams fromt he template
          IEnumerable<NetworkDiagram> diagrams = template.GetNetworkDiagrams();
    
          // Get a network diagram by name
          NetworkDiagram diagram = template.GetNetworkDiagram(_diagramName);
        }
      }
    }
    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);
        }
      }
    }
    Inheritance Hierarchy

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

    Requirements

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

    ArcGIS Pro version: 3.0 or higher.
    See Also