Автоматизация проектирования

AutoLISP, DIESEL, Visual LISP и .NET: чем отличаются языки автоматизации AutoCAD и какой выбрать

2026-05-07 · 11 мин чтения · ЛЭНДПРОДЖЕКТ

# AutoLISP, DIESEL, Visual LISP и .NET: чем отличаются языки автоматизации AutoCAD и какой выбрать

Архитектор, который рисует руками всё подряд — нумерацию точек полигона, вынос координат, заполнение спецификаций, переименование блоков, простановку отметок — за день успевает в 3–5 раз меньше, чем коллега со скриптами. Поэтому на проектах ЛЭНДПРОДЖЕКТ значимая часть рутинных операций в AutoCAD автоматизирована: где-то это AutoLISP, где-то DIESEL-выражения в строках состояния, где-то — .NET-плагин, который AutoCAD вызывает по сетевому JSON-мостику.

Если вы только подступаетесь к автоматизации AutoCAD, легко запутаться: AutoLISP, Visual LISP, DIESEL, VBA, .NET, ObjectARX, plus всякие MIF/MID/DCL — что из этого «язык», что «формат данных», а что «среда»? В этой статье разложим по полочкам: чем отличаются макроязыки и среды программирования AutoCAD, что выбирать под конкретную задачу и где здесь место AI-агентов вроде Claude.

Зачем вообще автоматизировать AutoCAD

В архитектурно-проектной практике каждый разработанный лист РД содержит десятки повторяющихся операций. Часть из них — не «творчество», а механика:

Любая из этих задач, повторённая 50 раз вручную, — это часы потерянного времени и риск ошибки. Тот же объём, выполненный скриптом, занимает секунды и не ошибается. Поэтому в бюро, которое делает рабочую документацию серьёзно, автоматизация — не «фишка для гиков», а часть себестоимости.

Вопрос только в том, на чём писать.

Карта инструментов автоматизации AutoCAD

В AutoCAD исторически сложилось несколько слоёв автоматизации, каждый со своей нишей:

| Инструмент | Уровень | Скорость разработки | Возможности | Когда использовать |

|---|---|---|---|---|

| Скрипты `.scr` | Командная строка | Мгновенно | Минимальные | Простая последовательность команд |

| DIESEL | Строковые выражения | Быстро | Только текст и условия | Динамические подписи, статус-бар, поля |

| AutoLISP | Скриптовый язык | Средне | Высокие | Универсальный язык автоматизации |

| Visual LISP (VLISP) | Расширенный LISP | Средне | Очень высокие | Большие проекты, ActiveX, интеграции |

| VBA / VB6 | Объектная модель | Средне | Высокие | Совместимость со старыми проектами |

| .NET (ObjectARX-managed) | Полноценный API | Долго | Максимальные | Профессиональные плагины, GUI |

| ObjectARX (C++) | Низкоуровневый API | Очень долго | Максимальные | Системные расширения, высокая производительность |

| DCL | Описание диалогов | Быстро | Только формы | Окна для AutoLISP-приложений |

Дополнительно существуют форматы данных, которые иногда путают с языками: MIF/MID — это формат экспорта из MapInfo для GIS-данных, к программированию AutoCAD напрямую не относится; DXF — текстовое представление DWG для обмена; DWS — стандарты слоёв и стилей. Это не языки, это форматы.

Разберёмся подробнее с тем, что реально используется в продакшене проектного бюро.

DIESEL: маленький язык для динамических строк

DIESEL (Direct Interpretively Evaluated String Expression Language) — самый простой из «языков» AutoCAD. По сути это макроязык для вычислений внутри строк. Он не умеет ничего «делать» с чертежом — он только формирует текст.

Где DIESEL живёт:

Пример выражения DIESEL для отображения текущего слоя в строке состояния:

```

$(getvar,clayer)

```

Или более сложное условие — показать имя файла, если активен пространственный лист:

```

$(if,$(=,$(getvar,cvport),1),Лист: $(getvar,ctab),Модель)

```

DIESEL — это «клей». Когда нужно, чтобы поле в основной надписи штампа автоматически отображало масштаб видового экрана или имя текущего листа — задействуют именно его. Писать на DIESEL калькулятор площадей или нумератор точек — нельзя: язык не имеет циклов, переменных, функций для работы с примитивами чертежа. Только строки.

Когда выбирать DIESEL:

AutoLISP: рабочая лошадка автоматизации проектных бюро

AutoLISP — это диалект LISP, встроенный в AutoCAD ещё в 1986 году. Он остаётся главным языком автоматизации для проектировщиков и инженеров, потому что:

