5.7.1.2. Назначение шрифтов

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

        Шрифты определяют формы текстовых символов, которые составляют каждый набор символов. Один шрифт может использоваться более чем одним текстовым стилем. Используйте свойство FileName чтобы присвоить файл шрифта текстовому стилю. Вы можете назначать TrueType или компилируемые AutoCAD SHX шрифты для текстовых стилей.

 Установка текстовых шрифтов

       Следующий пример получает текущее значение шрифта, используя свойство Font для активного текстового стиля, и затем меняет отображаемый шрифт на “PlayBill”. Для того чтобы увидеть эффект изменения шрифта, добавьте многострочный или однострочный текст в ваш текущий чертеж до выполнения примера. Помните, что если у вас не установлен шрифт PlayBill в системе, вы должны заменить его на шрифт, который у вас есть, для того чтобы пример работал.

Код VB.NET

   1:  Imports Autodesk.AutoCAD.Runtime
   2:  Imports Autodesk.AutoCAD.ApplicationServices
   3:  Imports Autodesk.AutoCAD.DatabaseServices
   4:   
   5:  <CommandMethod("UpdateTextFont")> _
   6:  Public Sub UpdateTextFont()
   7:    '' Устанавливаем текущий документ и базу данных
   8:    Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
   9:    Dim acCurDb As Database = acDoc.Database
  10:   
  11:    '' Запускаем транзакцию
  12:    Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
  13:   
  14:        '' Открываем текущий текстовый стиль для записи
  15:        Dim acTextStyleTblRec As TextStyleTableRecord
  16:        acTextStyleTblRec = acTrans.GetObject(acCurDb.Textstyle, _
  17:                                              OpenMode.ForWrite)
  18:   
  19:        '' Получаем текущие настройки шрифта
  20:        Dim acFont As Autodesk.AutoCAD.GraphicsInterface.FontDescriptor
  21:        acFont = acTextStyleTblRec.Font
  22:   
  23:        '' Обновляем стиль текста шрифта на “PlayBill”
  24:        Dim acNewFont As Autodesk.AutoCAD.GraphicsInterface.FontDescriptor
  25:        acNewFont = New  _
  26:          Autodesk.AutoCAD.GraphicsInterface.FontDescriptor("PlayBill", _
  27:                                                            acFont.Bold, _
  28:                                                            acFont.Italic, _
  29:                                                            acFont.CharacterSet, _
  30:                                                            acFont.PitchAndFamily)
  31:   
  32:        acTextStyleTblRec.Font = acNewFont
  33:   
  34:        acDoc.Editor.Regen()
  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:   
   5:  [CommandMethod("UpdateTextFont")]
   6:  public static void UpdateTextFont()
   7:  {
   8:    // Устанавливаем текущий документ и базу данных
   9:    Document acDoc = Application.DocumentManager.MdiActiveDocument;
  10:    Database acCurDb = acDoc.Database;
  11:   
  12:    // Запускаем транзакцию
  13:    using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  14:    {
  15:        // Открываем текущий текстовый стиль для записи
  16:        TextStyleTableRecord acTextStyleTblRec;
  17:        acTextStyleTblRec = acTrans.GetObject(acCurDb.Textstyle,
  18:                                              OpenMode.ForWrite) as TextStyleTableRecord;
  19:   
  20:        // Получаем текущие настройки шрифта
  21:        Autodesk.AutoCAD.GraphicsInterface.FontDescriptor acFont;
  22:        acFont = acTextStyleTblRec.Font;
  23:   
  24:        // Обновляем стиль текста шрифта на “PlayBill”
  25:        Autodesk.AutoCAD.GraphicsInterface.FontDescriptor acNewFont;
  26:        acNewFont = new
  27:          Autodesk.AutoCAD.GraphicsInterface.FontDescriptor("PlayBill",
  28:                                                            acFont.Bold,
  29:                                                            acFont.Italic,
  30:                                                            acFont.CharacterSet,
  31:                                                            acFont.PitchAndFamily);
  32:   
  33:        acTextStyleTblRec.Font = acNewFont;
  34:   
  35:        acDoc.Editor.Regen();
  36:   
  37:        // Сохраняем изменения и очищаем транзакцию
  38:        acTrans.Commit();
  39:    }
  40:  }

Код VBA/ActiveX

   1:  Sub UpdateTextFont()
   2:   
   3:      MsgBox ("Посмотрим на текст теперь…")
   4:   
   5:      Dim typeFace As String
   6:      Dim SavetypeFace As String
   7:      Dim Bold As Boolean
   8:      Dim Italic As Boolean
   9:      Dim charSet As Long
  10:      Dim PitchandFamily As Long
  11:   
  12:      ' Получаем текущие настройки для заполнения значения по умолчанию методом    
  13:      ' SetFont
  14:     
  15:      ThisDrawing.ActiveTextStyle.GetFont typeFace, _
  16:                    Bold, Italic, charSet, PitchandFamily
  17:   
  18:      ' Меняем отображение для шрифта
  19:      SavetypeFace = typeFace
  20:      typeFace = "PlayBill"
  21:      ThisDrawing.ActiveTextStyle.SetFont typeFace, _
  22:                    Bold, Italic, charSet, PitchandFamily
  23:      ThisDrawing.Regen acActiveViewport
  24:  End Sub


Comments