5.2.4. Создание точек (Point)

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

    Объект Point (точка) может использоваться, как узел или как опорная точка, к которой можно привязаться и сместить объект. Вы можете установить стиль точки и её размер относительно экрана или в абсолютных единицах.

    Свойства Pdmode и Pdsize объекта базы данных управляют внешним видом объектов Points. Значения 0, 2, 3 и 4 для свойства Pdmode определяют значёк в точке. Значение 1 ничего не отображает.

    Добавление 32, 64 или 96 к предыдущим значениям определяет фигуру рисуемую вокруг точки дополнительно к значку точки.

    Pdsize управляет размером значка точек, за исключением, когда Pdmode равно 0 и 1. Значение 0 устанавливает для точек 5% от высоты графической области. Установка для Pdsize положительных значений определяет абсолютный размер значка точек. Отрицательное значение обрабатывается как процент от размеров рабочей области. Размер всех точек пересчитывается при регенерации чертежа.

    После изменения Pdmode и Pdsize, отображение существующих точек изменяется при следующей регенерации чертежа.

Создание объекта точки (Point) и изменение её отображения

    В следующем примере создаётся объект точки в пространстве Модели с координатой (5, 5, 0). Затем обновляются свойства Pdmode и Pdsize.

Код 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("AddPointAndSetPointStyle")> _
   7:  Public Sub AddPointAndSetPointStyle()
   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:        '' Создание точки с координатой (4, 3, 0) в пространстве Модели
  24:        Dim acPoint As DBPoint = New DBPoint(New Point3d(4, 3, 0))
  25:        acPoint.SetDatabaseDefaults() 
  26:   
  27:        '' Добавление нового объекта в запись таблицы блоков и в транзакцию
  28:        acBlkTblRec.AppendEntity(acPoint)
  29:        acTrans.AddNewlyCreatedDBObject(acPoint, True) 
  30:   
  31:        '' Установка стиля для всех объектов точек в чертеже
  32:        acCurDb.Pdmode = 34
  33:        acCurDb.Pdsize = 1 
  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("AddPointAndSetPointStyle")]
   7:  public static void AddPointAndSetPointStyle()
   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:        BlockTableRecord acBlkTblRec;
  22:        acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  23:                                        OpenMode.ForWrite) as BlockTableRecord; 
  24:   
  25:        // Создание точки с координатой (4, 3, 0) в пространстве Модели
  26:        DBPoint acPoint = new DBPoint(new Point3d(4, 3, 0));
  27:        acPoint.SetDatabaseDefaults(); 
  28:   
  29:        // Добавление нового объекта в запись таблицы блоков и в транзакцию
  30:        acBlkTblRec.AppendEntity(acPoint);
  31:        acTrans.AddNewlyCreatedDBObject(acPoint, true); 
  32:   
  33:        // Установка стиля для всех объектов точек в чертеже
  34:        acCurDb.Pdmode = 34;
  35:        acCurDb.Pdsize = 1; 
  36:   
  37:        // Сохранение нового объекта в базе данных
  38:        acTrans.Commit();
  39:    }
  40:  }

Код VBA/ActiveX

   1:  Sub AddPointAndSetPointStyle()
   2:      Dim pointObj As AcadPoint
   3:      Dim location(0 To 2) As Double
   4:   
   5:      ' Определение положения точки
   6:      location(0) = 4#: location(1) = 3#: location(2) = 0# 
   7:   
   8:      ' Создание точки
   9:      Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)
  10:      ThisDrawing.SetVariable "PDMODE", 34
  11:      ThisDrawing.SetVariable "PDSIZE", 1
  12:      ZoomAll
  13:  End Sub


Comments