회사 업무상 자동으로 만드려고 lisp을 만드는데
인수가 많다고 떠서요…
(defun c:gg(/ dcl_id tg1 tg2 tg3 tg4 tg5 tg6 ky fn fname)
(vl-load-com)
(create_dialog_ad)
(prompt “n** 도면 정리 하기 **nn”)
(setq dcl_id (load_dialog fname))
(setq ky 4 tg1 “1” tg2 “1” tg3 “1” tg4 “1” tg5 “0” tg6 “0”)
(if (not (new_dialog “temp” dcl_id)) (exit) );if
(set_tile “tog1” tg1)
(set_tile “tog2” tg2)
(set_tile “tog3” tg3)
(set_tile “tog4” tg4)
(set_tile “tog5” tg5)
(set_tile “tog6” tg6)
(action_tile “tog1” “(setq tg1 $value)”)
(action_tile “tog2” “(setq tg2 $value)”)
(action_tile “tog3” “(setq tg3 $value)”)
(action_tile “tog4” “(setq tg4 $value)”)
(action_tile “tog5” “(setq tg5 $value)”)
(action_tile “tog6” “(setq tg6 $value)(@ff_select tg6)”)
(action_tile “accept” “(setq ky 9)(done_dialog)”)
(action_tile “cancel” “(done_dialog)”)
(start_dialog)
(unload_dialog dcl_id)
(if (= ky 9)(progn
(command “undo” “be”)
(if (=tg1 “1”) (@KI))
(if (=tg2 “1”) (@TSE))
(if (=tg3 “1”) (@JEM))
(if (=tg4 “1”) (@MF))
(if (=tg5 “1”) (@AMST))
(command “undo” “e”)
(prompt “nn** 작업완료 **”))
(vl-file-delete fname)
(princ)
;;subroutine (서브루틴)
(defun @ff_selecl(tg6)
(cond
((= tg6 “0”)(setq tg1 “0” tg2 “0” tg3 “0” tg4 “0” tg5 “0”))
((= tg6 “1”)(setq tg1 “1” tg2 “1” tg3 “1” tg4 “1” tg5 “1”))
)
(set_tile “tog1” tg1)(set_tile “tog2” tg2)
(set_tile “tog3” tg3)(set_tile “tog4” tg4)
(set_tile “tog5” tg5)(set_tile “tog6” tg6)
)
;;KI 가공도면 제작
(defun @KI(/ss ss1)
; (prompt “n ** 가공도면 **nn”)
(setq $cmdecho (getvar “CMDECHO”))
(setvar “CMDECHO” 0)
(setq $osmode (getvar “OSMODE”))
(setvar “OSMODE” 0)
(command “ERASE” “win” (list 450 240)
(list -348 203)
(list 450 240)
(list 411.62 -329.39)
(list 450 -315)
(list -329.31 -197.28)
(list -291.62 -338.32)
(list -326 240)
(list 83.15 -48.35)
(list 168.87 -54.94)
(list 32.01 -62.14)
(list 18.40 -77.50)
(list -134.6919 123.03)
(list -28.26 36.84)
(list 30.59 122.22)
(list 138.63 36.03)
(list 33.822 -34.84)
(list 128.96 -133.12)
(list -132.27 -40.48)
(list -33.09 -129.89)
(list 181.4325 168.14)
(list 439 91.61)
(list 216 1.3)
(list 421.66 -208.23)
(list -233.4 67.4)
(list -147.56 -32.69)
“”)
(prompt “ncolor select move..”)
(setq tt (GETINT “n색상입력: “))
(if (setq ss (ssget (list (cons 62 tt))))
(command “ERASE” ss “”)
)
(command “zoom” “.7x”)
(command “regen”)
(setvar “OSMODE” $osmode)
(setvar “CMDECHO” $cmdecho)
(princ)
)
;; —————————————————— dcl start —————————–
(defun create_dialog_ad ()
(setq fname (vl-filename-mktemp “purge_temp.dcl”))
(setq fn (open fname “w”))
(write-line “temp
: dialog { label=”고객사별 가공도면”;
: boxed_column {
label = ”고객사 선택”;
: column {
: toggle {
label=” KI”;
key=”tog1”;
}
: toggle {
label=” TSE”;
key=”tog2”;
}
: toggle {
label=”JEM”;
key=”tog3”;
}
: toggle {
label=” MF”;
key=”tog4”;
}
: toggle {
label=” AMST”;
key=”tog5”;
}
: toggle {
label=” 모두 선택하기(&Select) / 모두 취소하기”;
key=”tog6”;
}
}
}
ok_cancel;}
” fn)
(close fn)
);defun
(princ)
))
;; —————————————————— dcl end —————————–
제가 만든 리습인데…
아직 다 만들지 않았지만..
command 뒤에 ERAES 부분에 인수가 많다고 뜨는거 같은데..
lisp 고수님들 원인 확인좀 부탁드리겠습니다 ㅠ