ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / GeometryEngine Class / Cut Method / Cut(Multipart,Polyline) Method
The polygon or polyline to cut.
The cutting polyline.
Example

In This Topic
    Cut(Multipart,Polyline) Method
    In This Topic
    Splits this geometry into parts.
    Syntax

    Parameters

    multipart
    The polygon or polyline to cut.
    cutter
    The cutting polyline.

    Return Value

    An IReadOnlyList<Geometry> representing the cut geometries. If the cutter or cuttee is empty, then an empty list is returned. If there are no cuts, then an empty list is returned. If the left cut doesn't exist, then the first geometry will be empty. Similarly, if the right cut doesn't exist, the second geometry will be empty. An undefined cut will be produced only if a left or right cut exists and there is a part leftover.
    Exceptions
    ExceptionDescription
    Either multipart or cutter or both are null.
    The method is not implemented for GeometryBag.
    Incompatible spatial references between the input geometries.
    Remarks
    When a polyline/polygon is cut, it is split where it intersects the cutter polyline. For polylines, all left cuts will be grouped together in the first polyline, right cuts and coincident cuts will be grouped together in the second polyline, and each undefined cut and any uncut parts are output as separate polylines. For polygons, all left cuts are grouped together in the first polygon, all right cuts are grouped together in the second polygon, and each undefined cut and any uncut parts are output as separate polygons. See Cut operation Pro Concepts topic for more information.

    GeometryEngine Cut

    Example
    Cut a geometry with a polyline
    SpatialReference sr = SpatialReferences.WGS84;
    
    List<MapPoint> list = new List<MapPoint>();
    list.Add(MapPointBuilderEx.CreateMapPoint(1.0, 1.0, sr));
    list.Add(MapPointBuilderEx.CreateMapPoint(1.0, 4.0, sr));
    list.Add(MapPointBuilderEx.CreateMapPoint(4.0, 4.0, sr));
    list.Add(MapPointBuilderEx.CreateMapPoint(4.0, 1.0, sr));
    
    List<Geometry> cutGeometries;
    
    LineSegment line = LineBuilderEx.CreateLineSegment(MapPointBuilderEx.CreateMapPoint(0, 0, sr), MapPointBuilderEx.CreateMapPoint(3, 6, sr));
    Polyline cutter = PolylineBuilderEx.CreatePolyline(line);
    
    // polyline
    Polyline polyline = PolylineBuilderEx.CreatePolyline(list);
    bool isSimple = GeometryEngine.Instance.IsSimpleAsFeature(polyline);
    cutGeometries = GeometryEngine.Instance.Cut(polyline, cutter) as List<Geometry>;
    
    Polyline leftPolyline = cutGeometries[0] as Polyline;
    Polyline rightPolyline = cutGeometries[1] as Polyline;
    
    // leftPolyline.Points[0] = 1, 2
    // leftPolyline.Points[1] = 1, 4
    // leftPolyline.Points[2] = 2, 4
    
    // rightPolyline.Points.Count = 5
    // rightPolyline.Parts.Count = 2
    
    ReadOnlySegmentCollection segments0 = rightPolyline.Parts[0];
    // segments0[0].StartCoordinate = 1, 1
    // segments0[0].EndCoordinate = 1, 2
    
    ReadOnlySegmentCollection segments1 = rightPolyline.Parts[1];
    // segments1.Count = 2
    // segments1[0].StartCoordinate = 2, 4
    // segments1[0].EndCoordinate = 4, 4
    // segments1[1].StartCoordinate = 4, 4
    // segments1[1].EndCoordinate = 4, 1
    
    // polygon 
    Polygon polygon = PolygonBuilderEx.CreatePolygon(list);
    isSimple = GeometryEngine.Instance.IsSimpleAsFeature(polygon);
    cutGeometries = GeometryEngine.Instance.Cut(polygon, cutter) as List<Geometry>;
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.4 or higher.
    See Also