2D 和 3D 折线、矩形、多边形、圆环和 3D 多边形网格都是折线变体,并以相同的方式进行编辑。 AutoCAD 可识别拟合多段线和样条拟合多段线。样条拟合折线使用曲线拟合,类似于 B 样条曲线。样条拟合折线有两种:二次折线和立方折线。两条折线都由样条类型系统变量控制。拟合折线使用标准曲线进行曲线拟合,并利用在任何给定顶点上设置的任何切线方向。 若要编辑折线,请使用 、 或 对象的属性和方法。使用以下属性和方法打开或关闭折线、更改折线顶点的坐标或添加折点:PolylinePolyline2dPolyline3d
使用以下方法更新折线的凸起或宽度:
编辑折线本示例创建轻量级折线。然后,它将凸起添加到折线的第三段,将顶点追加到折线,更改最后一段的宽度,最后闭合折线。 VB.NETImports 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 Using acPoly As Polyline = New Polyline() 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 End Using '' 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 using (Polyline acPoly = new Polyline()) { 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 代码参考Sub 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 父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:45
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.