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

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

Макрос и сохранение

Ответ
Поиск в этой теме
Непрочитано 23.06.2011, 11:36 #1
Макрос и сохранение
Yanic
 
Регистрация: 30.05.2011
Сообщений: 7

Добрый день!
В срочном порядке пришлось написать макрос под автокад. С трудом удалось разобраться в VBA, написать и прикрутить его к кнопке. Работает, рисует что надо. Но проблема, что макрос теперь встраивается в проект. И при открытии файла естественно спрашивает про макросы.
Варианты "нажать на отключить макросы" и "удалить макрос при сохранении" мне не подходят. Так как целевая аудитория не разбирается в таких сложных словах. Поэтому вопрос: как сделать, чтобы макрос автоматически загружался при открытии автокада, но не присоединялся к файлу при закрытии?
Просмотров: 8140
 
Непрочитано 23.06.2011, 18:44
#2
kp+

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


Сохранить в отдельный dvb-файл, закинуть в автозагрузку - не оно? PS работаю в Акад 2009, что там в 2012 - не знаю.
Вроде в версиях начиная с 2010 вообще мрак - надо отдельно загружать и ставить модуль VBA...жесть
kp+ вне форума  
 
Непрочитано 23.06.2011, 19:45
#3
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 805
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
- надо отдельно загружать и ставить модуль VBA...жесть
я пробовал так и этак без vba кад веселее бегает.
perpetule вне форума  
 
Непрочитано 23.06.2011, 20:40
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Эти ваши макросы могут серьезно повредить систему в плоть до отказа запускаться вообще... Естественно AD пердупреждает вас об опасности, но если вы достаточно глупы или достаточно рискованны или достаточно уверенны в своих макросах , можете установить уровень низкий безопасности макросов а также снять галку в окне свойства (кнопка свойства (options)) окна Макросы (macros)
gomer вне форума  
 
Автор темы   Непрочитано 24.06.2011, 10:15
#5
Yanic


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


Попробую написать понятнее.
Автокад стоит 2008, макрос в отдельном отдельный dvb-файле, автоматически подгружается к проекту. Всё так и есть. Так вот задача, чтобы он так же автоматически и выгружался при закрытии.
Gomer, что Вы имеете ввиду на счёт повреждения системы? Галку в окне свойства я сняла. У себя на компьютере! Но я же не могу бегать в другие отделы и снимать галки у них )))
Если я сильно путано объясняю, то спишите это на не совсем пока понимание мной предмета. Программирую под автокад впервые
Yanic вне форума  
 
Непрочитано 24.06.2011, 10:18
#6
hwd

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


Цитата:
Сообщение от Yanic Посмотреть сообщение
Программирую под автокад впервые
Offtop: Может лучше сразу переходить на dotnet?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 24.06.2011, 10:30
#7
Yanic


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


Цитата:
Сообщение от hwd Посмотреть сообщение
Может лучше сразу переходить на dotnet?
Может и лучше, но потом. Сейчас ввиду срочности дела использую те возможности, которые у меня есть. А это VBA!
Yanic вне форума  
 
Непрочитано 24.06.2011, 17:57
1 | #8
TararykovDG

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


Цитата:
Сообщение от Yanic Посмотреть сообщение
...макрос в отдельном отдельный dvb-файле, автоматически подгружается к проекту. Всё так и есть. Так вот задача, чтобы он так же автоматически и выгружался при закрытии.
Yanic, можно попробовать реализовать с помощью реактора на закрытии файла по средствам lisp'а
Код:
[Выделить все]
 
; ----------------------------------------------------------------------------
(defun commandEnded(reac data / ) ; конец какой-то комады ACad
  (if (member (car data) (list "QUIT" "_QUIT" "CLOSE" "_CLOSE")) ; если это была команда выход или закрыть
    (vl-catch-all-apply 'vla-UnloadDVB ; выгружаем dvb-приложение (что-то не знаю как проверить загружен ли dvb-файл в чертеж, поэтому просто обернул выгрузку в обработчик ошибок)
      (list (vlax-get-acad-object)
	    (findfile path_dvb) ; здесь вместо path_dvb нужно указать путь до dvb-файла, наример: C:\\***.dvb
	    )
      )
    )
  ); end commandEnded
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
(setq Cmnd_Reac (vlr-command-reactor "Реактор команд: "
		  (list '(:VLR-commandEnded . commandEnded)
			)
		  )
      )
; -----------------------------------------------------------------------------


P. S. Yanic, в силу этого
Цитата:
Сообщение от Yanic Посмотреть сообщение
Сейчас ввиду срочности дела использую те возможности, которые у меня есть. А это VBA!
поясню, что данный код надо сохранить в lisp-файл (например: AutoUnloadDVB.lsp), а сам файл обязательно добавить в автозагрузку:
Меню "Сервис" -> "Приложения". В появившемся окне "Загрузка/выгрузка приложений" нажать кнопку "Приложения" в области "Автозагрузка" (где чемодан нарисован). Нажать кнопку "Добавить" и указать файл AutoUnloadDVB.lsp
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 27.06.2011, 10:01
#9
Yanic


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


Спасибо большое за подробный и ясный ответ! Буду пробовать!
У меня была идея через обработчик ошибок попробовать, но я ещё не разобралась до конца Так что надеюсь, что Ваш метод поможет!
Yanic вне форума  
 
Непрочитано 27.06.2011, 10:31
#10
TararykovDG

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


Цитата:
Сообщение от Yanic Посмотреть сообщение
Спасибо большое за подробный и ясный ответ! Буду пробовать!
У меня была идея через обработчик ошибок попробовать, но я ещё не разобралась до конца Так что надеюсь, что Ваш метод поможет!


Yanic, вот тогда сначала попробуйте, а потом спасибо говорите. У меня на ACAD2008 работает, так что если будут какие-то проблемы говорите, думаю что разрешим. У этого метода есть один важный момент, если Вы попытаетесь закрыть или сохранить текущий чертеж, а в ответ на запрос "Сохранить изменения ..." нажмете "Отмена" (т. е. продолжите работу с чертежом), то код все равно отработает и dvb-файл будет выгружен.
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 28.06.2011, 18:01
#11
Yanic


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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
вот тогда сначала попробуйте, а потом спасибо говорите.
Теперь говорю спасибо по факту. Заработало! Правда я всё-таки обошлась без лиспа, но за основу взяла Вашу идею. Поставила кнопку коллегам, все счастливы, радуются, работа ускорилась в разы
И с чувством выполненного долга отправляюсь в отпуск. Надеюсь, что ничего не сломается )))
А уж по приезду будет и lisp и dotnet
Yanic вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос и сохранение



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Расчет ведомости отправочного элемента. Макрос VBA Excel." Вопросы и ответы по програмке. Brain Murder Программирование 4 13.12.2010 18:42
Макрос для объединения отрезков в полилинию Mazai Программирование 17 01.09.2010 16:51
Как закончить макрос ^C^C_offset; 0.5; ? _SIMAS_ AutoCAD 15 06.11.2009 13:59
Макрос для удаления всех объектов в выбранном слое 6aman4ik Программирование 9 26.06.2009 00:26
Помогите сделать макрос для автокада Sky_cool Программирование 8 17.01.2009 03:04