2. Загрузка с помощью файлов Acad.lsp или AcadDoc.lsp

    Если вы не хотите реализовывать автоматическую загрузку своих .Net библиотек посредством внесения изменений в реестре, то можете сделать это посредством файла Acad.lsp (если желаете, чтобы сборка загружалась один раз, при запуске AutoCAD) или файла AcadDoc.lsp (если желаете, чтобы сборка загружалась в каждый открываемый вами документ).

    Привожу свой код, размещённый мною в файле AcadDoc.lsp для загрузки некоторой библиотеки в каждый открываемый мною документ (в данном варианте мы размещаем нашу библиотеку в общедоступном каталоге на сервере):

   1:  (defun-q HwdStartup()
   2:  (c:AcadLayoutsCountLoad)
   3:  )
   4:  ;;;Подгружаю .Net библиотеку...
   5:  (defun c:AcadLayoutsCountLoad()
   6:    (setq echo (getvar "cmdecho"))
   7:    (setvar "cmdecho" 0)
   8:    (setq fd (getvar "filedia"))
   9:    (setvar "filedia" 0)
  10:    (command "_netload" "\\\\hyprostroy/dfs/SystemFolder/tools/AutoCAD tools/AcadLibs/AcadLayoutsCount.dll")
  11:    (setvar "filedia" fd)
  12:    (setvar "cmdecho" echo)
  13:  )
  14:  ;;;Исключаю возможность перезаписи метода S::STARTUP...
  15:  (setq S::STARTUP (append S::STARTUP HwdStartup))

Примечание 1.

    Обратите внимание на то, что строка (setq S::STARTUP (append S::STARTUP HwdStartup)) стоит последней в коде. Если вы установите её первой, то автоматического выполнения функции c:AcadLayoutsCountLoad мы не получим!

Примечание 2.

    Файл Acad.lsp может загружаться как один раз, при открытии приложения, так и для каждого открываемого документа (т.е. вести себя как AcadDoc.lsp). Поведение данного файла определяется значением системной переменной ACADLSPASDOC, которая может принимать одно из следующих значений:
0 - Загрузка только при открытии первого чертежа в текущей сессии работы приложения AutoCAD
1 - Загружаться для каждого открываемого файла чертежа.

    Если вы желаете получить более подробную информацию по файлам Acad.lsp, AcadDoc.lsp, а так же по функции S:: STARTUP, найти её можно здесь.

Comments