Вопрос по команде "отменить"
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Вопрос по команде "отменить"

Вопрос по команде "отменить"

Ответ
Поиск в этой теме
Непрочитано 26.06.2006, 07:45 #1
Вопрос по команде "отменить"
Haos
 
инженер-строитель
 
E-burg
Регистрация: 17.05.2005
Сообщений: 696

Матчасть автокада еще не очень хорошо знаю, поэтому попрошу не бить ногами....
Как сделать так, чтобы в отмену предыдущей команды не входило зуммирование и перемещение по экрану?
Просмотров: 7897
 
Непрочитано 26.06.2006, 08:05
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,432


По-моему, никак. Это дело висит в ядре када.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.06.2006, 08:12
#3
Haos

инженер-строитель
 
Регистрация: 17.05.2005
E-burg
Сообщений: 696
<phrase 1=


Цитата:
Сообщение от kpblc
По-моему, никак. Это дело висит в ядре када.
Жаль...
Haos вне форума  
 
Непрочитано 26.06.2006, 08:41
#4
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


А по-моему это сделано очень грамотно. Например, в арчике по умолчанию отмена действий не включает зуммирование. Ну и попробуй вспомнить что ты в какой части чертежа делал В автокаде всё под контролем. Отменяя, можно видеть где происходили изменения чертежа
kha вне форума  
 
Непрочитано 26.06.2006, 11:33
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Как-то люди забывают, что "_zoom" и "_pan" - обычные команды AutoCAD'а и, естественно, подчиняются команде отмены. В других программах, например, CorelDRAW, управление экраном осуществляется операционной системой, поэтому команды отмены внутри программы на изображение не оказывают влияния.
Profan вне форума  
 
Непрочитано 29.06.2006, 14:09 Re: Вопрос по команде "отменить"
#6
balk


 
Регистрация: 21.06.2006
С-Петербург
Сообщений: 51


Цитата:
Сообщение от Haos
Как сделать так, чтобы в отмену предыдущей команды не входило зуммирование и перемещение по экрану?
Если говорить о восстановлении обьектов (случай довольно распространенный), то существует команда "OOPS".
Эта команда восстанавливает последний обьект (или набор обьектов), удаленный либо с помощью команды "ERASE", либо при создании блока, даже если после удаления выполнялись другие команды.
balk вне форума  
 
Непрочитано 29.06.2006, 14:18
#7
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Тут недавно обнаружил, что объекты, удаленные программно через лисп-фунцию, команда OOPS не восстанавливает.
Pilot вне форума  
 
Непрочитано 29.06.2006, 14:19
#8
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Для Акада 2006:
Format>Options>UserPreferences>Combine zoom and pan commands галку поставить
Andi55 вне форума  
 
Непрочитано 29.06.2006, 14:37
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,432


Цитата:
Сообщение от Pilot
Тут недавно обнаружил, что объекты, удаленные программно через лисп-фунцию, команда OOPS не восстанавливает.
Даже при установленных метках начала и конца отмены?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.06.2006, 17:24
#10
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


2 kpblc

А при чем метки? Я про OOPS говорил, а не про UNDO.
Pilot вне форума  
 
Непрочитано 29.06.2006, 20:03
#11
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Для Pilot.
Попробовал вот такую программу:
Код:
[Выделить все]
(defun er_oops (/)
(command "_ERASE")
(princ)
)
_oops (ой) сработала. :P
Profan вне форума  
 
