Форматирование многострочного текста

Создаваемый многострочный текст автоматически принимает настройки активного стиля текста (по умолчанию - ГОСТ 2.304). Вы можете переопределить стиль текста целиком или задать отдельные свойства у объекту MText, также вы можете применить форматирование к отдельным символам или словосочетаниям.

Параметры ориентации, такие как стиль, выравнивание, ширина и поворот, влияют на весь текст в пределах многострочного текста, а не на отдельные слова или символы. Используйте свойство Attachment для изменения выравнивания многострочного текста и свойство Rotation для задания угла поворота.

Свойство TextStyleId задает шрифт и настройки форматирования для многострочного текстового объекта. При изменении стиля многострочного текстового объекта, к которому применено форматирование символов, стиль применяется ко всему объекту, и некоторое форматирование символов может быть утрачено. Например, при смене стиля TrueType на стиль, использующий шрифт SHX, или на другой шрифт TrueType, многострочный текст станет использовать новый шрифт для всего объекта, и любое пользовательское форматирование символов будет утрачено.

Параметры форматирования, такие как подчеркивание, внрхний\нижний регистр и пр. можно применять к отдельным словам или символам в абзаце текста. Вы также можете изменять цвет, шрифт и высоту отдельных символов. Можно изменять интервалы между символами текста или увеличивать ширину символов.

Используйте фигурные скобки ({ }) для задания форматирования только к тексту внутри скобок. Скобки могут быть вложенными друг в друга до восьми уровней.

Вы также можете использовать ASCII управляющие коды символов, чтобы указать настройки форматирования или специальные символы, например, греческого алфавита или операторов сравнения.

Создание МТекста с форматированием

В примере ниже создается многострочный текст в точке (10, 5, 0), содержащий несколько операций форматирования: жирное выделение, текст в верхнем и нижнем регистре.

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
 
[CommandMethod("FormatMText")]
public static void FormatMText()
{
    // Get the current document and database
    Document acDoc = Application.DocumentManager.MdiActiveDocument;
    Database acCurDb = acDoc.Database;

    // Start a transaction
    using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
    {
        // Open the Block table for read
        BlockTable acBlkTbl;
        acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
                                        OpenMode.ForRead) as BlockTable;

        // Open the Block table record Model space for write
        BlockTableRecord acBlkTblRec;
        acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
                                        OpenMode.ForWrite) as BlockTableRecord;

        // Create a multiline text object
        using (MText acMText = new MText())
        {
            acMText.Location = new Point3d(2, 2, 0);
            acMText.Width = 4.5;
            acMText.Contents = "{{\\H1.5x; Big text}\\A2; over text\\A1;/\\A0;under text}";

            acBlkTblRec.AppendEntity(acMText);
            acTrans.AddNewlyCreatedDBObject(acMText, true);
        }

        // Save the changes and dispose of the transaction
        acTrans.Commit();
    }
}

Примечание: в некоторых случаях многострочный текст, содержащий форматирование и созданный программно в nanoCAD .NET API, может не отображаться в полной мере, пока не зайти в редактор.