5.2.3.1. Создание окружности (Circle)

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

    В этом примере создаётся круг в пространстве Модели с центром в точке (2,3,0) с радиусом 4,25.

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

Код VBA/ActiveX

   1:  Sub AddCircle()
   2:      ' Определение точки центра
   3:      Dim ptCen(0 To 2) As Double
   4:      ptCen(0) = 2: ptCen(1) = 3: ptCen(2) = 0# 
   5:   
   6:      ' Создание объекта Круга в пространстве Модели
   7:      Dim circObj As AcadCircle
   8:      Set circObj = ThisDrawing.ModelSpace.AddCircle(ptCen, 4.25)
   9:      ThisDrawing.Application.ZoomAll
  10:  End Sub



Comments