안녕하세요.
하이에나 마냥 게시판을 들락거리며 눈동냥으로 이것저것 배워 나가고 있는 초보입니다.
아래 리습은 두 점을 찍어 면적을 구하고 산출식과 값을 화면에 생성 하는 리습입니다.
이 또한 게시판에서 얻어 잘쓰고 있는데요.
검색과 기존 리습들을 열어 비교해보고 하여도 어디를 수정해야 할지
엄두가 안 나고있습니다.
명령어 처리중
현재 설정값(문자높이=280.0,자리수=4)을 변경할까요? [Y/N] <N> :
에서 문자크기와 소숫점 자리를 변경하면
소숫점 자리만 변경이 되어지고 문자크기는 입력값으로 생성이 안 되어,
DTEXT를 실행하고 문자크기를 조정해야 원하는 결과물이 나오고 있습니다.
행복한 주말 되시고요. 가르침을 주십시오.
—아래 리습 내용—
;——- quick area ————————————————–
(defun c:qar(/ os ts cm bl a yn ht tem dot pt1 pt2 pt3 rlt txy dx dy
dix diy dxy txy1 k eno en ed dz)
;->*error* start
(defun *error* (msg)(princ “error: “)(princ msg)
(setvar “osmode” os)(setvar “blipmode” bl)(setvar “dimzin” dz)
(princ))
;-<*error* end
(princ ” 사각형으로 면적구하기…”)
(setq os (getvar “osmode”) ts (getvar “textsize”)
cm (getvar “cmdecho”) bl (getvar “blipmode”)
dz (getvar “dimzin”) )
(setvar “cmdecho” 0) (setvar “blipmode” 1)(setvar “dimzin” 0)
;–>설정값 변경
(setq ly (tblsearch “layer” “DEF”)) ;”레이어를 검색 없으면 레이어 생성
(if (= ly nil) (command “-layer” “m” “DEF” “c” “171” “” “p” “n” “” “” “l” “continuous” “” “”))
(setvar “clayer” “DEF”) ;<= 현재 레이어를 변경한다.
(if (= dwqar nil) (setq dwqar 2))
(setq a (strcat “n현재 설정값(문자높이=” (rtos ts 2 1)
“,자리수=” (rtos dwqar 2 0) “)을 변경할까요? [Y/N] <N> : “))
(initget “Yes No”)
(setq yn (getkword a))
(if (= yn “Yes”)
(progn
(setq a (strcat “n문자높이<” (rtos ts 2 1) “>:”))
(setq ht (getdist a))
(if (= ht nil) (setq ht ts))
(setq a (strcat “n소수점 자리수을 지정<” (rtos dwqar 2 0) “>:”))
(setq tem (getint a))
(if (= tem nil) (setq dot dwqar) (setq dot (abs tem)) )
(setq dwqar dot)
)
(setq ht ts dot dwqar)
)
;–<
(setq pt1 (getpoint “n사각형의 한점 선택-> “))
(setq rlt “0” k 1)
(while pt1
(setq pt2 (getcorner pt1 “대각점 선택-> “))
(if pt2 (progn
(setq dx (abs (- (car pt2) (car pt1))))
(setq dy (abs (- (cadr pt2) (cadr pt1))) ) (terpri)
(setq dx (/ dx 1000) dy (/ dy 1000) )
(setq dix (rtos dx 2 dot));->x값
(setq diy (rtos dy 2 dot));->y값
(setq dxy (* (atof dix) (atof diy)))
(setq dixy (rtos dxy 2 dot));->x*y값
;(setq txy1 (strcat “( ” dix ” x ” diy ” )” )) ; 원본
(setq txy1 (strcat dix ” x ” diy ))
(setq rlt (rtos (+ (atof rlt) (atof dixy)) 2 dot))
(if (> k 1) (setq txy (strcat txy ” + ” txy1))
(setq txy txy1))
(setq k (+ k 1))
(princ “n결과: “)(princ txy)(princ ” = “)(princ rlt) ))
(setq pt1 (getpoint “n사각형의 한점 선택<dcl보기>-> “))
)
;->dcl load
(setq eno nil)
(setq dcl_id (load_dialog “c:/ezqcad/ezqdcl/qar.dcl”))
(new_dialog “qar_dcl” dcl_id)
(set_tile “tx-exp” txy)
(set_tile “tx-rlt” rlt)
(set_tile “rad1” “1”)
(action_tile “butt1” “(@qar 1)”)
(action_tile “butt2” “(@qar 2)”)
(action_tile “tx-exp” “(setq txy $value)”)
(action_tile “tx-rlt” “(setq rlt $value)”)
(action_tile “rad1” “(setq eno 1)”)
(action_tile “rad2” “(setq eno 2)”)
(action_tile “accept” “(done_dialog)”)
(action_tile “cancel” “(setq eno 0)(done_dialog)”)
(start_dialog)
(unload_dialog dcl_id)
(if (= eno nil) (setq eno 1))
;<-dcl end
;| 원본
(cond
((= eno 1)
(setq en (car (entsel”n산식을 넣을 문자선택->”)))
(setq ed (entget en))
(setq ed (subst (cons 1 txy) (assoc 1 ed) ed))
(entmod ed)
(setq en (car (entsel”n결과값을 넣을 문자선택->”)))
(setq ed (entget en))
(setq ed (subst (cons 1 rlt) (assoc 1 ed) ed))
(entmod ed)
)
((= eno 2)
(setq pt3 (getpoint “n표기될 문자 위치선택->”))
(setvar “osmode” 0)
(command “text” “j” “r” pt3 ht “0” txy)
(setq pt3 (polar pt3 (dtr 270) (* 1.5 ht)))
(command “text” “j” “r” pt3 ht “0” rlt)
)
);cond end
|;
;; 여기까지 원본
(cond
((= eno 1)
(setq en (getpoint “n산식을 넣을 곳 클릭->”))
(command “_.text” en “” “” txy)
(setq en (getpoint “n결과값을 넣을 곳 클릭->”))
(command “_.text” en “” “” rlt))
((= eno 2)
(setq pt3 (getpoint “n표기될 문자 위치선택->”))
(setvar “osmode” 0)
(command “text” “j” “r” pt3 ht “0” txy)
(setq pt3 (polar pt3 (dtr 270) (* 1.5 ht)))
(command “text” “j” “r” pt3 ht “0” rlt)
)
);cond end
(setvar “osmode” os)(setvar “blipmode” bl)
(setvar “cmdecho” cm)(setvar “dimzin” dz)
(prin1))
;subroutine
(defun @qar(k)
(cond
((= k 1)(mode_tile “tx-exp” 2))
((= k 2)(mode_tile “tx-rlt” 2))
))