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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не удается отследить "прозрачные" команды в AutoCAD 2019

Не удается отследить "прозрачные" команды в AutoCAD 2019

Ответ
Поиск в этой теме
Непрочитано 13.02.2020, 14:40 #1
Не удается отследить "прозрачные" команды в AutoCAD 2019
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,787

Необходимо отследить начало (или окончание, неважно) прозрачных команд в ACAD2019 - таких, как pan, zoom, select etc.
Попробовал через командный реактор - мимо. Реакторы изменений базы рисунка, естественно, не проходят - они вообще под другое заточены. Реакторы редактирования тоже мимо.
Подумал на предмет реакторов на системные переменные - но на какие? vsmin, vsmax, dbmod - все мимо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 1432
 
Непрочитано 13.02.2020, 15:05
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


ну пока только на ум _VIEWSIZE приходит для отслеживания изменения масштаба текущего ВЭ.
Сергей812 вне форума  
 
Автор темы   Непрочитано 13.02.2020, 15:13
#3
Кулик Алексей aka kpblc
Moderator

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


Я не уверен, что при том же панорамировании средней кнопкой мыши оно хоть что-то даст
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.02.2020, 15:13
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


А переменная "cmdnames" чем не угодила?

Выдаёт что-то навроде

"LINE'ZOOM"

ну или "LINE" - если не работает прозрачная команда.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Автор темы   Непрочитано 13.02.2020, 16:17
#5
Кулик Алексей aka kpblc
Moderator

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


При обычном панорамировании не срабатывает
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.02.2020, 17:06
#6
kp+

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


VIEWCTR подойдет? imho, для 'pan/'zoom то что доктор прописал. Ну может в связке с VIEWSIZE, если прокрутить колесо мыши так аккуратно, что масштаб изменится, а центр вида - нет.
Для 'select надо что-то другое...
Успешное завершение всех разновидностей этой команды тянет за собой создание набора выбора, а дальше ssget.
Надо ли отслеживать неуспешное, когда в результате ничего не выбрано?

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
etc.
А какие еще прозрачные команды надо отслеживать? Или все, которые только можно?

Последний раз редактировалось kp+, 13.02.2020 в 17:20.
kp+ вне форума  
 
Автор темы   Непрочитано 13.02.2020, 17:30
#7
Кулик Алексей aka kpblc
Moderator

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


viewctr не подходит - эта дрянь не меняется при скроллинге. Так же как и viewsize. На другом форуме Александр Ривилис сказал:
Цитата:
Здесь обсуждалось: https://www.theswamp.org/index.php?topic=41484.0
Пришли к выводу, что средствами только VisualLisp это сделать нельзя.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.02.2020, 17:37
#8
kp+

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
viewctr не подходит - эта дрянь не меняется при скроллинге. Так же как и viewsize.
Не знаю как ПРИ, но СРАЗУ ПОСЛЕ отпускания кнопки/колесика мыши - меняются, специально проверял (чистый Акад 2010). vsmin/vsmax - те и правда не меняются.
Вроде ж в #1 написано, что можно отслеживать как начало, так и окончание команд.
Может в 2019 у viewctr и viewsize другое поведение, не могу сказать.

Последний раз редактировалось kp+, 13.02.2020 в 17:44.
kp+ вне форума  
 
Автор темы   Непрочитано 13.02.2020, 17:46
#9
Кулик Алексей aka kpblc
Moderator

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


Че-т у меня на ACAD2019x64 совсем другая ситуация:
Код:
[Выделить все]
 (progn (vlr-remove-all :vlr-sysvar-reactor)
       (setq count 0)
       (vlr-sysvar-reactor "dwg"
                           '((:vlr-sysvarchanged . sys-changed) (:vlr-sysvarwillchange . sys-willchange))
                           ) ;_ end of vlr-sysvar-reactor
       (defun sys-changed (react data) (princ (strcat "\n#" (itoa count) " Changed " (car data))))
       (defun sys-willchange (react data)
         (princ (strcat "\n#" (itoa (setq count (1+ count))) "Will change " (car data)))
         ) ;_ end of defun
       ) ;_ end of progn