Непрочитано 29.06.2006, 20:30
#12
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Вот после этой программы у меня не работает OOPS.
В коде вместо (setq lname "LAYER_NAME") у меня интерактивный ввод имени слоя с использованием DCL, который я тут для простоты опустил.
Сразу скажу, что большая часть этого кода не моя, а позаимствованная уже довольно давно не поню у кого (да простит меня автор).
Код:
[Выделить все]
(defun c:DelLay ( / sset_1 sset_2 prg num count ex)
   (setq lname "LAYER_NAME");!!!!!
   (setq olderr *error*
        *error* dellerr)
   (setq ocmd (getvar "CMDECHO"))(setvar "CMDECHO" 0)
   (setq lname "LAYER_NAME")
   (setq sset_1 (ssget "X" (list (cons 8 lname))))
   (if sset_1
      (progn
            (setq prg "Yes")
         (setq num (sslength sset_1))
         (setq count 0)
         (repeat (sslength sset_1)
            (entdel (ssname sset_1 count))
            (setq count (1+ count))
         )
         (if
            (ssget "X" (list (cons 8 lname)))
            (progn
              (setq tm (getvar "tilemode"))
                (if (= 1 tm)
                  (setvar "tilemode" 0)
                )
                (if (/= 1 (getvar "cvport"))
                 (progn
                  (princ "\nGo to Layout.")
                  (command "_.pspace")
                 )
                )
                (setq sset_2 (ssget "X" (list (cons 8 lname))))
                (setq count 0)
                 (repeat (sslength sset_2)
                   (entdel (ssname sset_2 count))
                   (setq count (1+ count))
                 )
              (setvar "tilemode" tm)
            )
         )
         (if (= prg "Yes")
           (progn
             (setq ex (getvar "expert"))
             (setvar "expert" 5)
             (command "_.layer"
             "_thaw" lname "")
               (if (= 0 (getvar "tilemode"))
                 (command "_.vplayer" "_vpvisdflt" lname "_thaw" "_reset"
                 lname "_all" "")
               )
             (Alert (strcat "Layer " lname ". " (itoa num) " entities deleted."))
             (setvar "expert" ex)
           )
           (prinL (list "\n" num " entities at layer " lname " deleted."))
         )
      )
      (alert (strcat " No objects at layer " lname "."))
   )
   (setq sset_1 nil)
   (setq sset_2 nil)
   (setvar "CMDECHO" ocmd)
   (setq *error* olderr)
   (princ)
);c:DelLay

(defun dellerr (s)
(if (/= s "Canceled")
    (princ (strcat "\nError: " s)))
  (setq sset_1 nil)
  (setq sset_2 nil)
  (setvar "CMDECHO" ocmd)
  (setq *error* olderr)
  (princ)
)
Pilot вне форума  
 
Непрочитано 29.06.2006, 21:51
#13
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Вот два варианта программы:
Код:
[Выделить все]
(defun del_oops (/)
(command "_line" pause pause "")
(command "_select" "")
(entdel (entlast))
(princ)
)
и
Код:
[Выделить все]
(defun del_oops (/)
(command "_line" pause pause "")
(command "_select" "")
(command "_erase" "_l" "")
(princ)
)
В первом варианте _oops не срабатывает, а во втором срабатывает...
Profan вне форума  
 
Непрочитано 29.06.2006, 22:02
#14
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Понял.
Pilot вне форума  
 
Непрочитано 29.06.2006, 23:02
#15
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А вот что в этих программках делает команда "_select"? По-моему - ничего не делает.
Profan вне форума  
 
Непрочитано 30.06.2006, 08:34
#16
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Profan
А вот что в этих программках делает команда "_select"? По-моему - ничего не делает.

Вместо _l, поставь _P.
Krieger вне форума  
 
Непрочитано 30.06.2006, 09:56
#17
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


не хотел ввязываться, ну да ладно

когда то делал я проньку которая обеспечивала мне двойной щелчок мышью в 10 acade (собственно идею то я, если честно, подсмотрел в одной умной книжке) реальный двойной щелчок получался только на средней кнопке, так как правую и левую система не отдавала. Потом мне захотелось прикрутить на это дело какие нито команды, что в общем то получилось очень не сразу. В результате по одиночному щелчку у меня вызывалось Zoom E, а по двойному Zoom P... undo на это дело не работало... причина та же - не использовалась функция command, так как там у меня reenter получался, а вот КАК с начала темы вспомнить не могу
Zouss вне форума  
 
Непрочитано 30.06.2006, 10:29
#18
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Цитата:
Сообщение от Zouss
...двойной щелчок мышью в 10 acade (собственно идею то я, если честно, подсмотрел в одной умной книжке)...
Знакомо. Эта книжка до сих пор у меня где-то валяется.
Pilot вне форума  
 
Непрочитано 30.06.2006, 10:43
#19
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,188


Цитата:
Сообщение от Pilot
Цитата:
Сообщение от Zouss
...двойной щелчок мышью в 10 acade (собственно идею то я, если честно, подсмотрел в одной умной книжке)...
Знакомо. Эта книжка до сих пор у меня где-то валяется.
А что за книжка? Если очень умная, то, может быть, какие-то идеи и алгоритмы из нее не утратили значимость и для ACAD 2006?
Я не имею в виду двойной щелчок, просто зачастую в старых книжках хорошо расписаны очень нужные вещи, которые в новых днем с огнем не сыскать.
Расскажите, PLS.
kp+ вне форума  
 
