19/05/2014
Зумирование до границ окна с использованием CommandASync
В этой статье я проиллюстрирую пример использования AutoCAD 2015 API «Editor.CommandAsync».Вопрос: Можно ли зумировать в пределах окна до тех пор пока не будет нажата кнопка ESC или отмена?
Ответ: Да. Это возможно с помощью CommandAsync.
Ниже код на C#:
Код - C#: [Выделить]
- #region "Запуск команды _Zoom из функции обратного вызова"
- private static bool ZoomExit = false;
- // Объявляем делегат
- delegate void Del();
- private static Del _actionCompletedDelegate;
- // При нажатии esc/cancel функция отмечает конец _Zoom
- static void MdiActiveDocument_CommandCancelled(object sender, CommandEventArgs e)
- {
- ZoomExit = true;
- }
- [CommandMethod("TestZoom")]
- public static void TestZoom()
- {
- var ed = Application.DocumentManager.MdiActiveDocument.Editor;
- var doc = Application.DocumentManager.MdiActiveDocument;
- //esc event
- doc.CommandCancelled += MdiActiveDocument_CommandCancelled;
- // start Line command, the first line
- Editor.CommandResult cmdResult1 =
- ed.CommandAsync(new object[] { "_.ZOOM", Editor.PauseToken, Editor.PauseToken });
- // Указание функции обратного вызова, которая будет вызвана после
- // взаимодействия с пользователем
- _actionCompletedDelegate = new Del(CreateZoomAsyncCallback);
- cmdResult1.OnCompleted(new Action(_actionCompletedDelegate));
- ZoomExit = false;
- }
- // Функция обратного вызова
- public static void CreateZoomAsyncCallback()
- {
- var ed = Application.DocumentManager.MdiActiveDocument.Editor;
- // Если Zoom != 0 - команда выполняется
- if (!ZoomExit)
- {
- // AutoCAD hands over to the callback function
- Editor.CommandResult cmdResult1 =
- ed.CommandAsync(new object[] { "_.ZOOM", Editor.PauseToken, Editor.PauseToken });
- // Указание функции обратного вызова, которая будет вызвана после
- // взаимодействия с пользователем
- _actionCompletedDelegate = new Del(CreateZoomAsyncCallback);
- cmdResult1.OnCompleted(new Action(_actionCompletedDelegate));
- }
- else
- {
- ed.WriteMessage("_Zoom завершена");
- return;
- }
- }
- #endregion
Источник: http://adndevblog.typepad.com/autocad/2014/05/zoom-to-a-window-in-editor-using-commandasync.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=742
Опубликовано 19.05.2014