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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не работает вызов макроса VBA из lisp-файла командой vl-vbarun

Не работает вызов макроса VBA из lisp-файла командой vl-vbarun

Ответ
Поиск в этой теме
Непрочитано 11.09.2022, 10:15 #1
Не работает вызов макроса VBA из lisp-файла командой vl-vbarun
noname1324
 
Регистрация: 11.09.2022
Сообщений: 1

Друзья, добрый день

Столкнулся со следующей проблемой. Не работает вызов макроса VBA из файла autolisp с помощью функции vl-vbarun.
Мной подготовлены файлы acaddoc.lsp и acad.dvb. В первом лежат запросы autoload и некоторые функции для вызова макросов VBA. Во втором – макросы, которые вызываются через функции в первом файле (acaddoc.lsp). Причем если вызывать макрос через команду "_-vbarun" функция в макросе выполняется!

Приведу пример кода из файла acaddoc.lsp
Код:
[Выделить все]
(vl-load-com)
(defun c:call_dvb_func_1 ()
(vl-vbaload "d:/acad_files/acad.dvb")
(vl-vbarun "ACADProject.TC_DWG_TEST.TestFunc")
)

(defun c:call_dvb_func_2 ()
(command "_-vbarun" "d:/acad_files/acad.dvb!ACADProject.TC_DWG_TEST.TestFunc")
)
В приведенном коде в функции «call_dvb_func_1» код макроса не загружается и не выполняется. В результате вызова возвращается значение Т. Второй код работает без проблем.

И да сразу оговорюсь, что указанная проблема наблюдается только на одном (!) личном домашнем компьютере. Все файлы lisp и dvb хранятся на флешке и безошибочно работают на всех компьютерах организации.

В некоторых источниках встретил указание о том, что директорию с файлом dvb нужно добавить в доверенные источники. И тут тоже впервые столкнулся со следующей проблемой. При добавлении папки вызывает такое окно (см. вложение).
"Путь поиска доверенного файла. Указанное местоположение доступно только для чтения"
Нажмите на изображение для увеличения
Название: 2022-09-11_091540.png
Просмотров: 4
Размер:	5.5 Кб
ID:	249812


Единственная ситуация похожая на мою была встречена здесь:
https://forums.autodesk.com/t5/vba/p...n/td-p/7904535

Подскажите в чем может быть дело? Почему вызов vl-vbarun может не работать?

----- добавлено через ~3 ч. -----
Друзья, в дополнение к первому сообщению. Нашел еще один способ загрузки, описанный здесь

https://www.afralisp.net/archive/met...cro_method.htm

Код:
[Выделить все]
(defun c:call_dvb_func_3 ()
  (vl-load-com)
  (setq applic (vlax-get-acad-object))
  (vla-RunMacro applic "d:/acad_files/acad.dvb!ACADProject.TC_DWG_TEST.TestFunc")
  (princ)
)
Макрос запускается как нужно. Не могу понять в чем дело, предполагал, что по какой-то причине vl*функции не работают, но vl-vbarun не запускает макрос, а vla-RunMacro работает.

Тогда в чем может быть отличие двух этих функций?
С виду и первый и второй работают одинаково

Help по vl-vbarun:
https://help.autodesk.com/view/OARX/...4-03B4CD29973B

Help по vla-RunMacro:
https://help.autodesk.com/view/OARX/...B-5E9D6952C707

Просмотров: 358
 
Непрочитано 11.09.2022, 13:57
#2
Сергей812


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


Цитата:
Сообщение от noname1324 Посмотреть сообщение
С виду и первый и второй работают одинаково
не сказал бы

vl-vbarun - Name of a macro in a loaded VBA project.

RunMacro - The Filename.dvb specified will be loaded if it is not already loaded. If the path to the Filename.dvb is not specified, the AutoCAD search path is searched to locate the file. If ProjectName is not specified, all currently loaded projects are searched to locate the macro.

т.е. первый метод пытается выполнить макрос из уже загруженного проекта, второй метод совершает попытки найти макрос с загрузкой проекта и также ищет по всем загруженным уже проектам.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не работает вызов макроса VBA из lisp-файла командой vl-vbarun

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает lisp на autocad 2014. Lisp предназначен для изменения порядкового номера листа vladykinalex LISP 17 25.05.2020 21:09
Выполнение макроса после открытия файла rtyu Программирование 9 16.02.2016 21:26
Lisp копирование файла в директорию support autocad olga87 LISP 5 19.05.2014 09:18
AutoCAD не закрывается командой из пакетного файла. Почему? AlphaGeo AutoCAD 6 05.06.2013 19:01
Не работает сохранение файла Alexfoto333 AutoCAD 4 01.08.2007 23:14