ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Geometry Namespace / PolylineBuilderEx Class / PolylineBuilderEx Constructor / PolylineBuilderEx Constructor(IEnumerable<MapPoint>,AttributeFlags,SpatialReference)
Points for the first ring. Line segments are created from the points.
AttributeFlags to set the HasZ, HasM and HasID attributes. If no attributes should be set, pass AttributeFlags.None. If all attributes should be set, pass AttributeFlags.AllAttributes. Use the bitwise OR operator to set two attributes. For example, to set HasZ = true and HasM = true, pass AttributeFlags.HasZ | AttributeFlags.HasM.
(Optional) The SpatialReference. The default value is null. The spatial reference of each point is ignored.
Example

In This Topic
    PolylineBuilderEx Constructor(IEnumerable<MapPoint>,AttributeFlags,SpatialReference)
    In This Topic
    Creates a new instance of the PolylineBuilderEx class.
    Syntax

    Parameters

    points
    Points for the first ring. Line segments are created from the points.
    attributes
    AttributeFlags to set the HasZ, HasM and HasID attributes. If no attributes should be set, pass AttributeFlags.None. If all attributes should be set, pass AttributeFlags.AllAttributes. Use the bitwise OR operator to set two attributes. For example, to set HasZ = true and HasM = true, pass AttributeFlags.HasZ | AttributeFlags.HasM.
    spatialReference
    (Optional) The SpatialReference. The default value is null. The spatial reference of each point is ignored.
    Exceptions
    ExceptionDescription
    The input mapPoint enumeration is null.
    Example
    Builder Properties
    {
      // list of points
      List<MapPoint> pointsForBuilder = new List<MapPoint>
    {
      MapPointBuilderEx.CreateMapPoint(0, 0, 2, 3, 1),
      MapPointBuilderEx.CreateMapPoint(1, 1, 5, 6),
      MapPointBuilderEx.CreateMapPoint(2, 1, 6),
      MapPointBuilderEx.CreateMapPoint(0, 0)
    };
    
      // will have attributes because it is created with convenience method
      Polyline polylineWithAttrs = PolylineBuilderEx.CreatePolyline(pointsForBuilder);
      bool hasZ = polylineWithAttrs.HasZ;          // hasZ = true
      bool hasM = polylineWithAttrs.HasM;          // hasM = true
      bool hasID = polylineWithAttrs.HasID;        // hasID = true
    
      // will not have attributes because it is specified as a parameter
      Polyline polylineWithoutAttrs =
        PolylineBuilderEx.CreatePolyline(pointsForBuilder, AttributeFlags.None);
      hasZ = polylineWithoutAttrs.HasZ;          // hasZ = false
      hasM = polylineWithoutAttrs.HasM;          // hasM = false
      hasID = polylineWithoutAttrs.HasID;        // hasID = false
    
      // will have attributes because it is created with convenience method
      Polygon polygonWithAttrs = PolygonBuilderEx.CreatePolygon(pointsForBuilder);
      hasZ = polygonWithAttrs.HasZ;               // hasZ = true
      hasM = polygonWithAttrs.HasM;               // hasM = true
      hasID = polygonWithAttrs.HasID;             // hasID = true
    
      // will not have attributes because it is specified as a parameter
      Polygon polygonWithoutAttrs =
            PolygonBuilderEx.CreatePolygon(pointsForBuilder, AttributeFlags.None);
      hasZ = polygonWithoutAttrs.HasZ;               // hasZ = false
      hasM = polygonWithoutAttrs.HasM;               // hasM = false
      hasID = polygonWithoutAttrs.HasID;             // hasID = false
    
      // will not have attributes because it is specified as a parameter
      PolylineBuilderEx polylineB =
                 new PolylineBuilderEx(pointsForBuilder, AttributeFlags.None);
      hasZ = polylineB.HasZ;                      // hasZ = false
      hasM = polylineB.HasM;                      // hasM = false
      hasID = polylineB.HasID;                    // hasID = false
    
      // will have attributes because it is passed an attributed polyline
      polylineB = new PolylineBuilderEx(polylineWithAttrs);
      hasZ = polylineB.HasZ;                      // hasZ = true
      hasM = polylineB.HasM;                      // hasM = true
      hasID = polylineB.HasID;                    // hasID = true
    
      // will not have attributes because it is passed a non-attributed polyline
      polylineB = new PolylineBuilderEx(polylineWithoutAttrs);
      hasZ = polylineB.HasZ;                      // hasZ = false
      hasM = polylineB.HasM;                      // hasM = false
      hasID = polylineB.HasID;                    // hasID = false
    
      // will not have attributes because it is specified as a parameter
      PolygonBuilderEx polygonB = new PolygonBuilderEx(pointsForBuilder, AttributeFlags.None);
      hasZ = polygonB.HasZ;                       // hasZ = false
      hasM = polygonB.HasM;                       // hasM = false
      hasID = polygonB.HasID;                     // hasID = false
    
      // will have attributes because it is passed an attributed polygon
      polygonB = new PolygonBuilderEx(polygonWithAttrs);
      hasZ = polygonB.HasZ;                       // hasZ = true
      hasM = polygonB.HasM;                       // hasM = true
      hasID = polygonB.HasID;                     // hasID = true
    
      // will not have attributes because it is passed a non-attributed polygon
      polygonB = new PolygonBuilderEx(polygonWithoutAttrs);
      hasZ = polygonB.HasZ;                       // hasZ = true
      hasM = polygonB.HasM;                       // hasM = true
      hasID = polygonB.HasID;                     // hasID = true
    }
    Construct a Polyline - from an enumeration of MapPoints
    {
      // Use a builderEx convenience method or a builderEx constructor.
      // neither need to run on the MCT
    
      MapPoint startPt = MapPointBuilderEx.CreateMapPoint(1.0, 1.0);
      MapPoint endPt = MapPointBuilderEx.CreateMapPoint(2.0, 1.0);
    
      List<MapPoint> list = new List<MapPoint>() { startPt, endPt };
    
      Polyline polylineFromPointList = PolylineBuilderEx.CreatePolyline(list, SpatialReferences.WGS84);
    
      // use AttributeFlags.None since we only have 2D points in the list
      PolylineBuilderEx pb = new PolylineBuilderEx(list, AttributeFlags.None);
      pb.SpatialReference = SpatialReferences.WGS84;
      Polyline polyline2 = pb.ToGeometry();
    
      // Use AttributeFlags.NoAttributes because we only have 2d points in the list
      Polyline polyline4 = PolylineBuilderEx.CreatePolyline(list, AttributeFlags.None);
    }
    Build a multi-part Polyline
    {
      List<MapPoint> firstPoints = new List<MapPoint>();
      firstPoints.Add(MapPointBuilderEx.CreateMapPoint(1.0, 1.0));
      firstPoints.Add(MapPointBuilderEx.CreateMapPoint(1.0, 2.0));
      firstPoints.Add(MapPointBuilderEx.CreateMapPoint(2.0, 2.0));
      firstPoints.Add(MapPointBuilderEx.CreateMapPoint(2.0, 1.0));
    
      List<MapPoint> nextPoints = new List<MapPoint>();
      nextPoints.Add(MapPointBuilderEx.CreateMapPoint(11.0, 1.0));
      nextPoints.Add(MapPointBuilderEx.CreateMapPoint(11.0, 2.0));
      nextPoints.Add(MapPointBuilderEx.CreateMapPoint(12.0, 2.0));
      nextPoints.Add(MapPointBuilderEx.CreateMapPoint(12.0, 1.0));
    
      // use AttributeFlags.None since we have 2D points in the list
      PolylineBuilderEx pBuilder = new PolylineBuilderEx(firstPoints, AttributeFlags.None);
      pBuilder.AddPart(nextPoints);
    
      Polyline polylineFromBuilder = pBuilder.ToGeometry();
      // polyline has 2 parts
    
      pBuilder.RemovePart(0);
      polylineFromBuilder = pBuilder.ToGeometry();
      // polyline has 1 part
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also