Ничего не рисуя, просто кручу колесо и панорамирую:
Код:
[Выделить все]
#1Will change VIEWBACKSTATUS
#1 Changed VIEWBACKSTATUSRegenerating model.
Regenerating model.
Regenerating model.
Regenerating model.
В чем я ошибаюсь?

----- добавлено через ~2 мин. -----
Через какое-то время VIEWBACKSTATUS опять обновляется, но ни факт панорамирования, ни факт зуммирования не гарантируют ее моментальное изменение.

----- добавлено через ~8 мин. -----
Слегка поменял код, чтоб показать суть проблемы:
Код:
[Выделить все]
 (progn (vlr-remove-all :vlr-sysvar-reactor)
       (setq count 0)
       (defun fun_date-to-string (/ cdate)
         (setq cdate (getvar "cdate")
               cdate (rtos cdate 2 7)
               ) ;_ end of setq
         (strcat (substr cdate 1 4)
                 "."
                 (substr cdate 5 2)
                 "."
                 (substr cdate 7 2)
                 " "
                 (substr cdate 10 2)
                 ":"
                 (substr cdate 12 2)
                 ":"
                 (substr cdate 14 2)
                 ) ;_ end of strcat
         ) ;_ end of defun
       (vlr-sysvar-reactor "dwg"
                           '((:vlr-sysvarchanged . sys-changed) (:vlr-sysvarwillchange . sys-willchange))
                           ) ;_ end of vlr-sysvar-reactor
       (defun sys-changed (react data)
         (princ (strcat "\n#" (itoa count) " " (fun_date-to-string) " Changed " (car data)))
         ) ;_ end of defun
       (defun sys-willchange (react data)
         (princ
           (strcat "\n#" (itoa (setq count (1+ count))) " " (fun_date-to-string) " Will change " (car data))
           ) ;_ end of princ
         ) ;_ end of defun
       ) ;_ end of progn
Ну и лог:
Код:
[Выделить все]
Command:
#1 2020.02.13 17:52:26 Will change VIEWBACKSTATUS
#1 2020.02.13 17:52:26 Changed VIEWBACKSTATUSRegenerating model.
L
LINE
Specify first point:
Specify next point or [Undo]:
Specify next point or [Undo]:
Specify next point or [Close/Undo]:
Specify next point or [Close/Undo]:
Command: Regenerating model.
Regenerating model.
Regenerating model.
Regenerating model.
'_.zoom
Specify corner of window, enter a scale factor (nX or nXP), or
[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: _e Regenerating model.

Command: Regenerating model.
Regenerating model.
Regenerating model.
Regenerating model.

Command:
Command:
Specify center point for circle or [3P/2P/Ttr (tan tan radius)]:
Specify radius of circle or [Diameter]:
Command: Specify opposite corner or [Fence/WPolygon/CPolygon]:
Command:  CIRCLE

Specify center point for circle or [3P/2P/Ttr (tan tan radius)]:
Specify radius of circle or [Diameter] <132221.0792>:
Command:  CIRCLE

Specify center point for circle or [3P/2P/Ttr (tan tan radius)]:
Specify radius of circle or [Diameter] <177512.8587>:
Command:
#2 2020.02.13 17:53:03 Will change VIEWBACKSTATUS
#2 2020.02.13 17:53:03 Changed VIEWBACKSTATUSVLIDE
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.02.2020, 18:11
#10
kp+

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


Вчитался в ветку на theswamp, нашел что
Цитата:
not all Autocad's variables are managed by VLR-SYSVAR-REACTOR. I suppose VIEWCTR is among them...
Печаль
kp+ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не удается отследить "прозрачные" команды в AutoCAD 2019

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип видеокарты (поддержка DirectX или OpenGL) для AutoCAD 2019 Малюк AutoCAD 52 14.07.2022 13:49
Переключить русский autocad на английские команды zenija2007 AutoCAD 22 25.04.2018 13:11
Как в AutoCAD на Mac открыть диалоговое окно команды Purge? Geor9e AutoCAD 7 09.06.2017 07:08
Как в Autocad после выполнения команды оставить объект выделенным? life--inside AutoCAD 22 15.05.2015 15:12
После ввода команды снимается выделение с обьектов (AutoCAD 2010) fobof_13 AutoCAD 3 29.09.2010 20:00