Автоматический перенос размеров, текстов и т.д. на соответствующий слой. Вообще отличный LISP
Код:
;;; Автор идеи Kenny Ramage, Эдуард, Torino, он же Кочетков Андрей
;;; Доработка Владимир Азарко (VVA)
;;; Опубликовано http://forum.dwg.ru/showpost.php?p=58664&postcount=25
;;;Автоматический перенос размеров на слой "размеры"
;;;и заливки на слой "заливка"
;;;Просто добавь этот файл в автозагрузку
(vl-load-com)
(setq *OldLayer* (getvar "CLAYER"))
(vl-cmdf "_layer" "_make" "Размеры" "_color" 142 "" "_lw" 0.18 "" "") ;_Создаем слой размеры и задаем цвет 142 ...
(vl-cmdf "_layer" "_make" "Штриховка" "_color" 5 "" "_lw" 0.30 "" "") ;_Создаем слой штриховка и задаем цвет 5
(vl-cmdf "_layer" "_make" "Текст" "_color" 152 "" "_lw" 0.30 "" "") ;_Создаем слой текст и задаем цвет 126
(vl-cmdf "_layer" "_make" "Таблицы" "_color" 152 "" "_lw" 0.30 "" "") ;_Создаем слой таблицы и задаем цвет 126
(vl-cmdf "_layer" "_make" "Выноски" "_color" 126 "" "_lw" 0.18 "" "") ;_Создаем слой выноски и задаем цвет 126
(setvar "clayer" *OldLayer*)
(setq *OldLayer* nil)
;;;;;;По аналогии добавить создание своего слоя
;;; ...
;;;;;;
;;;;;;-------------------------------------------------------------
(if *vlr-cmd*
(progn
(setq *vlr-cmd* nil)
(vlr-remove-all :vlr-command-reactor)
) ;_ end of progn
) ;_ end of if
(if (not *vlr-cmd*)
(setq *vlr-cmd* (vlr-command-reactor "cmd"
'((:vlr-commandwillstart . cmd-start)
(:vlr-commandended . cmd-end)
(:vlr-commandcancelled . cmd-end)
(:vlr-commandfailed . cmd-end)))))
;;;;;;-------------------------------------------------------------
(defun cmd-start (calling-reactor startcommandInfo / thecommandstart)
(setq thecommandstart (nth 0 startcommandInfo))
(if (null *OldLayer*)(setq *OldLayer* (getvar "CLAYER")))
(cond
;;;_Реакция на начало команды DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)
((wcmatch thecommandstart "DIM*") ;_Если выполняется команда DIM*
(setvar "clayer" "размеры") ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ...
)
;;; Конец реакции на DIM*
((wcmatch thecommandstart "*HATCH*") ;_Если выполняется команда *HATCH*
(setvar "clayer" "штриховка")
)
((wcmatch thecommandstart "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT)
(setvar "clayer" "Текст")
)
((wcmatch thecommandstart "*TABLE") ;_Если выполняется команда *TABLE
(setvar "clayer" "Таблицы")
)
((wcmatch thecommandstart "*LEADER") ;_Если выполняется команда *QLEADER MLEADER
(setvar "clayer" "Выноски")
)
(t (setq *OldLayer* nil)) ;;_Если не наша команда, чистим список текущих слоев
;;;См http://forum.dwg.ru/showpost.php?p=318806&postcount=139
;;;и http://forum.dwg.ru/showpost.php?p=318806&postcount=143
)
(princ))
;;;-------------------------------------------------------------
(defun cmd-end (calling-reactor cmd / cmd_name)
(setq cmd_name (strcase (car cmd)))
(if (or
(wcmatch cmd_name "*HATCH*") ;_Если выполняется команда DIM*
(wcmatch cmd_name "DIM*") ;_Если выполняется команда *HATCH*
(wcmatch cmd_name "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT)
(wcmatch cmd_name "*TABLE") ;_Если выполняется команда ТАБЛИЦА
(wcmatch cmd_name "*LEADER") ;_Если выполняется команда *QLEADER или MLEADER
)
(progn
(if *OldLayer* (setvar "clayer" *OldLayer*))
(setq *OldLayer* nil)
))
(princ))
Для использование сего ЛИСПа (кто не знает) делаем так. Создаем текстовый файл, копируем код и сохраняем с расширением
.lsp. Название делаем любое, но лучше назвать информативно, так как в последствии подобных файлов может накопиться много и запутаетесь. Далее создаем папку на диске. Например D:\adsk\MyLisp. Сохраняем туда этот лисп файл.
Запускаем автокад, если не запущен. Вводим Команду "_appload" и добавляем этот файл в автозагрузку. Все. Теперь, как только вы проставляете какой-либо размер он автоматически переносится на слой "Размеры", текст на слой "Текст" и т.д.