;;; ============================================================
;;;  SPIS_TOOLS.lsp — единый загрузчик инструментов СПИС
;;;
;;;  Подключает три набора команд:
;;;
;;;  1) СОЗДАНИЕ КОМПЛЕКТА (SPIS_RUN_SETS.lsp)
;;;     SPISRUNSETS — собрать файлы дисциплин со ссылками по схеме
;;;                   (запускает внешний Python-скрипт)
;;;
;;;  2) СБОРКА СПИС (SPIS_SYSTEM_SETS.lsp)
;;;     SPISATTACHSETS — подключить АР и дисциплины ЭТР/СС/ВК/ОВ
;;;                      в открытый СПИС как внешние ссылки (Overlay)
;;;
;;;  3) РАБОТА СО ССЫЛКАМИ (XRBIND.lsp)
;;;     XRLIST    — список ссылок со статусом, без изменений чертежа
;;;     XRBIND    — внедрить все разрешённые ссылки
;;;     XRBIND1   — внедрить одну ссылку по имени
;;;     XRPATH    — сменить путь «переехавшей» ссылки
;;;     XRUNBIND  — отсоединить только битые (неразрешённые) ссылки
;;;     XRDETACH  — отсоединить все ссылки (с подтверждением)
;;;
;;;  4) СПРАВКА (SPISHELP.lsp)
;;;     SPISHELP  — полная справка: схема, команды, пути, проблемы
;;;
;;;  ВАЖНО: все файлы должны лежать в ОДНОЙ папке.
;;;  Загрузчик определяет её сам; при необходимости задайте вручную:
;;;     (setq *SPIS-DIR* "G:/Мой диск/lisp-code/SPIS")
;;;
;;;  Файлы должны быть в кодировке Windows-1251: AutoCAD 2020
;;;  не читает UTF-8 в LISP, кириллица превращается в мусор.
;;; ============================================================

;; Папка, куда установлены файлы. Правьте здесь при переносе.
(setq *SPIS-DIR* "G:/Мой диск/lisp-code/SPIS")

;; Определяем папку по расположению этого файла.
(defun spis:detect-dir (/ f)
  (cond
    ((setq f (findfile "SPIS_TOOLS.lsp")) (vl-filename-directory f))
    ((setq f (findfile "SPIS_TOOLS"))     (vl-filename-directory f))
    (T nil)
  )
)

(defun spis:load-one (fname / full)
  (setq full (strcat (vl-string-right-trim "\\/" *SPIS-DIR*) "\\" fname))
  (cond
    ((findfile full)
      (load full)
      (princ (strcat "\n  [OK]  " fname)))
    (T
      (princ (strcat "\n  [НЕТ] " fname " — не найден в " *SPIS-DIR*)))
  )
  (princ)
)

(princ "\n==============================================")
(princ "\n  Загрузка инструментов СПИС")
(princ "\n==============================================")

(if (setq *spis-detected* (spis:detect-dir))
  (progn
    (setq *SPIS-DIR* *spis-detected*)
    (princ (strcat "\n  Папка: " *SPIS-DIR*)))
  (princ (strcat "\n  Папка (по умолчанию): " *SPIS-DIR*))
)

(spis:load-one "SPIS_RUN_SETS.lsp")
(spis:load-one "SPIS_SYSTEM_SETS.lsp")
(spis:load-one "XRBIND.lsp")
(spis:load-one "XRCOPYVISIBLE.lsp")
(spis:load-one "SPISHELP.lsp")

(princ "\n\n  Команды:")
(princ "\n    Создание комплекта:")
(princ "\n      SPISRUNSETS     — собрать файлы дисциплин со ссылками")
(princ "\n    Сборка СПИС:")
(princ "\n      SPISATTACHSETS  — подключить АР и дисциплины в СПИС")
(princ "\n    Работа со ссылками:")
(princ "\n      XRLIST          — список ссылок со статусом")
(princ "\n      XRBIND          — внедрить разрешённые ссылки")
(princ "\n      XRBIND1         — внедрить одну ссылку")
(princ "\n      XRPATH          — сменить путь ссылки")
(princ "\n      XRUNBIND        — отсоединить битые ссылки")
(princ "\n      XRDETACH        — отсоединить все ссылки")
(princ "\n      XRCOPYVISIBLE   — скопировать доступную геометрию верхней ссылки")
(princ "\n    Справка:")
(princ "\n      SPISHELP        — полная справка по всем командам")
(princ "\n==============================================")
(princ)

;;; Для автозагрузки: добавьте SPIS_TOOLS.lsp в Startup Suite
;;; (APPLOAD -> Содержимое -> Добавить) либо строку в acaddoc.lsp:
;;;   (load "G:/Мой диск/lisp-code/SPIS/SPIS_TOOLS.lsp")
