Тема: Зависает AutoCAD при загрузке VBA проекта

Приветствую Вас, уважаемые знатоки!
Не поможете ли с разобраться пустяковой проблемкой:
необходимо при загрузке AutoCAD запустить VBA-макрос, делаю это с помошью файла mnl (command "-vbarun"...). При этом при открытии одиночного файла загрузка происходит нормально, а при открытии нескольких одновременно периодически происходит зависание AutoCAD с сообщением в строке

Команда: Инициализация системы VBA..._.VBARUN

Далее остается только снять задчу из диспетчера...
Помогите найти причину и решить проблему..
Спасибо!!!

Re: Зависает AutoCAD при загрузке VBA проекта

Причина в подгружаемом коде.

Re: Зависает AutoCAD при загрузке VBA проекта

код простейший, выводит UserForm, содержащий кнопки CommandButton с некоторой информацией..

Public Sub sbscale()
    UserForm2.Show
End Sub

вот и все..

Re: Зависает AutoCAD при загрузке VBA проекта

При открытии файла (хоть через окно, хоть через .Open) запускается на выполнение весь код, прописанный в автозагрузке. Форма открывается модально, то есть она сначала должна быть закрыта, а потом продолжена загрузка файла. Вот acad и "клинит"...

Re: Зависает AutoCAD при загрузке VBA проекта

и как же быть? Исключить макрос из автозагрузки и загружать вручную после открытия файла? или все-же есть какой-то способ?

Re: Зависает AutoCAD при загрузке VBA проекта

Я не знаю, есть ли в VBA аналог внедокументных переменных.
Когда у меня в лиспе возникла аналогичная ситуация (кстати, выполнение кода, может, на lsp повесить?), я начал использовать vl-bb-ref и vl-bb-set для работы с внедокументными переменными. В такую переменную засовывается какое-то значение, которое при загрузке lsp и анализируется (например, у меня - показ окна предупреждения; вызывается только один раз в течении 1 сессии AutoCAD'a).

Re: Зависает AutoCAD при загрузке VBA проекта

попробовал автозапуск:

Private Sub AcadDocument_Activate()
UserForm2.Show
End Sub

Пока проблем нет..

Re: Зависает AutoCAD при загрузке VBA проекта

однако все-же зависает...

Re: Зависает AutoCAD при загрузке VBA проекта

Я бы, наверное, делал примерно так:

(defun autoload ()
  (vl-load-com)
  (if (not (vl-bb-ref '*apploaded*))
    (progn
      (vl-vbaload "c:\\myprojects\\vbproject\\project.dvb")
      (vl-vbarun "ModuleName.SubName")
      (vl-bb-set '*apploaded* t)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
(autoload)

Естественно, поменять пути к dvb, имена модулей и процедур. Файл засунуть в автозагрузку или mnl.

Re: Зависает AutoCAD при загрузке VBA проекта

Тьфу ты, не файл, а код, конечно же

Re: Зависает AutoCAD при загрузке VBA проекта

> Кулик Алексей aka kpblc
Я не знаю, есть ли в VBA аналог внедокументных переменных.

Да все есть и все можно по принципу - если нельзя, но очень хочется.
Например:

Sub SetVariable()
    ThisDrawing.SetVariable "DONUTOD", 37
    MsgBox ThisDrawing.GetVariable("DONUTOD")
End Sub

Кроме того, кто запрещает пользоваться реестром?

Re: Зависает AutoCAD при загрузке VBA проекта

> LeonidSN
представь себе - у тебя в реестре при старте системы записывается какая-то информация. Ты работаешь, никого не трогаешь. В один прекрасный момент acad говорит "АААА!! Fatal error бла-бла-бла". и со свистом улетает. Информация осталась записанной? Следовательно, каким будет следующий старт системы? Правильно, некорректным.
Именно поэтому я отказался от внешних хранилищ подобных вещей.

Re: Зависает AutoCAD при загрузке VBA проекта

> Кулик Алексей aka kpblc
От чего же? Запускайте АКАД "не напрямую", а через exe-шник, который при старте чего-то, где-то пишет и запускает процесс. После благополучно дожидается его завершения и потом "убирается" за собой. И пусть АКАД говорит хоть "бла-бла-бла", хоть "ля-ля-ля".

Re: Зависает AutoCAD при загрузке VBA проекта

> bender
У меня почему-то ощущение, что это вариант "в Москву из Твери через Магадан". Логически аргументировать не могу :(

Re: Зависает AutoCAD при загрузке VBA проекта

> Кулик Алексей aka kpblc
Я имел в виду те записи в реестр, которые создает и читает VB(VBA) в ветке -
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\APPNAME\SECTION\KEY
с помощью методов:
GetSetting
SaveSetting
Мы ведь ведем разговор о VBA...
В таком случае эти записи будут учитываться не при любом запуске ACAD вообще, а только при запуске с загруженным Приложением уважаемого НЮК и с соответствующим mnl-файлом. Ну а что ты пишешь и как это использовать, тут уж важна партийная совесть автора-программиста....

Re: Зависает AutoCAD при загрузке VBA проекта

Кулик Алексей aka kpblc пишет:

У меня почему-то ощущение, что это вариант "в Москву из Твери через Магадан". Логически аргументировать не могу :(

:=) См. "САПР на базе AutoCAD - как это делается". Там все подробно написано... И логически обосновано.

Re: Зависает AutoCAD при загрузке VBA проекта

Кулик Алексей aka kpblc пишет:

с помощью методов:
GetSetting
SaveSetting
Мы ведь ведем разговор о VBA...

А кто запрешает пользоваться WinAPI?

Re: Зависает AutoCAD при загрузке VBA проекта

> bender
Никто