About Editing Polylines (VBA/ActiveX)

2D and 3D polylines, rectangles, polygons, and 3D polygon meshes are all polyline variants and are edited in the same way.

AutoCAD recognizes both fit polylines and spline-fit polylines. A spline-fit polyline uses a curve fit, similar to a B-spline. There are two kinds of spline-fit polylines: quadratic and cubic. Both polylines are controlled by the AutoCAD SPLINETYPE system variable. A fit polyline uses standard curves for curve fit and utilizes any tangent directions set on any given vertex.

To edit a polyline, use the properties and methods of the LightweightPolyline or Polyline object. Use the following properties and methods to open or close a polyline, change the coordinates of a polyline vertex, or add a vertex:

Closed property
Opens or closes the polyline.
Coordinates property
Specifies the coordinates for each vertex in the polyline.

Use the following methods to update the bulge or width of a polyline:

AddVertex
Adds a vertex to a lightweight polyline.
SetBulge
Sets the bulge of a polyline, given the segment index.
SetWidth
Sets the start and end width of a polyline, given the segment index.

Edit a polyline

This example creates a lightweight polyline. It then adds a bulge to the third segment of the polyline, appends a vertex to the polyline, changes the width of the last segment, and finally closes the polyline.

Sub Ch4_EditPolyline()
  Dim plineObj As AcadLWPolyline
  Dim points(0 To 9) As Double

  ' Define the 2D polyline points
  points(0) = 1: points(1) = 1
  points(2) = 1: points(3) = 2
  points(4) = 2: points(5) = 2
  points(6) = 3: points(7) = 2
  points(8) = 4: points(9) = 4

  ' Create a light weight Polyline object
  Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

  ' Add a bulge to segment 3
  plineObj.SetBulge 3, -0.5

  ' Define the new vertex
  Dim newVertex(0 To 1) As Double
  newVertex(0) = 4: newVertex(1) = 1

  ' Add the vertex to the polyline
  plineObj.AddVertex 5, newVertex

  ' Set the width of the new segment
  plineObj.SetWidth 4, 0.1, 0.5

  ' Close the polyline
  plineObj.Closed = True
  plineObj.Update
End Sub