(setq a (getreal “n : 수치입력 : “))
이렇게 수치를 입력하였는데요]
기존에 250이라고 쳤으면 다음 명령어 칠때도 250이 그대로 남아있게하려면 어떤구문을 입력해야하나요?
비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.
해당 질문을 신고하는 이유를 간단히 입력해주세요.
해당 답변을 신고하는 이유를 간단히 입력해주세요.
해당 유저를 신고하는 이유를 간단히 입력해주세요.
———첫번째 방법 —————-
a에 입력받은 값을 레지스트리에 저장해놓고 나중에 불러오면 됩니다.
불러오는 코드는 :
(setq kkk (vl-registry-read “HKEY_CURRENT_USER\Software\VB and VBA Program Settings\myapp\fsgsmat” “enlong”))
저장하는 코드는 :
(vl-registry-write “HKEY_CURRENT_USER\Software\VB and VBA Program Settings\myapp\DCLKEY” “NCKLAYER” “nochange”)
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\myapp\ 여기까지는
오토캐드의 레지스트리 기본저장 위치이니 안 건드리는게 좋습니다.
뒤에 2가지 키만 건드려서 저장하세요.
———– 두번째 방법——————
사용자 변수를 이용합니다.
입력값이 실수형 변수값이니까
Userr1 ~ Userr5 중에 아무데나 넣어놓고 나중에 불러쓰면 됩니다.
(setq TH (getvar “Userr1”)) ;;; 불러오는 코드
(setvar “Userr1” a ) ;;; 저장하는 코드
사용자 변수는 각 도면마다 다른 값이 저장되기 때문에
이 방법을 사용하면, 다른 도면을 작업할 경우에 대한 주의가 필요합니다.
———세번째 방법———-
전역변수를 사용하는 방법입니다.
(defun c:aaa ( / a b c ) 로 시작하는 형식의 리습구문에서
/ 뒤의 변수명은 지역변수입니다. (휘발성 변수)
사용되는 변수를 저 슬러쉬뒤에 나열하지 않으면 전역변수가 되어
리습명령이 종료된 후에도 여전히 값을 가지고 있습니다.
메모리 관리 측면에서 비효율적일 수도 있지만, 단순한 형태의 리습에서는
전혀 아무 상관없습니다.
세가지 방법이나 알려주시다니 감사합니다!!!!
아 감사합니다. 보고 공부좀 더해볼게요
(setq def_a a);;;;다음줄에서 엔터 칠때를 대비해서 a값 보관함.
(setq a (getreal (strcat “n : 수치입력 : <“(rtos a)”>”))) ;;a에 값을 입력받고 마지막 값을 보여줌.
(if (= a nil) (setq a def_a));;;앞줄에서 기본값으로 엔터를 치면 a는 nil이 되므로 a값을 다시 받음.