/// <summary> /// Returns the points along the polyline using the first and last M values of the source. /// </summary> /// <param name="source">The source.</param> /// <param name="other">The other.</param> /// <returns> /// Returns a <see cref="IEnumerable{IPoint}" /> representing the points along the other polyline. /// </returns> public static IEnumerable <IPoint> GetPointsAtMs(this IPolyline source, IPolyline other) { var points = ((IMSegmentation3)source).GetPointsAtMs(); IMSegmentation segmentation = (IMSegmentation)other; foreach (var point in points) { var ms = other.GetMsAtPoint(point); if (ms != null && ms.Any()) { foreach (var m in ms) { var collection = segmentation.GetPointsAtM(m, 0); foreach (var geometry in collection.AsEnumerable()) { yield return(geometry as IPoint); } } } } }