Комплект инструментов СПИС для AutoCAD 2020+: сборка комплекта дисциплин (SPISRUNSETS), подключение внешних ссылок (SPISATTACHSETS) и обслуживание ссылок (XRLIST/XRBIND/XRBIND1/XRPATH/XRUNBIND/XRDETACH). LISP + Python (COM) + инструкция.

@Oleg Oleg authored 21 days ago
README.md Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPISHELP.lsp Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPISHELP.lsp.utf8 Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPIS_RUN_SETS.lsp Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPIS_RUN_SETS.lsp.utf8 Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPIS_SYSTEM_SETS.lsp Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPIS_SYSTEM_SETS.lsp.utf8 Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPIS_TOOLS.lsp Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
SPIS_TOOLS.lsp.utf8 Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
XRBIND.lsp Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
XRBIND.lsp.utf8 Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
XRCOPYVISIBLE.lsp Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
XRCOPYVISIBLE.lsp.utf8 Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
__pycache__-20261006T160044Z-1-001.zip Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
build_discipline_sets.py Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
run_sets_launcher.py Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
venv-20261006T160045Z-1-001.zip Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
Инструкция_Инструменты_СПИС.docx Инструменты СПИС: LISP-команды работы с внешними ссылками + Python-сборщик комплекта дисциплин + инструкция 21 days ago
README.md

Инструменты СПИС

Комплект инструментов для работы с внешними ссылками в СПИС.
AutoCAD 2020 и новее.


Состав

Файл Назначение
SPIS_TOOLS.lsp Загрузчик. Загружать его — остальные подтянутся сами
SPISSETDIR (в загрузчике) Указать папку СПИС вручную, если автопоиск не сработал
SPIS_RUN_SETS.lsp SPISRUNSETS — собрать комплект дисциплин
SPIS_SYSTEM_SETS.lsp SPISATTACHSETS — подключить комплект в СПИС
XRBIND.lsp Шесть команд обслуживания ссылок
run_sets_launcher.py Запуск сборки: bat в нужной кодировке, старт в фоне
build_discipline_sets.py Рабочий скрипт сборки комплекта
.venv/ Python с pywin32 — нужен для работы через COM

Все файлы должны лежать в одной папке. Загрузчик определяет своё
расположение сам, при переносе папки путь править не нужно.


Требования

AutoCAD запущен — сборка работает через COM.

Папка скриптов определяется автоматически (реестр → пути поддержки →
поиск в доверенных путях). Найденная папка запоминается в реестре
(HKCU\Software\GENPRO\SPIS) и добавляется в TRUSTEDPATHS — диалог
безопасности не появляется. Если автопоиск не сработал — команда SPISSETDIR.

Python с pywin32. В системном PATH может не быть Python, поэтому
рядом лежит собственное окружение .venv. Если папку переносят на
другую машину, окружение нужно создать заново:

python -m venv .venv
.venv\Scripts\python.exe -m pip install pywin32

Путь к интерпретатору LISP ищет сам: сначала .venv\Scripts\python.exe
рядом со скриптами, затем запасной вариант. Если ни один не найден —
команда сообщит об этом.


Команды

Создание комплекта

SPISRUNSETS — создаёт файлы дисциплин ЭТР/СС/ВК/ОВ рядом с АР
и подключает в каждый ссылки по схеме.

Ожидает корневую папку проекта с пятью подпапками:

Проект\
  АР\      АР К9.dwg       основа, ничего не подключает
  ЭТР\     ЭТР К9.dwg      содержит АР + ВК + ОВ + СС
  СС\      СС К9.dwg       содержит АР + ВК + ОВ + ЭТР
  ВК\      ВК К9.dwg       содержит АР + ОВ + СС + ЭТР
  ОВ\      ОВ К9.dwg       содержит АР + ВК + СС + ЭТР

Достаточно, чтобы существовал только файл АР — остальные команда создаст.

Почему через Python. Операции с документами (создать, открыть,
сохранить) из LISP блокируют AutoCAD: vla-Open, _.OPEN и _.SAVEAS
внутри LISP вешают сессию — проверено на AutoCAD 2020. Поэтому команда
запускает внешний скрипт, а AutoCAD остаётся свободен.

Сборка СПИС

SPISATTACHSETS — подключает в открытый СПИС внешние ссылки на АР
и четыре дисциплины. Показывает список найденных файлов и запрашивает
подтверждение. При ответе, отличном от Yes, чертёж не изменяется.

