

await QueuedTask.Run(() => { using (TraceManager traceManager = utilityNetwork.GetTraceManager()) using (CircuitManager circuitManager = utilityNetwork.GetCircuitManager(telecomDomainNetwork)) { Circuit circuitToTrace = circuitManager.GetCircuits(new CircuitFilter(circuitNames)).FirstOrDefault(); TraceConfiguration traceConfiguration = new TraceConfiguration() { MaxHops = 10, NumPaths = 5, DomainNetwork = telecomDomainNetwork, InferConnectivity = true }; TraceArgument traceArgument = new TraceArgument(circuitToTrace) { Configuration = traceConfiguration, ResultTypes = new List<ResultType> { ResultType.Circuit }, ResultOptions = new ResultOptions() { IncludeGeometry = true } }; CircuitTracer circuitTracer = traceManager.GetTracer<CircuitTracer>(); IReadOnlyList<Result> results = circuitTracer.Trace(traceArgument); // Iterate through the circuit trace results foreach (Result result in results) { if (result is CircuitResult circuitResult) { IReadOnlyList<CircuitPath> circuitPaths = circuitResult.CircuitPaths; foreach (CircuitPath circuitPath in circuitPaths) { Circuit circuit = circuitPath.Circuit; TracePath path = circuitPath.Path; IReadOnlyList<PathConnectivity> pathConnectivities = path.PathConnectivities; foreach (PathConnectivity pathConnectivity in pathConnectivities) { Console.WriteLine($"Edge: {pathConnectivity.Edge.GlobalID}, Junction: {pathConnectivity.Junction.GlobalID}"); } Geometry geometry = circuitPath.Geometry; IReadOnlyDictionary<int, TracePath> sectionPaths = circuitPath.SectionPaths; foreach (KeyValuePair<int, TracePath> sectionPath in sectionPaths) { int sectionID = sectionPath.Key; TracePath sectionGeometry = sectionPath.Value; Console.WriteLine($"Section ID: {sectionID}, Section Geometry: {sectionGeometry.Geometry.ToJson()}"); } } } else { Console.WriteLine("Unexpected result type."); } } } });
System.Object
ArcGIS.Core.Data.UtilityNetwork.Trace.Tracer
ArcGIS.Core.Data.UtilityNetwork.Trace.CircuitTracer
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)