Отмена действий

Автор Тема: Отмена действий  (Прочитано 15818 раз)

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

Оффлайн German

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
Re: Отмена действий
« Ответ #15 : 14-07-2017, 14:17:26 »
Если нужно откатиться, то вызываем:

Я это и имел ввиду, просто не использовал никогда. Похоже, если такие метки проставлены в цикле, то каждый "_back" будет возвращать к предыдущей метке.
Мне кажется, об этом 1958, и спрашивал изначально.

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Отмена действий
« Ответ #16 : 14-07-2017, 14:49:37 »
Конечно работает! 1958, как мне кажется, просто перепутал количество отменяемых действий и порядковый номер опции
Погоняв Ваш код, признаю свою ошибку.
Тогда уж так. Отмечаем точку, до которой нужно откатиться:
Где и как в коде Алексея отметить точку отката? Прошу прощения за наивный вопрос.
Всё! Разобрался.
Спасибо всем.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Отмена действий
« Ответ #17 : 14-07-2017, 17:51:50 »
Всё! Разобрался.
Спасибо всем.
Ну так поделись своим решением. У нас так принято...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Отмена действий
« Ответ #18 : 14-07-2017, 17:57:30 »
Ну так поделись своим решением. У нас так принято...
Да какое там решение!

Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2. (defun c:tt (/ adoc x s)
  3.   (setq x    0.
  4.         s    50.
  5.         adoc (vla-get-activedocument (vlax-get-acad-object))
  6.         ) ;_ end of setq
  7.  (vl-cmdf "_undo" "_mark")
  8.   (repeat 15
  9.     (vla-startundomark adoc)
  10.     (entmakex (list '(0 . "circle") (cons 10 (list x 0. 0.)) (cons 40 (* s 0.4))))
  11.     (setq x (+ x s))
  12.     (vla-endundomark adoc)
  13.     ) ;_ end of repeat
  14.   (princ)
  15.  (alert "выполнено")
  16.  (vl-cmdf "_undo" "_back")
  17.   ) ;_ end of defun

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Отмена действий
« Ответ #19 : 14-07-2017, 18:04:17 »
Да какое там решение!
Вот уж точно! :) Тебе в этом цикле совсем не нужны вызовы (vla-startundomark adoc) и (vla-endundomark adoc) - они лишние.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Отмена действий
« Ответ #20 : 14-07-2017, 20:30:43 »
Вот уж точно!  Тебе в этом цикле совсем не нужны вызовы (vla-startundomark adoc) и (vla-endundomark adoc) - они лишние.
Я просто в код Алексея добавил три строки, чтобы посмотреть что будет. А в своем основном лиспе (из-за которого весь сыр-бор) функции (vla-startundomark adoc) и (vla-endundomark adoc) я убрал. Еще раз спасибо!