프로그램
캐드 분류

리습내용중 문자크기 문의합니다.

컨텐츠 정보

  • 1,122 조회
  • 0 추천
  • 0 비추천
  • 목록

본문

안녕하세요.
하이에나 마냥 게시판을 들락거리며 눈동냥으로 이것저것 배워 나가고 있는 초보입니다.
아래 리습은 두 점을 찍어 면적을 구하고 산출식과 값을 화면에 생성 하는 리습입니다.

이 또한 게시판에서 얻어 잘쓰고 있는데요.
검색과 기존 리습들을 열어 비교해보고 하여도 어디를 수정해야 할지
엄두가 안 나고있습니다.

명령어 처리중
현재 설정값(문자높이=280.0,자리수=4)을 변경할까요? [Y/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] : "))
   (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 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))
))

관련자료

댓글 0 / 1 페이지
등록된 댓글이 없습니다.
전체 7,670 / 1 페이지
RSS
번호
제목
이름

최근글


새댓글


알림 0