ArcGIS Pro 3.7 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 Function GetDiagramManager() As DiagramManager
    public DiagramManager GetDiagramManager()
    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
    {
      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);
        }
      }
    }
    Requirements

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

    ArcGIS Pro version: 3.0 or higher.
    See Also