5.7.3.1. Создание многострочного текста

Источник здесь.  [перевод не проверен];[Переводчик: Вадим Семёнов]

            Вы можете создать многострочный текстовый объект при первом создании экземпляра объекта, и затем добавить его в запись таблицы блока пространства Модели(Model space) или Листа (Paper space). Конструктор Mtext не принимает какие-либо аргументы. После создания экземпляра объекта Mtext, вы можете назначить ему текстовую строку, точку вставки, и ширину, среди других значений использующих его свойства. Другие свойства, которые вы можете изменить, влияют на высоту объекта, выравнивание, угол поворота, и текстовый стиль, или применяют форматирование символов к выделенным символам.

Создание многострочного текстового объекта

Следующий пример создает объект Mtext в пространстве Модели (Model space),с координатами (2,2,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("CreateMText")> _
   7:  Public Sub CreateMText()
   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, _
  18:                                     OpenMode.ForRead)
  19:   
  20:        '' Открываем запись таблицы Блока пространство Модели (Model space)     
  21:        '' для записи
  22:        Dim acBlkTblRec As BlockTableRecord
  23:        acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
  24:                                        OpenMode.ForWrite)
  25:   
  26:        '' Создаем многострочный текстовый объект
  27:        Dim acMText As MText = New MText()
  28:        acMText.SetDatabaseDefaults()
  29:        acMText.Location = New Point3d(2, 2, 0)
  30:        acMText.Width = 4
  31:        acMText.Contents = "This is a text string for the MText object."
  32:   
  33:        acBlkTblRec.AppendEntity(acMText)
  34:        acTrans.AddNewlyCreatedDBObject(acMText, True)
  35:   
  36:        '' Сохраняем изменения и закрываем транзакцию
  37:        acTrans.Commit()
  38:    End Using
  39:  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("CreateMText")]
   7:  public static void CreateMText()
   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:        // Открываем запись таблицы Блока пространство Модели (Model space)     
  22:        // для записи
  23:        BlockTableRecord acBlkTblRec;
  24:        acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  25:                                        OpenMode.ForWrite) as BlockTableRecord;
  26:   
  27:        // Создаем многострочный текстовый объект
  28:        MText acMText = new MText();
  29:        acMText.SetDatabaseDefaults();
  30:        acMText.Location = new Point3d(2, 2, 0);
  31:        acMText.Width = 4;
  32:        acMText.Contents = "This is a text string for the MText object.";
  33:   
  34:        acBlkTblRec.AppendEntity(acMText);
  35:        acTrans.AddNewlyCreatedDBObject(acMText, true);
  36:   
  37:        // Сохраняем изменения и закрываем транзакцию
  38:        acTrans.Commit();
  39:    }
  40:  }


Код VBA/ActiveX 

   1:  Sub Ch4_CreateMText()
   2:      Dim mtextObj As AcadMText
   3:      Dim insertPoint(0 To 2) As Double
   4:      Dim width As Double
   5:      Dim textString As String
   6:   
   7:      insertPoint(0) = 2
   8:      insertPoint(1) = 2
   9:      insertPoint(2) = 0
  10:      width = 4
  11:      textString = "This is a text string for the mtext object."
  12:   
  13:      ' Создаем текстовый Объект в пространстве модели
  14:      Set mtextObj = ThisDrawing.ModelSpace. _
  15:                         AddMText(insertPoint, width, textString)
  16:      ZoomAll
  17:  End Sub
Comments