Как получить доступ к MText внутри блока?

Автор Тема: Как получить доступ к MText внутри блока?  (Прочитано 11673 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Luca,
Код посмотрел? Всё понятно?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот еще один вариант с непосредственным указанием MTEXT (не важно в блоке ли он или отдельный):

Код - C# [Выбрать]
  1. [CommandMethod("ChgMText")]
  2. public void ChgMText()
  3. {
  4.   Document doc = Application.DocumentManager.MdiActiveDocument;
  5.   if (doc == null) return;
  6.   Editor ed = doc.Editor;
  7.   Database db = doc.Database;
  8.   PromptNestedEntityOptions prOpt =
  9.     new PromptNestedEntityOptions("Выберите  MText: ");
  10.   PromptNestedEntityResult prRes = ed.GetNestedEntity(prOpt);
  11.   if (prRes.Status != PromptStatus.OK) return;
  12.   if (prRes.ObjectId.ObjectClass != RXClass.GetClass(typeof(MText)))
  13.   {
  14.     ed.WriteMessage("\nЭто не MTEXT!!!");
  15.     return;
  16.   }
  17.   using (Transaction tr = doc.TransactionManager.StartTransaction())
  18.   {
  19.     MText mt = tr.GetObject(prRes.ObjectId, OpenMode.ForWrite) as MText;
  20.     // Меняем цвет MText
  21.     if (mt != null)
  22.     {
  23.       mt.ColorIndex = (mt.ColorIndex + 1) % 255;
  24.     }
  25.     tr.Commit();
  26.   }
  27.   // Чтобы отобразились изменения в блоке (если MTEXT в блоке).
  28.   if (prRes.GetContainers().Length > 0) ed.Regen();
  29. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение