22/08/2017
Добавление MTEXT к ячейке таблицы
Это пример кода вставки MText’а в указанную пользователем ячейку Таблицы. Можно передавать RTF-контент в MText или создавать строку с использованием кодов форматирования.
Код - C#: [Выделить]
- [CommandMethod("addMtext")]
- static public void addMtext()
- {
- Document document =
- Application.DocumentManager.MdiActiveDocument;
- Editor ed = document.Editor;
- Database db = document.Database;
- PromptNestedEntityOptions pneo
- = new PromptNestedEntityOptions("");
- pneo.Message = "\nВыберите текст в ячейке таблицы : ";
- PromptNestedEntityResult pner = ed.GetNestedEntity(pneo);
- if (pner.Status != PromptStatus.OK)
- return;
- Point3d pickedPt = pner.PickedPoint;
- ObjectId tableId = ObjectId.Null;
- ObjectId[] containers = pner.GetContainers();
- if (containers.Length > 0) {
- tableId = containers[0];
- }
- using (Transaction tr =
- db.TransactionManager.StartTransaction()) {
- Table table = tr.GetObject(tableId, OpenMode.ForWrite) as Table;
- if (table != null) {
- TableHitTestInfo htinfo = table.HitTest(
- pickedPt,
- Vector3d.ZAxis
- );
- ed.WriteMessage(
- "\nСтрока : {0} - Колонка : {1}",
- htinfo.Row,
- htinfo.Column
- );
- // чистим все переопределения стиля.
- table.Cells[htinfo.Row, htinfo.Column].ClearStyleOverrides();
- // создаём MText и передаём ей RTF-содержимое
- MText mt = new MText();
- mt.SetContentsRtf(@"{\pntext\f0 1.\tab}Первая строка\par{\pntext\f0 2.\tab}Вторая строка\par}");
- // или передаём содержимое "1.\tПервая строка\\P2.\tSecond Line\\P"
- table.Cells[htinfo.Row, htinfo.Column].TextString =
- "1.\tПервая строка\\P2.\tВторая строка\\P"; //mt.Contents;
- }
- tr.Commit();
- }
- }
Результат:
Источник: 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