Arhn - архитектура программирования

Автоматизация сборки для файлов AutoCAD Lisp

У меня есть огромный проект LISP, я сделал файл prv, который позволяет VLIDE компилировать этот проект в один файл vlx (он также компилирует файл fas). Проблема в том, что невозможно скомпилировать проект вне Autocad или из командной строки, поэтому я не могу автоматизировать сборку vlx с помощью скрипта.

Вопрос в следующем: есть ли способ сделать это? Могу ли я скомпилировать fas-vlx не из автокада? Или я могу запустить автокад с помощью скрипта, который компилирует prv, а затем закрывает автокад?


Ответы:



2

Имейте в виду, что это немного Руби Голдберг. но это работает!

Я буду демонстрировать с Autocad 2014.

Сначала вам нужно будет создать файл сценария Autocad, который содержит некоторые недокументированные команды. Я назвал свой build.scr

(Обратите внимание, что vlisp-compile-list нигде не задокументирован. Если вы найдете какую-либо документацию, сообщите мне об этом!)

vlide
(
  vlisp-compile-list 
    'st 
    (
      list 
        (strcat (getenv "UserProfile") "\\Documents\\AutocadFiles\\gui.lsp"))
            ...

    ) 
  (strcat (getenv "UserProfile") "\\Documents\\AutocadFiles\\CompiledLisp.fas")
)

Затем создайте пакетный файл, содержащий это:

@echo off
cd c:\Program Files\Autodesk\AutoCAD 2014
start acad.exe /b build.scr

Он запускает AutoCAD и запускает указанный скрипт

затем вам нужно будет загрузить и установить AutoHotKey.

и создайте для него такой скрипт:

Run, BuildLisp.bat

sleep, 30000

WinActivate, Autodesk AutoCAD 2014 - [Drawing1.dwg]

WinActivate, Visual LISP for AutoCAD <Drawing1.dwg>

WinActivate, Autodesk AutoCAD 2014 - [Drawing1.dwg]

sleep, 10000

WinClose, Autodesk AutoCAD 2014 - [Drawing1.dwg]

При активации этого скрипта. Он должен открыть AutoCAD и собрать все ваши файлы LSP в один .FAS, а затем закрыть.

Кое-что, чтобы отметить. Редактор Visual LISP должен быть открыт для компиляции. Компиляция произойдет только при активации окна.

Если кто-то найдет лучший способ. Пожалуйста, дайте мне знать!

18.03.2014
  • разве это решение не создает только файл .fas, а не .vlx? 19.03.2014

  • 3

    После некоторых тестов здесь я, наконец, смог сделать его немного быстрее и проще в использовании.

    В командной строке вызовите autocad с некоторыми параметрами запуска. Вам понадобится пустой чертеж, назовите его dummy.dwg. /b обозначает сценарий, который вы запустите:

    "C:\Program Files\Autodesk\AutoCAD 2019\acad.exe" "C:\somefolder\dummy.dwg" /nologo /nossm /b "C:\somefolder\CompileLispProjects.scr"
    

    Внутри файла .scr:

    ;;MAKE VLISP OPEN BUT LET AUTOCAD ACTIVE. YOU NEED VLISP OPEN TO LOAD VLISP-* FUNCTIONS
    (C:VLIDE T)
    
    ;; TRY TO RUN VLISP-MAKE-PROJECT FUNCTION
    (setq errobj (vl-catch-all-apply 'function-which-will-use-vlisp-make-project-fas))
    
    ;; IF ANY ERROR COMES OUT, STOP AND ALERT
    (if (vl-catch-all-error-p errobj)
      (progn
        (princ "\n***ERROR COMPILING SOMETHING***\n")
        (princ (vl-catch-all-error-message errobj))
        (princ)
      );_progn
    
      ;; ALL GOOD, QUIT AUTOCAD
      (progn
        ;; THERE'S A SAFE LOCK IN QUIT COMMAND, SO SAVE A DUMMY FILE AND QUIT AGAIN WITH IT SAVED
        (command-s "._QUIT" "_N" "")
        (command-s "._QUIT" "")
      );_progn
    );_if
    
    ;; IT'S IMPORTANT TO HAVE THE LAST LINE EMPTY (<ENTER>)
    

    Трюк в этом коде - (C:VLIDE T). Он не задокументирован, и я нашел его, потому что знаю, что в AutoLISP есть много недокументированных функций. Попробуйте это и с nil, вы увидите, что VisualLISP будет активным окном, блокируя ваш AutoCAD для выполнения следующих команд (поэтому вам нужно будет щелкнуть где-нибудь в AutoCAD, чтобы активировать его окно и заставить код работать правильно) .

    Примечание. Когда AutoCAD закрывается, возможно, ваше окно VisualLISP останется на некоторое время, не пытайтесь активировать его. Пусть это будет несколько секунд, и он закроется сам по себе.

    25.09.2018
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..