Работа со ссылками

Команда Действие
XRLIST Список ссылок со статусом. Чертёж не изменяется
XRBIND Внедрить все разрешённые ссылки
XRBIND1 Внедрить одну ссылку по имени
XRPATH Сменить путь «переехавшей» ссылки
XRUNBIND Отсоединить только битые (неразрешённые) ссылки
XRDETACH Отсоединить все ссылки, с подтверждением

Все команды работают по активному чертежу. Перед XRBIND и XRDETACH
проверьте, какое окно активно.


Порядок работы

Шаг Действие
1. Собрать комплект SPISRUNSETS — указать корень проекта, ответить Yes. Сборка идёт в фоне
2. Дождаться файлов Следить за %TEMP%\spis_sets_log.txt
3. Собрать СПИС SPISATTACHSETS — указать тот же корень, ответить Yes
4. Проверить XRLIST — все ссылки должны быть «РАЗРЕШЕНА»
5. Внедрить (если надо) XRBIND — если по заданию ссылки внедряются перед сдачей

Загрузка

В командной строке AutoCAD:

APPLOAD

Выбрать SPIS_TOOLS.lsp, нажать «Загрузить».

Автозагрузка при старте

APPLOAD → Содержимое → Добавить → SPIS_TOOLS.lsp.

Либо строка в acaddoc.lsp:

(load "G:/Мой диск/lisp-code/SPIS/SPIS_TOOLS.lsp")

Параметры подключения

Параметр Значение
Тип ссылки Overlay (наложение)
Точка вставки 0, 0, 0
Масштаб 1 : 1 по всем осям
Угол поворота 0°
Единицы миллиметры (INSUNITS = 4)
Повторное подключение ссылка с таким именем пропускается

Почему Overlay, а не Attach. Дисциплины ссылаются друг на друга,
образуя цикл СС ↔ ВК. При Attach циклические ссылки не загружаются,
при Overlay — отображаются корректно.


Кодировка файлов

LISP-файлы хранятся в Windows-1251. AutoCAD 2020 не читает UTF-8:
кириллица превращается в мусор, загрузка падает с ошибкой
«команда не найдена».

AutoCAD 2026 читает и cp1251, и UTF-8 — проверено живьём (кириллица
печатается верно в обоих вариантах). Для совместимости с 2020 файлы
по-прежнему держим в cp1251; .lsp.utf8 — версия для правки.

Рядом с каждым .lsp лежит копия .lsp.utf8 — та же версия для правки.
После правки перекодировать обратно:

from pathlib import Path
p = Path("SPIS_TOOLS.lsp.utf8")
Path("SPIS_TOOLS.lsp").write_bytes(p.read_text(encoding="utf-8").encode("cp1251"))

Отдельно про bat-файл. Скрипт сборки запускается через .bat, который
пишется в cp866 без chcp. Если добавить chcp 65001, русские пути
внутри bat бьются и Python не находит файлы.


Типовые проблемы

Симптом Причина и решение
«Команда не найдена» Файл не загружен либо сохранён в UTF-8. Загрузить через APPLOAD, проверить кодировку. Если загрузка прошла, но подкоманд нет — выполнить SPISSETDIR и указать папку
[НЕТ] при загрузке Файл не найден рядом с SPIS_TOOLS.lsp
Не найден скрипт build_discipline_sets.py должен лежать рядом с LISP
Не найдено DWG В подпапках АР, ЭТР, СС, ВК, ОВ нет файлов .dwg
Пропущено Ссылка уже подключена, дубликат не создаётся
Вызов был отклонен AutoCAD занят или завис. Перезапустить AutoCAD
Ссылка не видна Проверить координаты и слои, выполнить Z → E

Правила работы со ссылками

  • Не переименовывать и не перемещать DWG после подключения.
  • Хранить папку проекта целиком, без разрыва структуры подпапок.
  • Для обновления исходников — «Перезагрузить» в палитре XREF.
  • Перед заменой состава ссылок сохранить резервную копию СПИС.
  • Существующие DWG команда сборки не перезаписывает. Пересобрать комплект
    можно, только удалив файлы дисциплин вручную. АР не удаляется никогда.

GENPRO · Группа ЭТР · 2026