ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data.UtilityNetwork Namespace / UtilityNetwork Class / GetDiagramManager Method
Example

In This Topic
    GetDiagramManager Method (UtilityNetwork)
    In This Topic
    Gets the associated/contained ArcGIS.Core.Data.NetworkDiagrams.DiagramManager of the network. This method must be called on the MCT. Use QueuedTask.Run
    Syntax
    public DiagramManager GetDiagramManager()
    Public Function GetDiagramManager() As DiagramManager
    Exceptions
    ExceptionDescription
    A geodatabase-related exception has occurred.
    This method or property must be called within the lambda passed to QueuedTask.Run
    Example
    Get the Diagram Manager
    using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
    {
      // Todo - do something
    }
    Get Network Diagrams
    using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
    {
      // get all the diagrams
      IReadOnlyList<NetworkDiagram> diagrams = diagramManager.GetNetworkDiagrams();
    
      // get a diagram by name
      NetworkDiagram diagram = diagramManager.GetNetworkDiagram(diagrameName);
    
      // 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
    public List<NetworkDiagram> GetInconsistentDiagrams(UtilityNetwork utilityNetwork)
    {
      // Get the DiagramManager from the utility network
    
      using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
      {
        List<NetworkDiagram> myList = 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)
          {
            myList.Add(diagram);
          }
          else
          {
            diagram.Dispose(); // If we are not returning it we need to Dispose it
          }
        }
    
        return myList;
      }
    }
    Get Diagram Templates
    public void RetrieveDiagramTemplates(UtilityNetwork utilityNetwork)
    {
      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
    public 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();
    
        // or get a network diagram by name
        NetworkDiagram diagram = template.GetNetworkDiagram(diagrameName);
      }
    }
    Create a Network Diagram
    public 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
    public void GetDiagramContent(UtilityNetwork utilityNetwork)
    {
      using (DiagramManager diagramManager = utilityNetwork.GetDiagramManager())
      {
        // get a diagram by name
        NetworkDiagram diagram = diagramManager.GetNetworkDiagram(templateName);
    
        string json_content = diagram.GetContent(true, true, true, true);
      }
    }
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also