5.2.2.1. Создание отрезка (Line)

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

    В этом примере в пространство модели добавляется отрезок (Line) начинающийся в точке (5,5,0) и заканчивающийся в точке (12,3,0).

Код 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("AddLine")> _
   7:  Public Sub AddLine()
   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:        '' Создание отрезка начинающегося в 5,5 и заканчивающегося в 12,3
  25:        Dim acLine As Line = New Line(New Point3d(5, 5, 0), _
  26:                                      New Point3d(12, 3, 0))
  27:        acLine.SetDatabaseDefaults() 
  28:   
  29:        '' Добавление нового объекта в запись таблицы блоков и в транзакцию
  30:        acBlkTblRec.AppendEntity(acLine)
  31:        acTrans.AddNewlyCreatedDBObject(acLine, True) 
  32:   
  33:        '' Сохранение нового объекта в базе данных
  34:        acTrans.Commit()
  35:    End Using
  36:  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("AddLine")]
   7:  public static void AddLine()
   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:        // Создание отрезка начинающегося в 5,5 и заканчивающегося в 12,3
  27:        Line acLine = new Line(new Point3d(5, 5, 0),
  28:                               new Point3d(12, 3, 0));
  29:        acLine.SetDatabaseDefaults(); 
  30:   
  31:        // Добавление нового объекта в запись таблицы блоков и в транзакцию
  32:        acBlkTblRec.AppendEntity(acLine);
  33:        acTrans.AddNewlyCreatedDBObject(acLine, true); 
  34:   
  35:        // Сохранение нового объекта в базе данных
  36:        acTrans.Commit();
  37:    }
  38:  }

Код VBA/ActiveX

   1:  Sub AddLine()
   2:      ' Define the start point
   3:      Dim ptStr(0 To 2) As Double
   4:      ptStr(0) = 5: ptStr(1) = 5: ptStr(2) = 0#
   5:   
   6:      ' Define the end point
   7:      Dim ptEnd(0 To 2) As Double
   8:      ptEnd(0) = 12: ptEnd(1) = 3: ptEnd(2) = 0# 
   9:   
  10:      ' Create a Line object in model space
  11:      Dim lineObj As AcadLine
  12:      Set lineObj = ThisDrawing.ModelSpace.AddLine(ptStr, ptEnd)
  13:      ThisDrawing.Application.ZoomAll
  14:  End Sub



Comments