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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как автоматически выполнить команду после полной инициализации интерфейса AutoCAD 2012?

Как автоматически выполнить команду после полной инициализации интерфейса AutoCAD 2012?

Ответ
Поиск в этой теме
Непрочитано 02.06.2011, 18:46 #1
Как автоматически выполнить команду после полной инициализации интерфейса AutoCAD 2012?
lexluther
 
Регистрация: 19.03.2009
Сообщений: 51

Всем привет,

Как автоматически выполнить лисп команду после полной инициализации интерфейса AutoCAD 2012? Т.е. у нас есть файл acaddoc.lsp но он выполняется до вызова _RIBBON комманды. Надо выполнить что то после.

С уважением.
Просмотров: 5194
 
Непрочитано 02.06.2011, 20:16
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Ты можешь обработать реактор AcEditorReactor.commandWillStart(). Он будет сообщать тебе, когда и какая команда была выполнена и если это была _RIBBON - выполняшь свой код, отписавшись от обозначенного реактора за ненедобностью дальнейшего мониторинга.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 02.06.2011, 20:44
#3
lexluther


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


Спасибо за ответ! А как это можно сделать из лиспа? Т.е. у меня есть файл acaddoc.lsp что мне надо вписать в скрип который я гружу на старте?
lexluther вне форума  
 
Непрочитано 02.06.2011, 20:56
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от lexluther Посмотреть сообщение
Спасибо за ответ! А как это можно сделать из лиспа? Т.е. у меня есть файл acaddoc.lsp что мне надо вписать в скрип который я гружу на старте?
я не пишу на лиспе, а код на C# тебе вряд ли поможет. Погоди немного и тебе напишут пример.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 03.06.2011, 09:05
#5
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


lexluther, попробуй так, правда я не проверял, так как у меня ACAD2008 и ленточного интерфейса там нет, а соответственно и команды ribbon.
Добавь этот код в acaddoc.lsp или в свой созданный файл *.lsp, который добавь в автозагрузку.

Код:
[Выделить все]
 
; Функции действия
; используем этот реактор если надо что-то выполнить до выполнения команды
(defun commandWillStart(reac data / ) ; старт какой-то комады ACad
  (if (member (car data) (list "RIBBON" "_RIBBON")) ; если это была команда RIBBON
    (progn
      (...) ; здесь пиши свой лисп код
      (vlr-remove Cmnd_Reac) ; отключаем наш реактор после первого же выполнения, если необходимо
      			     ; чтобы реактор срабатывал при каждом вызове комады RIBBON - эту строчку надо закомментировать
      ) ; здесь пиши свой лисп код
    )
)

; используем этот реактор если надо что-то выполнить после выполнения команды
(defun commandEnded(reac data / ) ; конец какой-то комады ACad
  (if (member (car data) (list "RIBBON" "_RIBBON")) ; если это была команда RIBBON
    (progn
      (...) ; здесь пиши свой лисп код
      (vlr-remove Cmnd_Reac) ; отключаем наш реактор после первого же выполнения, если необходимо
      			     ; чтобы реактор срабатывал при каждом вызове комады RIBBON - эту строчку надо закомментировать
      )
    )
)


; Создаем реактор
; ---------------------------------------------------------
(setq Cmnd_Reac (vlr-command-reactor "Реактор команд: "
		  (list '(:VLR-commandWillStart . commandWillStart)
			'(:VLR-commandEnded . commandEnded)
			)
		  )
      )
; ----------------------------------------------------------
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.07.2011, 12:43
#6
Tonic


 
Регистрация: 26.06.2007
Воронеж
Сообщений: 151


Проблема актуальна именно в версии 2012: в предыдущих хоть и был ленточный интерфейс, строки из acaddoc.lsp грузились тогда, когда надо.
TararykovDG, многовато строк для загрузочного файлика.
Как решить эту проблему ещё? К примеру, она исчезает, если первой строкой в acaddoc.lsp будет (alert ""), но это глупость, конечно.
Tonic вне форума  
 
Непрочитано 13.04.2018, 12:41
#7
Krapivnik


 
Регистрация: 04.11.2008
Город П
Сообщений: 616


Цитата:
Сообщение от lexluther Посмотреть сообщение
Всем привет,

Как автоматически выполнить лисп команду после полной инициализации интерфейса AutoCAD 2012? Т.е. у нас есть файл acaddoc.lsp но он выполняется до вызова _RIBBON комманды. Надо выполнить что то после.

С уважением.
Просто вызовите ленту перед исполнением своих функций в acaddoc.lsp (добавьте (command "_RIBBON") перед ними).
Krapivnik вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как автоматически выполнить команду после полной инициализации интерфейса AutoCAD 2012?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интеграция Autodesk СПДС в AutoCAD 2012 bolotov Прочее. Программное обеспечение 24 07.01.2013 20:22
AutoCad 2011. Файлы сразу автоматически закрываются после открытия. alexandrius AutoCAD 10 10.10.2011 10:23
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
Полное зависание Autocad 2008 LT после загрузки программы Zaverra AutoCAD 3 03.06.2009 12:29