5.2.2.2. Создание полилинии (PolyLine)

Источник здесь. [перевод не проверен]; [переводчик: bandero]

    В этом примере добавляется «лёгкая» полилиния с двумя прямыми сегментами используя 2D координаты (2,4), (4,2) и (6,4) в пространстве Модели.

Код VB.NET

   1:  Imports Autodesk.AutoCAD.Runtime
   2:  Imports Autodesk.AutoCAD.ApplicationServices
   3:  Imports Autodesk.AutoCAD.DatabaseServices
   4:  Imports Autodesk.AutoCAD.Geometry 
   5:   
   6:  <CommandMethod("AddLightweightPolyline")> _
   7:  Public Sub AddLightweightPolyline()
   8:    '' Получение текущего документа и базы данных
   9:    Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  10:    Dim acCurDb As Database = acDoc.Database 
  11:   
  12:    '' Старт транзакции
  13:    Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() 
  14:   
  15:        '' Открытие таблицы Блоков для чтения
  16:        Dim acBlkTbl As BlockTable
  17:        acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) 
  18:   
  19:        '' Открытие записи таблицы Блоков пространства Модели для записи
  20:        Dim acBlkTblRec As BlockTableRecord
  21:        acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
  22:                                        OpenMode.ForWrite) 
  23:   
  24:        '' Создание полилинии с двумя сегментами (3 точки)
  25:        Dim acPoly As Polyline = New Polyline()
  26:        acPoly.SetDatabaseDefaults()
  27:        acPoly.AddVertexAt(0, New Point2d(2, 4), 0, 0, 0)
  28:        acPoly.AddVertexAt(1, New Point2d(4, 2), 0, 0, 0)
  29:        acPoly.AddVertexAt(2, New Point2d(6, 4), 0, 0, 0) 
  30:   
  31:        '' Добавление нового объекта в запись таблицы блоков и в транзакцию
  32:        acBlkTblRec.AppendEntity(acPoly)
  33:        acTrans.AddNewlyCreatedDBObject(acPoly, True) 
  34:   
  35:        '' Сохранение нового объекта в базе данных
  36:        acTrans.Commit()
  37:    End Using
  38:  End Sub

Код C#

   1:  using Autodesk.AutoCAD.Runtime;
   2:  using Autodesk.AutoCAD.ApplicationServices;
   3:  using Autodesk.AutoCAD.DatabaseServices;
   4:  using Autodesk.AutoCAD.Geometry; 
   5:   
   6:  [CommandMethod("AddLightweightPolyline")]
   7:  public static void AddLightweightPolyline()
   8:  {
   9:    // Получение текущего документа и базы данных
  10:    Document acDoc = Application.DocumentManager.MdiActiveDocument;
  11:    Database acCurDb = acDoc.Database;
  12:   
  13:    // Старт транзакции
  14:    using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  15:    {
  16:        // Открытие таблицы Блоков для чтения
  17:        BlockTable acBlkTbl;
  18:        acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
  19:                                     OpenMode.ForRead) as BlockTable; 
  20:   
  21:        // Открытие записи таблицы Блоков пространства Модели для записи
  22:        BlockTableRecord acBlkTblRec;
  23:        acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  24:                                        OpenMode.ForWrite) as BlockTableRecord;
  25:   
  26:        // Создание полилинии с двумя сегментами (3 точки)
  27:        Polyline acPoly = new Polyline();
  28:        acPoly.SetDatabaseDefaults();
  29:        acPoly.AddVertexAt(0, new Point2d(2, 4), 0, 0, 0);
  30:        acPoly.AddVertexAt(1, new Point2d(4, 2), 0, 0, 0);
  31:        acPoly.AddVertexAt(2, new Point2d(6, 4), 0, 0, 0); 
  32:   
  33:        // Добавление нового объекта в запись таблицы блоков и в транзакцию
  34:        acBlkTblRec.AppendEntity(acPoly);
  35:        acTrans.AddNewlyCreatedDBObject(acPoly, true); 
  36:   
  37:        // Сохранение нового объекта в базе данных
  38:        acTrans.Commit();
  39:    }
  40:  }

Код VBA/ActiveX

   1:  Sub AddLightWeightPolyline()
   2:      Dim plineObj As AcadLWPolyline
   3:      Dim points(0 To 5) As Double
   4:   
   5:      ' Определение точек 2D полилинии
   6:      points(0) = 2: points(1) = 4
   7:      points(2) = 4: points(3) = 2
   8:      points(4) = 6: points(5) = 4 
   9:   
  10:      ' Создать  новую полилинию в пространстве модели
  11:      Set plineObj = ThisDrawing.ModelSpace. _
  12:                     AddLightWeightPolyline(points)
  13:      ThisDrawing.Application.ZoomAll
  14:  End Sub




Comments