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

10/01/2014

Как завершить "Editor.GetSelection" при выборе ключевого слова

Один из путей выхода из метода “GetSelection” по ключевому слову – это создать исключение в обработчике события ввода ключевых слов. Ниже простой пример объясняющий эту технику. При нажатии любого ключевого слова генерируется исключение “Autodesk.AutoCAD.Runtime.ErrorStatus.OK” с передачей ключевого слова. Это исключение обрабатывается в коде для идентификации введенного ключевого слова.

Код - C#: [Выделить]
  1. [CommandMethod("SELKW")]
  2. public void GetSelectionWithKeywords()
  3. {
  4.     Document doc =
  5.         Application.DocumentManager.MdiActiveDocument;
  6.     Editor ed = doc.Editor;
  7.  
  8.     // Создаём объект для настройки выбора примитивов
  9.     PromptSelectionOptions pso = new PromptSelectionOptions();
  10.  
  11.     // Добавим ключевые слова
  12.     pso.Keywords.Add("ПЕрвый");
  13.     pso.Keywords.Add("ВТорой");
  14.  
  15.     // Установим наши подсказки чтобы они вклбчали ключевые слова
  16.     string kws = pso.Keywords.GetDisplayString(true);
  17.     pso.MessageForAdding =
  18.                 "\nДобавить объекты в набор или " + kws;
  19.     pso.MessageForRemoval =
  20.             "\nУдалить объекты из набора или " + kws;
  21.  
  22.     // Устанавливаем обработчик события ввода ключевого слова
  23.     pso.KeywordInput +=
  24.            new SelectionTextInputEventHandler(pso_KeywordInput);
  25.  
  26.     PromptSelectionResult psr = null;
  27.     try
  28.     {
  29.         psr = ed.GetSelection(pso);
  30.  
  31.         if (psr.Status == PromptStatus.OK)
  32.         {
  33.             // Тут ваша логика обработки
  34.         }
  35.     }
  36.     catch (System.Exception ex)
  37.     {
  38.         if (ex is Autodesk.AutoCAD.Runtime.Exception)
  39.         {
  40.             Autodesk.AutoCAD.Runtime.Exception aEs =
  41.                     ex as Autodesk.AutoCAD.Runtime.Exception;
  42.  
  43.             // Пользователь ввел ключевое слово.
  44.  
  45.             if (aEs.ErrorStatus ==
  46.                         Autodesk.AutoCAD.Runtime.ErrorStatus.OK)
  47.             {
  48.                 ed.WriteMessage("\nВведено ключевое слово: {0}",
  49.                                                      ex.Message);
  50.             }
  51.             else
  52.             {
  53.                 // другое исключение - обработайте его!
  54.             }
  55.         }
  56.     }
  57.  
  58. }
  59. void pso_KeywordInput(object sender, SelectionTextInputEventArgs e)
  60. {
  61.     // Пользователь выбрал ключевое слово - сгенерируем исключение
  62.     throw new Autodesk.AutoCAD.Runtime.Exception(
  63.                 Autodesk.AutoCAD.Runtime.ErrorStatus.OK, e.Input);
  64. }

Источник: http://adndevblog.typepad.com/autocad/2013/12/how-to-exit-editorgetselection-on-keyword-selection.html

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

Опубликовано 10.01.2014
Отредактировано 10.01.2014 в 19:44:45