Я пытаюсь максимально упростить рисование электрических схем в AutoCAD, почти не нажимая кнопок, кроме моих запрограммированных.
Один включает в себя LISP, который не очень хорошо работает с установкой системных переменных, а затем сбрасывает их до того, что они были раньше. Программа, кажется, выполняет намеченную функцию, но не с ожидаемыми результатами.
Как только моя команда PLINE
запускается, переменные сбрасываются. Мне нужно, чтобы PLINE
запустилось, закончилось, а затем переменные сбрасывались.
Я пытался установить OrthoMode и SnapMode в команде LISP, а также с помощью команд (setvar (getvar ...))
.
(defun varget ()
(setq lis '("orthomode" "snapmode"))
(setq var (mapcar 'getvar lis))
(setq var1 '(1 1))
(setq no 0)
(repeat (length lis)
(setvar (nth no lis) (nth no var1))
(setq no (1+ no))
)
(princ)
)
(defun varset ()
(setq no 0)
(repeat (length lis)
(setvar (nth no lis) (nth no var))
(setq no (1+ no))
)
(princ)
)
(princ)
(defun C:wire ()
(progn
(varget)
(setq prevlayer (getvar "clayer"))
(setq P (getstring "Audio(A)/Video(V)/Comm(CO)/Coax(R)/Control(C)/(N)etwork/(P)ower:"))
(IF (= P "V")(command "-LAYER" "M" "VIDEO" "C" "150" "" "" "PLINE" PAUSE))
(IF (= P "A")(command "-LAYER" "M" "AUDIO" "C" "94" "" "" "PLINE" PAUSE))
(IF (= P "CO")(command "-LAYER" "M" "COMM" "C" "206" "" "" "PLINE" PAUSE))
(IF (= P "R")(command "-LAYER" "M" "COAX" "C" "44" "" "" "PLINE" PAUSE))
(IF (= P "C")(command "-LAYER" "M" "CONTROL" "C" "10" "" "" "PLINE" PAUSE))
(IF (= P "N")(command "-LAYER" "M" "NETWORK" "C" "210" "" "" "PLINE" PAUSE))
(IF (= P "P")(command "-LAYER" "M" "POWER" "C" "7" "" "" "PLINE" PAUSE))
(setvar "clayer" prevlayer)
(varset)
(princ)
);Progn
);defun
Нет сообщений об ошибках.
Я ожидаю, что переменные будут сброшены после выполнения команды PLINE
.