Минимальный пример — функция, которая выводит в командную строку количество выбранных объектов:

```lisp

(defun c:CountSel ( / ss)

(princ "\nВыберите объекты: ")

(setq ss (ssget))

(if ss

(princ (strcat "\nВыбрано: " (itoa (sslength ss)) " объектов."))

(princ "\nНичего не выбрано.")

)

(princ)

)

```

После загрузки этого файла в AutoCAD команда `COUNTSEL` уже доступна.

В реальной практике ЛЭНДПРОДЖЕКТ AutoLISP-скрипты решают такие задачи:

Один из наших скриптов — `ppt_modern.lsp` — добавляет в AutoCAD команды `PPT`, `PT`, `SPT`, `OPT`, `PMT2` для работы с координатными точками генплана. На крупных проектах посёлков это экономит десятки часов работы.

Главное преимущество AutoLISP перед более «продвинутыми» инструментами — низкий порог входа. Архитектор, который потратил выходные на изучение синтаксиса, через неделю уже пишет полезные команды. Visual Studio, .NET, проекты, dll, регистрация плагинов — всего этого не нужно.

Главный недостаток: код на AutoLISP с ростом сложности тяжело сопровождать. Когда скрипт достигает 1500–2000 строк, становится трудно отлаживать. Здесь уже стоит смотреть в сторону Visual LISP или .NET.

Visual LISP: AutoLISP «на стероидах»

Visual LISP (VLISP) — это надстройка над AutoLISP, появившаяся ещё во второй половине 1990-х. Она добавила:

С точки зрения языка — это всё тот же LISP, только с большим количеством встроенных функций (`vla-…`, `vlax-…`, `vl-…`).

Пример — установка слоя через ActiveX, что AutoLISP «по-старому» сделать не может:

```lisp

(defun c:SetLayerColor ( / *acad* doc layers layer)

(vl-load-com)

(setq *acad* (vlax-get-acad-object))

(setq doc (vla-get-activedocument *acad*))

(setq layers (vla-get-layers doc))

(setq layer (vla-item layers "АР_Стены"))

(vla-put-color layer 5)

(princ)

)

```

Когда выбирать Visual LISP:

VLISP — это эволюционное продолжение AutoLISP, не отдельный язык. Любой проект на чистом AutoLISP можно постепенно переводить на VLISP-функции по мере усложнения.

VBA: совместимость со старым кодом

VBA в AutoCAD — это та же Visual Basic for Applications, что в Excel и Word, только подключённая к объектной модели AutoCAD. Сейчас Autodesk считает VBA устаревшим: с 2010-х годов поддержка не развивается, начиная с AutoCAD 2025 VBA уже не входит в стандартный установщик и устанавливается отдельным пакетом Enabler.

Тем не менее VBA до сих пор живёт во многих бюро по двум причинам:

Объективно: если вы начинаете проект автоматизации с нуля в 2026 году — VBA брать не нужно. Берите AutoLISP для быстрых задач или .NET для серьёзных.

.NET (ObjectARX managed): профессиональный API

.NET-API в AutoCAD — это управляемая обёртка над низкоуровневым ObjectARX. Пишется на C# или VB.NET, компилируется в DLL, загружается командой `NETLOAD` или через автостарт.

Что даёт .NET по сравнению с AutoLISP:

Минус: порог входа существенно выше. Нужно знать C#, разобраться с типизацией ObjectARX, понимать жизненный цикл транзакций и блокировок документа, настроить проект с правильными ссылками (`AcCoreMgd.dll`, `AcDbMgd.dll`, `AcMgd.dll`), уметь распространять и регистрировать плагин.

Реальный пример из практики ЛЭНДПРОДЖЕКТ — `AutoCADBridge.cs`. Это плагин, который превращает AutoCAD в сетевой сервис: процесс на рабочем ПК с AutoCAD опрашивает файл `command.json`, выполняет произвольные C# или AutoLISP-инструкции из него и пишет результат в `result.json`. Это позволяет нашему AI-агенту, работающему на удалённом сервере, удалённо управлять чертежом — открывать DWG, редактировать примитивы, экспортировать в PDF, не имея прямого доступа к AutoCAD.

Когда выбирать .NET:

ObjectARX (C++): когда .NET недостаточно

ObjectARX — это нативный C++ SDK для AutoCAD. Его используют:

В большинстве проектных бюро ObjectARX не нужен. .NET закрывает 99% задач, а оставшийся 1% — это нишевые продукты Autodesk-партнёров.

DCL: окна диалогов для AutoLISP

