ArcGIS Pro 2.7 API Reference Guide
InsertMAtDistance Method (IGeometryEngine)
Example 

ArcGIS.Core.Geometry Namespace > IGeometryEngine Interface : InsertMAtDistance Method
The multipart in which to set the M value.
The M value to set.
The distance along the multipart at which to set the M value. If no point exists at the given distance, a new point is created with interpolated X and Y values.
Indicates whether the distance is interpreted as length or as a ratio along the multipart.
Indicates whether to create a new part at the split point (the point whose M value is set) or not.
Indicates if a split happened at the split point. No split happens if createNewPart is false and the split point is at an existing vertex, or if createNewPart is true and a split part would be empty.
The index of the part that was modified. If createNewPart is true, partIndex refers to the added part and segmentIndex will be 0.
The index of the segment that was modified. The segment index is relative to the modified part.
Sets the M value at the given distance along the multipart.
Syntax

Parameters

multipart
The multipart in which to set the M value.
m
The M value to set.
distance
The distance along the multipart at which to set the M value. If no point exists at the given distance, a new point is created with interpolated X and Y values.
asRatioOrLength
Indicates whether the distance is interpreted as length or as a ratio along the multipart.
createNewPart
Indicates whether to create a new part at the split point (the point whose M value is set) or not.
splitHappened
Indicates if a split happened at the split point. No split happens if createNewPart is false and the split point is at an existing vertex, or if createNewPart is true and a split part would be empty.
partIndex
The index of the part that was modified. If createNewPart is true, partIndex refers to the added part and segmentIndex will be 0.
segmentIndex
The index of the segment that was modified. The segment index is relative to the modified part.

Return Value

A multipart with the M value set.
Exceptions
ExceptionDescription
The input multipart is null.
The input multipart is not M-aware.
Example
string json = "{\"hasM\":true,\"paths\":[[[-3000,-2000,-3],[-2000,-2000,-2],[-1000,-2000,null]]]}";
Polyline polyline = PolylineBuilder.FromJson(json);
bool splitHappened;
int partIndex, segmentIndex;

// A point already exists at the given distance
double m = -1;
double distance = 2000;
bool createNewPart = false;
Polyline outputPolyline = GeometryEngine.Instance.InsertMAtDistance(polyline, m, distance, AsRatioOrLength.AsLength, createNewPart, out splitHappened, out partIndex, out segmentIndex) as Polyline;

// splitHappened = false, partIndex = 0, segmentIndex = 2
// outputPolyline.Points[2].M = -1

json = "{\"hasM\":true,\"paths\":[[[-3000,-2000,-3],[-2000,-2000,-2],[-1000,-2000,-1]],[[0,0,0],[0,1000,0],[0,2000,2]]],\"spatialReference\":{\"wkid\":3857}}";
polyline = PolylineBuilder.FromJson(json);

// A point already exists at the given distance, but createNewPart = true
m = 1;
distance = 3000;
createNewPart = true;
outputPolyline = GeometryEngine.Instance.InsertMAtDistance(polyline, m, distance, AsRatioOrLength.AsLength, createNewPart, out splitHappened, out partIndex, out segmentIndex) as Polyline;
string outputJson = outputPolyline.ToJson();

// splitHappened = true, partIndex = 2, segmentIndex = 0
// outputJson = {"hasM":true,"paths":[[[-3000,-2000,-3],[-2000,-2000,-2],[-1000,-2000,-1]],[[0,0,0],[0,1000,1]],[[0,1000,1],[0,2000,2]]]}}
// A new part has been created and the M values for outputPolyline.Points[4] and outputPolyline.Points[5] have been modified

// A point does not exist at the given distance
m = 1;
distance = 3500;
createNewPart = false;
outputPolyline = GeometryEngine.Instance.InsertMAtDistance(polyline, m, distance, AsRatioOrLength.AsLength, createNewPart, out splitHappened, out partIndex, out segmentIndex) as Polyline;
outputJson = outputPolyline.ToJson();

// splitHappened = true even though createNewPart = false because a new point was created
// partIndex = 1, segmentIndex = 2
// outputJson = {"hasM":true,"paths":[[[-3000,-2000,-3],[-2000,-2000,-2],[-1000,-2000,-1]],[[0,0,0],[0,1000,0],[0,1500,1],[0,2000,2]]]}
// A new point has been inserted (0, 1500, 1) by interpolating the X and Y coordinates and M value set to the input M value.
Requirements

Target Platforms: Windows 10, Windows 8.1

See Also

Reference

IGeometryEngine Interface
IGeometryEngine Members