![](dotnetdiagramimages/image897.png)
public sealed class ReadOnlySegmentCollection : System.Collections.Generic.IEnumerable<Segment>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<Segment>, System.Collections.IEnumerable
Public NotInheritable Class ReadOnlySegmentCollection Implements System.Collections.Generic.IEnumerable(Of Segment), System.Collections.Generic.IEnumerable(Of T), System.Collections.Generic.IReadOnlyCollection(Of Segment), System.Collections.IEnumerable
ReadOnlyPartCollection polylineParts = polyline.Parts; // enumerate the segments to get the length double len = 0; IEnumerator<ReadOnlySegmentCollection> segments = polylineParts.GetEnumerator(); while (segments.MoveNext()) { ReadOnlySegmentCollection seg = segments.Current; foreach (Segment s in seg) { len += s.Length; // perhaps do something specific per segment type switch (s.SegmentType) { case SegmentType.Line: break; case SegmentType.Bezier: break; case SegmentType.EllipticArc: break; } } } // or use foreach pattern foreach (var part in polyline.Parts) { foreach (var segment in part) { len += segment.Length; // perhaps do something specific per segment type switch (segment.SegmentType) { case SegmentType.Line: break; case SegmentType.Bezier: break; case SegmentType.EllipticArc: break; } } }
// Method 1: Get the start point of the polyline by converting the polyline // into a collection of points and getting the first point // sketchGeometry is a Polyline // get the sketch as a point collection var pointCol = ((Multipart)sketchGeometry).Points; // Get the start point of the line var firstPoint = pointCol[0]; // Method 2: Convert polyline into a collection of line segments // and get the "StartPoint" of the first line segment. var polylineGeom = sketchGeometry as ArcGIS.Core.Geometry.Polyline; var polyLineParts = polylineGeom.Parts; ReadOnlySegmentCollection polylineSegments = polyLineParts.First(); //get the first segment as a LineSegment var firsLineSegment = polylineSegments.First() as LineSegment; //Now get the start Point var startPoint = firsLineSegment.StartPoint;
int numSegments = 0; IEnumerator<ReadOnlySegmentCollection> segments = polygon.Parts.GetEnumerator(); while (segments.MoveNext()) { ReadOnlySegmentCollection seg = segments.Current; numSegments += seg.Count; foreach (Segment s in seg) { // do something with the segment } }
System.Object
ArcGIS.Core.Geometry.ReadOnlySegmentCollection
Target Platforms: Windows 11, Windows 10, Windows 8.1