(изменено: forMA, 21 апреля 2011г. 19:55:16)

Тема: Как запустить программу на LISP из VBA

Как запустить программу на LISP из VBA?

Дико извиняюсь, может где- то и был вопрос с ответом.

Re: Как запустить программу на LISP из VBA

VBA: ThisDrawing.SendCommand "MyLISP"
LISP: (defun C:MyLISP (/))

(изменено: forMA, 21 апреля 2011г. 22:22:03)

Re: Как запустить программу на LISP из VBA

LeonidSN,
А, можно с комментариями? Чего- то я недопонимаю во второй строке.

Re: Как запустить программу на LISP из VBA

Во второй строке, как пример, начало функции Lisp'a MyLISP.
Т.е. если в чертеж, до запуска программы VBA, была загружена функция MyLISP, то ее вызов из VBA:
ThisDrawing.SendCommand ("MyLISP ")

А если не была загружена, то ее сначала надо загрузить через ту-же SendCommand.

А если надо, чтобы после завершения функции Lisp, программа VBA продолжила работу, то надо организовать цикл, запустить в цикле функцию Lisp, которая должна при своем завершении что-то сделать, что явится признаком выхода из цикла.

Re: Как запустить программу на LISP из VBA

Anatoly пишет:

Во второй строке, как пример, начало функции Lisp'a MyLISP.

Да. А чтобы LISP-функция воспринималась как команда AutoCAD'а перед ее именем ставится "C:".

Re: Как запустить программу на LISP из VBA

Разобрался. Большое спасибо. Правда, забыл спросить о том как корректно в VBA загрузить саму LISP программу.

Re: Как запустить программу на LISP из VBA

Например

comStr = "(if (null my_lsp_function) (load " & Chr(34) & "my_lsp_file" & Chr(34) & "))"
ThisDrawing.SendCommand comStr & vbCr

где my_lsp_funct - это функция, которая находится в файле my_lsp_file.lsp
причем, если файл лежит не в путях поддержки автокада, то вместо my_lsp_file надо указать полный путь типа С:/.../.../my_lsp_file

Re: Как запустить программу на LISP из VBA

Anatoly,

Спасибо