DCL (Dialog Control Language) — это не язык программирования, а декларативный язык описания диалоговых окон. Использовался вместе с AutoLISP/Visual LISP до появления нормальных GUI в .NET.

Пример простого DCL:

```

sample : dialog {

label = "Параметры скрипта";

: edit_box {

label = "Шаг точки:";

key = "step";

edit_width = 10;

}

ok_cancel;

}

```

Сегодня DCL живёт в legacy-скриптах. Для нового кода — либо принимать параметры через командную строку (DOSLib, getreal/getstring), либо переходить на .NET с WPF/WinForms.

А куда здесь нейросети?

В 2025–2026 годах в автоматизацию AutoCAD стремительно ворвались AI-агенты. Логика следующая:

Это значит, что вместо того чтобы выбирать «один язык на всю жизнь», современный архитектор выбирает связку «AI-агент + язык-исполнитель»:

ЛЭНДПРОДЖЕКТ применяет такой подход в производстве: AI-агент на базе Claude отвечает за рутинную автоматизацию — генерирует и тестирует скрипты, разбирает архивы DWG, переоформляет легаси-чертежи. Архитекторы получают вычитанные команды, которые нужно только загрузить.

Что выбрать: рекомендации по сценариям

«Хочу за пару дней начать автоматизировать рутину».

AutoLISP. Минимальный порог входа, тысячи примеров онлайн, любой современный AI-ассистент пишет на нём свободно. Этого хватит для 70% задач рядового архитектора.

«Нужна динамическая подпись на штампе или поле в основной надписи».

DIESEL. Никаких других вариантов не нужно — это его прямая ниша.

«Развиваю старый проект на AutoLISP, который вырос до 3000 строк».

Visual LISP. Подключите IDE с отладчиком, разнесите код по модулям, при необходимости собирайте в `.vlx`.

«Делаю плагин для всего бюро или на продажу».

.NET (C#). Это инвестиция, но окупится: сопровождать .NET-проект в долгую дешевле, чем скрипты-портянки. И GUI приличный.

«Хочу, чтобы AI-агент сам управлял AutoCAD».

Связка .NET-bridge + AutoLISP. Bridge выполняет команды, AutoLISP генерится моделью на лету, .NET занимается транспортом и валидацией.

«Унаследовал базу макросов VBA».

Поддерживайте, но не развивайте. Новые задачи — на AutoLISP или .NET. Postupенно мигрируйте критичный функционал.

Частые заблуждения

«LISP — устаревший язык, надо сразу учить .NET».

Нет. AutoLISP — это рабочий продакшен-инструмент 2026 года. Просто потому что он встроен, лёгкий, идеально подходит под нишевые задачи и его понимают LLM. Многие старшие архитекторы ЛЭНДПРОДЖЕКТ не знают C#, но эффективно пишут лисп.

«DIESEL и LISP — это одно и то же».

Совершенно разные вещи. DIESEL — это макрос строки. LISP — это полноценный язык со списками, функциями, условиями, циклами и доступом к чертежу.

«MIF/MID — это какой-то макроязык AutoCAD».

Нет. MIF/MID — это формат экспорта из MapInfo для GIS-данных. К программированию AutoCAD напрямую отношения не имеет, хотя некоторые проектировщики обрабатывают такие файлы для подложки генплана.

«Если использовать AI, то сами языки знать уже не надо».

Знать на уровне «прочитал код и понял, что он делает» — обязательно. AI-агент может сгенерировать рабочий скрипт, но за результат отвечает инженер. Он же отвечает за то, что скрипт не удалит важный слой и не превратит чертёж в кашу.

Заключение

Языки автоматизации AutoCAD — это спектр инструментов от простейших макросов DIESEL до полноценных .NET-плагинов с GUI. Не существует «правильного» одного языка: AutoLISP закрывает базовые потребности любого архитектора, DIESEL — динамические поля, Visual LISP — серьёзные проекты со сложной логикой, .NET — продукты для всего бюро. AI-агенты сегодня снимают порог входа в каждый из них: достаточно сформулировать задачу, и Claude или GPT сгенерирует рабочий скрипт.

ЛЭНДПРОДЖЕКТ ведёт автоматизацию AutoCAD на проектах посёлков, жилых комплексов, общественных зданий и интерьеров с 2014 года. Если у вас есть рутинная операция в AutoCAD, которую вы повторяете десятки раз в день, — мы можем оценить и автоматизировать её под ваш процесс. Напишите на mail@landproject.net, опишите задачу, получите расчёт.

Обсудить ваш проект

Расскажите о задаче — предложим решение за 24 часа

Оставить заявку

📐 Подписывайтесь на канал ЛЭНДПРОДЖЕКТ в MAX →