Непрочитано 30.06.2006, 12:13
#20
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


acad полезные рецепты, в мягкой ЖОЛТОЙ обложке

к сожалению большинство рецептов морально устарело (читай присутствует в новых версиях)

интерес представляют примеры читабельного оформления лиспов, а также сборище маленьких библиотечных функций для редактирования сеток, списков и преобразований объектов друг в друга (дугу в окружность, отрезок в точку и т.п.)

а еще была у меня (сперли) книжка в бледно-синей обложке с изображенным на ней шаттлом "бураном" - вот ее я бы поглядел еще разок, там более менее толковые рекомендации есть по созданию единичных блоков условных обозначений
Zouss вне форума  
 
Непрочитано 24.06.2010, 11:33
#21
daze

Инженер-строитель
 
Регистрация: 21.10.2006
Украина, Винница
Сообщений: 22


Да уж. Эта проблема для меня более чем актуальна, так как реально задалбывает этот автокадовский дебилизм с запоминанием шагов зумирования/панорамирования. И вообще, Автокад - это чистая американская логика по Задорнову. Ненавижу эту программу. Как только в голову взбрело тому программисту придумать такую идиотскую идею: каждый раз делать лишних несколько щелчков для того, что бы отменить реально нужное действие. Эта программа для роботов, для американцев, которые привыкли ВСЁ делать по инструкциям. Ужас!
daze вне форума  
 
Непрочитано 24.06.2010, 18:45
#22
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,188


Эмоции делу не помогут. Для начала см. пост 8 из этой темы
kp+ вне форума  
 
Непрочитано 24.06.2010, 20:22
#23
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от kp+ Посмотреть сообщение
Эмоции делу не помогут. Для начала см. пост 8 из этой темы
А пост #8 тоже не особо поможет, там всего лишь рассказано, как объединить в одну отмену две команды зумирования и панорамирования, т.е. если вы 10 раз использовали zoom \ pan, zoom \ pan, ... то 10 раз и придётся жать Ctrl+Z
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 24.06.2010, 20:38
#24
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от daze Посмотреть сообщение
Эта программа для роботов, для американцев, которые привыкли ВСЁ делать по инструкциям
Цитата:
Сообщение от Disney Посмотреть сообщение
.е. если вы 10 раз использовали zoom \ pan, zoom \ pan, ... то 10 раз и придётся жать Ctrl+Z
_
Ну я как-бы американец. И вокруг меня много настоящих. И они не имеют никаких инструкций по поводу 10-кратного нажатия на Undo. Работают все (и американцы, и русские... И даже на Берегу слоновой кости) в соответствии со своим умением То есть не все жмут по 10 раз, некоторые открывают выпадающий список с действиями и выбирают нужную или около нее строку. А продвинутые так и в ком строку заглядывают, где есть опции команды Undo
Vova вне форума  
 
Непрочитано 24.06.2010, 22:27
#25
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Цитата:
Сообщение от daze Посмотреть сообщение
Да уж. Эта проблема для меня более чем актуальна, так как реально задалбывает этот автокадовский дебилизм с запоминанием шагов зумирования/панорамирования. И вообще, Автокад - это чистая американская логика по Задорнову. Ненавижу эту программу. Как только в голову взбрело тому программисту придумать такую идиотскую идею: каждый раз делать лишних несколько щелчков для того, что бы отменить реально нужное действие. Эта программа для роботов, для американцев, которые привыкли ВСЁ делать по инструкциям. Ужас!
Ндаа, ну и загнул......УЧИСЬ как работать, и не только ручками но и ГОЛОВОЙ (есть такая часть организма, правда не у всех)... с опытом появится понимание логики программы и перестанеш злится направо и налево
__________________
Сквозь тернии к звездам.... и обратно :yes:
Startrek вне форума  
 
Непрочитано 25.06.2010, 08:34
#26
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Ежели по теме: В Автокаде этими вещами командует системная переменная
UNDOCTL
А ее величина как уже сказал VOVA из штатов настраивается опциями команды _undo.
Насчет программы "для роботов" - по моему КОМПАС как раз для этого очень подходит.

Последний раз редактировалось E-degtyarev, 25.06.2010 в 08:51.
E-degtyarev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Вопрос по команде "отменить"

Реклама i