ADN Open CIS
Сообщество программистов Autodesk в СНГ

22/08/2017

Добавление MTEXT к ячейке таблицы

Это пример кода вставки MText’а в указанную пользователем ячейку Таблицы. Можно передавать RTF-контент в MText или создавать строку с использованием кодов форматирования.

Код - C#: [Выделить]
  1. [CommandMethod("addMtext")]
  2. static public void addMtext()
  3. {
  4.   Document document =
  5.   Application.DocumentManager.MdiActiveDocument;
  6.   Editor ed = document.Editor;
  7.   Database db = document.Database;
  8.  
  9.   PromptNestedEntityOptions pneo
  10.     = new PromptNestedEntityOptions("");
  11.   pneo.Message = "\nВыберите текст в ячейке таблицы : ";
  12.   PromptNestedEntityResult pner = ed.GetNestedEntity(pneo);
  13.   if (pner.Status != PromptStatus.OK)
  14.     return;
  15.   Point3d pickedPt = pner.PickedPoint;
  16.  
  17.   ObjectId tableId = ObjectId.Null;
  18.   ObjectId[] containers = pner.GetContainers();
  19.   if (containers.Length > 0) {
  20.     tableId = containers[0];
  21.   }
  22.  
  23.   using (Transaction tr =
  24.   db.TransactionManager.StartTransaction()) {
  25.     Table table = tr.GetObject(tableId, OpenMode.ForWrite) as Table;
  26.  
  27.     if (table != null) {
  28.       TableHitTestInfo htinfo = table.HitTest(
  29.         pickedPt,
  30.         Vector3d.ZAxis
  31.       );
  32.  
  33.       ed.WriteMessage(
  34.         "\nСтрока : {0} - Колонка : {1}",
  35.         htinfo.Row,
  36.         htinfo.Column
  37.       );
  38.       // чистим все переопределения стиля.
  39.       table.Cells[htinfo.Row, htinfo.Column].ClearStyleOverrides();
  40.       // создаём MText и передаём ей RTF-содержимое
  41.       MText mt = new MText();
  42.       mt.SetContentsRtf(@"{\pntext\f0 1.\tab}Первая строка\par{\pntext\f0 2.\tab}Вторая строка\par}");
  43.       // или передаём содержимое "1.\tПервая строка\\P2.\tSecond Line\\P"
  44.  
  45.       table.Cells[htinfo.Row, htinfo.Column].TextString =
  46.         "1.\tПервая строка\\P2.\tВторая строка\\P"; //mt.Contents;
  47.  
  48.  
  49.     }
  50.     tr.Commit();
  51.   }
  52.  
  53. }

 

Результат:

 

 

Источник: http://adndevblog.typepad.com/autocad/2017/08/how-to-create-mtext-in-a-table-cell.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=7967

Опубликовано 22.08.2017