리습관련 하여 질문드립니다.
현재 기존의 Move 명령어를 아예 대체할 리습을 만들고자 합니다.
기존 Move기능에 옵션에 따라 X축, Y축으로만 움직이게 하고 싶습니다.
(defun C:mm (/ a b option sel)
(setvar “cmdecho” 0)
(initget “X Y T”)
(setq a (entsel “nMOVE 객체 선택 또는 [x축(X)/y축(Y)/중간점(T)]:”))
(if (= a “X”)
(progn
(setq ss (ssget))
(command “._move” ss “” pause “.y” “@” pause)
(setq ss nil)
)
)
(if (= a “Y”)
(progn
(setq ss (ssget))
(command “._move” ss “” pause “.x” “@” pause)
(setq ss nil)
)
)
(if (= a “T”)
(progn
(setq ss (ssget))
(command “._move” ss “” pause “_m2p” pause)
(setq ss nil)
)
)
(if (and (/= a nil)(/= a “X”)(/= a “Y”)(/= a “T”))
(progn
(setq SEL (ssadd (car a) SEL))
(command “_select” SEL pause)
(setq SEL (ssget “_P”))
)
)
(if (= a nil)
(progn
(command “_select” “_BOX” (cadr (grread T)) pause)
(setq ss (ssget “_P”))
(command “._move” ss “”)
)
)
)
현재 까지 작성한 리습인데 명령어를 먼저 입력하고 객체를 선택하면 문제가 없는데
객체를 선택한 상태에서 명령어를 입력하면 문제가 발생합니다.
명령어를 입력 후 객체 선택, 이후 포인트1, 2를 순서대로 찍으면
기존의 Move 명령어와 동일하게 작동합니다.
하지만 객체를 선택한 상태에서 명령어를 입력하고 포인트를 찍으면
객체를 다시 선택하라고 나옵니다. (X, Y 등의 옵션을 입력하면 정상 작동합니다.)
이 부분 수정을 도와주시거나 팁만 주셔도 감사하겠습니다.
그리고 굳이 이런 짓을 하는 이유는 원래 MX, MY로 사용하다가
리습 잘돼는 되용?? 명령어를 먼저 하든 선택후 명령이든 잘됩니다