Нужно в этот код добавить возможность вставки отде...
作成日: 2026年8月14日
使用モデル GPT-5.6 Thinking by Chat01
作成日: 2026年8月14日
使用モデル GPT-5.6 Thinking by Chat01
Нужно в этот код добавить возможность вставки отдельными текстами в чертеж названий загруженных этим кодом лиспов
в таком виде:
Hatch_ANSI36_M40_Uni
Otm2M50
OtmUpdateM50
.........
dimtext_bgmask
breakpls
;; Загрузка нескольких файлов лисп из папки LeLiLsp26
(defun c:LoadLispsKolod ( / path fileList )
(setq path "C:\Users\artem\Documents\LeLiLsp26\") ; путь к папке, где лежат лиспы
(setq fileList '(
"Hatch_ANSI36_M40_Uni.lsp"
"Otm2M50.lsp"
"OtmUpdateM50.lsp"
"OtmUpdateM3_2.lsp"
"Diff2OtmWh.lsp"
"Diff2Otm.lsp"
text"dimtext_bgmask.fas" "breakpls.vlx"
))
(foreach f fileList
(if (findfile (strcat path f))
(load (strcat path f))
(princ (strcat "\nФайл не найден по пути: " path f))
)
)
(princ "\nВсе доступные приложения загружены.")
(princ)
)
(c:LoadLispsKolod)
Да. Удобнее всего сделать так: код запоминает только реально найденные и загруженные файлы, а затем отдельной командой вставляет их имена в чертёж — каждое имя отдельным объектом TEXT, без расширений .lsp, .fas, .vlx.
Ниже готовый вариант:
lisp;; ============================================================ ;; Загрузка нескольких LISP / FAS / VLX из папки LeLiLsp26 ;; + вставка названий загруженных файлов отдельными TEXT ;; ============================================================ (vl-load-com) ;; Глобальный список успешно загруженных файлов (setq *LoadLispsKolod-Loaded* nil) ;; ------------------------------------------------------------ ;; ЗАГРУЗКА ФАЙЛОВ ;; ------------------------------------------------------------ (defun c:LoadLispsKolod ( / path fileList fullName ) (setq path "C:\\Users\\artem\\Documents\\LeLiLsp26\\") (setq fileList '( "Hatch_ANSI36_M40_Uni.lsp" "Otm2M50.lsp" "OtmUpdateM50.lsp" "OtmUpdateM3_2.lsp" "Diff2OtmWh.lsp" "Diff2Otm.lsp" "dimtext_bgmask.fas" "breakpls.vlx" ) ) ;; Очистить список ранее загруженных (setq *LoadLispsKolod-Loaded* nil) ;; Загружаем файлы (foreach f fileList (setq fullName (strcat path f)) (if (findfile fullName) (progn (load fullName) ;; Запоминаем имя успешно найденного файла (setq *LoadLispsKolod-Loaded* (append *LoadLispsKolod-Loaded* (list f)) ) (princ (strcat "\nЗагружен: " f)) ) (princ (strcat "\nФайл не найден: " fullName ) ) ) ) (princ "\nВсе доступные приложения загружены.") (princ "\nДля вставки их названий в чертёж вызовите команду: LispNames") (princ) ) ;; ------------------------------------------------------------ ;; ВСТАВКА НАЗВАНИЙ В ЧЕРТЁЖ ;; Каждый элемент создаётся отдельным объектом TEXT ;; ------------------------------------------------------------ (defun c:LispNames ( / pt h step name ptWCS ) ;; Проверяем, есть ли список загруженных файлов (if *LoadLispsKolod-Loaded* (progn ;; Точка начала списка (setq pt (getpoint "\nУкажите точку вставки первого названия: " ) ) (if pt (progn ;; Высота текста (setq h (getdist (strcat "\nВысота текста <" (rtos (getvar "TEXTSIZE") 2 2) ">: " ) ) ) ;; Если Enter - используем TEXTSIZE (if (null h) (setq h (getvar "TEXTSIZE")) ) ;; Шаг между строками (setq step (* h 1.5)) ;; Создаём отдельный TEXT для каждого файла (foreach f *LoadLispsKolod-Loaded* ;; Убираем расширение .lsp / .fas / .vlx (setq name (vl-filename-base f)) ;; Переводим координату UCS -> WCS (setq ptWCS (trans pt 1 0)) ;; Создаём TEXT (entmakex (list '(0 . "TEXT") '(100 . "AcDbEntity") (cons 8 (getvar "CLAYER")) '(100 . "AcDbText") (cons 10 ptWCS) (cons 40 h) (cons 1 name) (cons 50 0.0) (cons 7 (getvar "TEXTSTYLE")) '(210 0.0 0.0 1.0) ) ) ;; Следующее название ниже предыдущего ;; Смещение выполняется в текущей UCS (setq pt (list (car pt) (- (cadr pt) step) (if (caddr pt) (caddr pt) 0.0 ) ) ) ) (princ (strcat "\nВставлено названий: " (itoa (length *LoadLispsKolod-Loaded*)) ) ) ) ) ) (princ "\nСписок загруженных файлов пуст. Сначала выполните LoadLispsKolod." ) ) (princ) ) ;; Автоматическая загрузка при загрузке этого файла (c:LoadLispsKolod)
После загрузки у вас будет две команды:
LoadLispsKolod — загружает приложения;LispNames — просит указать точку и вставляет в чертёж отдельными TEXT:textHatch_ANSI36_M40_Uni Otm2M50 OtmUpdateM50 OtmUpdateM3_2 Diff2OtmWh Diff2Otm dimtext_bgmask breakpls
Каждая строка — отдельный текстовый объект, поэтому её можно независимо перемещать, удалять, редактировать и т. д. Расширения .lsp, .fas, .vlx автоматически убираются.
Если хотите, могу также переделать этот вариант так, чтобы после LoadLispsKolod сразу предлагалось указать точку и вставить список, без отдельной команды LispNames.