编辑多段线
 
 

2D and 3D polylines, rectangles, polygons, donuts, 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 SPLINETYPE system variable. A fit polyline uses standard curves for curve fit and utilizes any tangent directions set on any given vertex.

AutoCAD 可以识别拟合多段线和样条曲线拟合多段线。样条曲线拟合多段线使用曲线进行拟合,类似于 B 样条曲线。有两种样条曲线拟合多段线:二次和三次。这两种多段线均由 SPLINETYPE 系统变量控制。拟合多段线使用标准曲线来进行曲线拟合,并利用所有在给定顶点上设置的切线方向。

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

要编辑多段线,请使用 Polyline、 Polyline2d、或 Polyline3d 对象的属性和方法。请使用以下属性和方法开放或闭合多段线、修改多段线顶点的坐标或添加顶点:

Closed 属性

Opens or closes the polyline.
开放或闭合多段线。

ConstantWidth 属性

Sets the constant width for a lightweight and 2D polyline.
为轻量或二维多段线设置恒定的宽度。

AppendVertex 方法

Adds a vertex to a 2D or 3D polyline.
为二维或三维多段线添加顶点。

AddVertexAt 方法

Adds a vertex to a lightweight polyline.
为轻量多段线添加顶点。

ReverseCurve

Reverses the direction of the polyline.
反转多段线的方向。

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

使用下列方法更新多段线的凸点或宽度。

SetBulgeAt

Sets the bulge of a light polyline, given the segment index.
设置轻量多段线指定索引片段处的凸度。

SetStartWidthAt

Sets the start width of a lightweight polyline, given the segment index.
设置轻量多段线指定索引片段处的起始宽度。

Straighten

Straightens a 2D or 3D polyline.
非曲线化二维或三维多段线。

For more information about editing polylines, see “Modify or Join Polyline” in the User's Guide.

更多关于编辑多段线的详细信息,请参见《用户手册》中的“修改或合并多段线”。

编辑多段线

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.

本例创建一条优化多段线,然后向多段线的第三段添加凸度,向多段线附加顶点,修改最后一段的宽度,最后闭合多段线。

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("EditPolyline")> _
Public Sub EditPolyline()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      '' 创建一条轻量多段线     Create a lightweight polyline
      Dim acPoly As Polyline = New Polyline()
      acPoly.SetDatabaseDefaults()
      acPoly.AddVertexAt(0, New Point2d(1, 1), 0, 0, 0)
      acPoly.AddVertexAt(1, New Point2d(1, 2), 0, 0, 0)
      acPoly.AddVertexAt(2, New Point2d(2, 2), 0, 0, 0)
      acPoly.AddVertexAt(3, New Point2d(3, 2), 0, 0, 0)
      acPoly.AddVertexAt(4, New Point2d(4, 4), 0, 0, 0)
 
      '' 添加新对象到块表记录和事务中   Add the new object to the block table record and the transaction
      acBlkTblRec.AppendEntity(acPoly)
      acTrans.AddNewlyCreatedDBObject(acPoly, True)
 
      '' 设置第三段的凸度  Sets the bulge at index 3
      acPoly.SetBulgeAt(3, -0.5)
 
      ''添加新的顶点  Add a new vertex
      acPoly.AddVertexAt(5, New Point2d(4, 1), 0, 0, 0)
 
      '' 设置第四段的起始和终止宽度  Sets the start and end width at index 4
      acPoly.SetStartWidthAt(4, 0.1)
      acPoly.SetEndWidthAt(4, 0.5)
 
      '' 闭合多段线   Close the polyline
      acPoly.Closed = True
 
      '' 保存新对象到数据库中   Save the new objects to the database
      acTrans.Commit()
  End Using
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
 
[CommandMethod("EditPolyline")]
public static void EditPolyline()
{
  // 获得当前文档和数据库   Get the current document and database
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  Database acCurDb = acDoc.Database;
 
  // 启动一个事务  Start a transaction
  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  {
      // 以只读方式打开块表   Open the Block table for read
      BlockTable acBlkTbl;
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
                                   OpenMode.ForRead) as BlockTable;
 
      // 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      BlockTableRecord acBlkTblRec;
      acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
                                      OpenMode.ForWrite) as BlockTableRecord;
 
      // 创建一条轻量多段线     Create a lightweight polyline
      Polyline acPoly = new Polyline();
      acPoly.SetDatabaseDefaults();
      acPoly.AddVertexAt(0, new Point2d(1, 1), 0, 0, 0);
      acPoly.AddVertexAt(1, new Point2d(1, 2), 0, 0, 0);
      acPoly.AddVertexAt(2, new Point2d(2, 2), 0, 0, 0);
      acPoly.AddVertexAt(3, new Point2d(3, 2), 0, 0, 0);
      acPoly.AddVertexAt(4, new Point2d(4, 4), 0, 0, 0);
 
      // 添加新对象到块表记录和事务中   Add the new object to the block table record and the transaction
      acBlkTblRec.AppendEntity(acPoly);
      acTrans.AddNewlyCreatedDBObject(acPoly, true);
 
      // Sets the bulge at index 3
      acPoly.SetBulgeAt(3, -0.5);
 
      // Add a new vertex
      acPoly.AddVertexAt(5, new Point2d(4, 1), 0, 0, 0);
 
      // Sets the start and end width at index 4
      acPoly.SetStartWidthAt(4, 0.1);
      acPoly.SetEndWidthAt(4, 0.5);
 
      // 闭合多段线   Close the polyline
      acPoly.Closed = true;
 
      // 保存新对象到数据库中   Save the new objects to the database
      acTrans.Commit();
  }
}
VBA/ActiveX 代码参考