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

ADN Club => AutoCAD .NET API => Тема начата: pavka_97 от 12-10-2018, 15:51:15

Название: Несколько SendStringToExecute, отменить/продолжить
Отправлено: pavka_97 от 12-10-2018, 15:51:15
Добрый день. Не получается отменить (Esc) последовательность SendStringToExecute в середине выполнения. Повторный вызов (Enter/пробел) вызывает не программу, а последнюю SendStringToExecute). Игра с флагами особо не помогла.
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.EditorInput;
  4. using Autodesk.AutoCAD.Runtime;
  5. namespace ClassLibrary30
  6. {
  7.     public class Class1
  8.     {
  9.         [CommandMethod("SSTE",CommandFlags.Session)]
  10.         public static void SSTE()
  11.         {
  12.             Document doc = Application.DocumentManager.MdiActiveDocument;
  13.             Database db = doc.Database;
  14.             Editor ed = doc.Editor;
  15.             doc.SendStringToExecute("._LAYERSTATE ", true, false, true);
  16.             doc.SendStringToExecute("Test2 ", true, false, true);
  17.         }
  18.             [CommandMethod("Test2", CommandFlags.NoHistory)]
  19.         public static void Test2()
  20.               {
  21.                 Document doc = Application.DocumentManager.MdiActiveDocument;
  22.                 Database db = doc.Database;
  23.                 Editor ed = doc.Editor;
  24.                 doc.SendStringToExecute("._View ", true, false, true);
  25.             }
  26.          }
  27. }
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: avc от 12-10-2018, 15:59:15
Уберите их вообще из кода. Если можно сделать без запуска команд, средствами API, то надо убирать.
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: pavka_97 от 12-10-2018, 16:23:21
Согласен что лучше. Но в моем случае удобней работать с красивыми :) родными окошечками layerstates и view.
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: Алексей Кулик от 12-10-2018, 20:15:35
Я бы попробовал объявить транзакцию и внутри нее уже вызывать команды. Хотя даже на лиспе стараюсь напрочь забыть про командные методы: уж больно много там подводных камней...
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: Александр Ривилис от 12-10-2018, 21:08:15
Не получается отменить (Esc) последовательность SendStringToExecute в середине выполнения.
И не получится.
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: pavka_97 от 12-10-2018, 22:24:18
Позвольте полюбопытствовать :)
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: Александр Ривилис от 12-10-2018, 22:25:37
Позвольте полюбопытствовать :)
А чего ты добиваешься? И вообще почему используешь ассинхронный метод?
Название: Re: Несколько SendStringToExecute, отменить/продолжить
Отправлено: pavka_97 от 13-10-2018, 10:37:37
Удобство работы - отмена команды за один раз;повторный запуск команды пробел/enter.
Про ассинхронность на тот момент не думал. Попробую с Command. Спасибо.