ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data.UtilityNetwork Namespace / SubnetworkManager Class / EnableController Method
The Tier to which the Subnetwork is created.
Corresponds to the feature to be enabled as a SubnetworkController. This Element must specify a terminal, and this terminal must be specified as a Controller Terminal in the terminal definition.
Name of the subnetwork.
Name of the subnetwork controller.
A description for the subnetwork controller.
Additional notes for the subnetwork controller.
Example Version

EnableController Method
Enables a feature corresponding to device to be a SubnetworkController and adds it to an existing Subnetwork corresponding to subnetworkName. If the specified subnetwork does not exist, a new one will be created. This method must be called on the MCT. Use QueuedTask.Run.
Syntax

Parameters

tier
The Tier to which the Subnetwork is created.
device
Corresponds to the feature to be enabled as a SubnetworkController. This Element must specify a terminal, and this terminal must be specified as a Controller Terminal in the terminal definition.
subnetworkName
Name of the subnetwork.
controllerName
Name of the subnetwork controller.
description
A description for the subnetwork controller.
notes
Additional notes for the subnetwork controller.

Return Value

The newly-created or modified subnetwork.
Exceptions
ExceptionDescription
If the Terminal in device is null and the associated TerminalConfiguration has multiple terminals.
A geodatabase-related exception has occurred.
This method or property must be called within the lambda passed to QueuedTask.Run
Remarks
  • This routine generates its own editing transaction and therefore cannot be wrapped inside a separate transaction.
  • When writing an ArcGIS Pro add-in, the extension method UtilityNetworkExtensions.EnableControllerInEditOperation should be used instead. This extension method will create an edit operation on the Pro undo/redo stack and redraw any affected layers.
  • The input element, device, must specify the terminal.
Example
Life cycle for a mesh subnetwork with multiple controllers
// Create a subnetwork named "Mesh1" from three controllers
// elementM1, elementM2, and elementM3 represent the devices that serve as subnetwork controllers (e.g., network protectors)
subnetworkManager.EnableController(lowVoltageMeshTier, elementM1, "Mesh1", "M1", "my description", "my notes");
subnetworkManager.EnableController(lowVoltageMeshTier, elementM2, "Mesh1", "M2", "my description", "my notes");
Subnetwork subnetworkMesh1 = subnetworkManager.EnableController(lowVoltageMeshTier, elementM3, "Mesh1", "M3", "my description", "my notes");
subnetworkMesh1.Update();
MapView.Active.Redraw(true);

// ...

// When deleting the subnetwork, each controller must be disabled before the subnetwork itself is deleted
subnetworkManager.DisableControllerInEditOperation(elementM1);
subnetworkManager.DisableControllerInEditOperation(elementM2);
subnetworkManager.DisableControllerInEditOperation(elementM3);

// After the subnetwork is deleted, all of the rows that have been labeled with the subnetwork ID need to be updated
subnetworkMesh1.Update();
MapView.Active.Redraw(true);

// The final step is to notify external systems (if any) by exporting the subnetwork
SubnetworkExportOptions subnetworkExportOptions = new SubnetworkExportOptions()
{
  SetAcknowledged = true,
  IncludeDomainDescriptions = true,
  IncludeGeometry = true,
  ServiceSynchronizationType = ServiceSynchronizationType.Asynchronous,

  SubnetworkExportResultTypes = new List<SubnetworkExportResultType>()
  {
    SubnetworkExportResultType.Features
  }
  
  // Set networks attributes and attribute fields to export
  //ResultNetworkAttributes = new List<NetworkAttribute>(networkAttributes),

  //ResultFieldsByNetworkSourceID = new Dictionary<int, List<string>>()
  //  { { electricDevice.ID, new List<string>() { "AssetID" } } }

};
subnetworkMesh1.Export(new Uri($"{Path.GetTempPath()}SubnetworkExportResult.json"), subnetworkExportOptions);
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also