프로그램
캐드 분류

면적 표기하는 리습인데 뒤에 "㎡"기호 삽입 하고 싶습니다.

컨텐츠 정보

  • 110 조회
  • 1 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

면적 표기하는 리습인데 뒤에 "㎡"기호 삽입 하고 싶습니다.

(defun c:qa ( / a area b decimal doc inspt len ltsc maxpt minpt n obj space ss txtsize yn)
;;;—————————————————————————–;
   ;; 원작자 : 모름 (보시면 여기에 서명해 주세요~~)
   ;; edit by kimhyunchul.co.kr 2016-12-28 (필요한 부분만 출력 하도록 조정함)
;;;—————————————————————————–;
   (vl-load-com)
   (princ "n   객체 중앙에 면적 문자 넣기. (문자높이는 선축척을 곱해서 표현됨)")
   (setvar "cmdecho" 0)
   (setq doc (vla-get-activedocument (vlax-get-acad-object)))
   (if (not (tblsearch "style" "TEXT-AREA"))
      (entmake
         (list
            (cons 0 "STYLE")
            (cons 100  "AcDbSymbolTableRecord")
            (cons 100  "AcDbTextStyleTableRecord")
            (cons 2 "TEXT-AREA")
            (cons 3 "romans.shx")
            (cons 4 "whgtxt.shx")
            (cons 40 0)
            (cons 41 1)
            (cons 42 1)
            (cons 70 0)
            (cons 71 0)
            (cons 50 0)
         )
      )
   )
   (if
      (not
         (and
            (setq txtsize (getcfg "AppData/XiCAD/xiAREA1″))
            (/= txtsize "")
            (setq decimal (getcfg "AppData/XiCAD/xiAREA2″))
            (/= decimal "")
         )
      )
      (setq txtsize "2.5″
            decimal "2″
      )
   )
   (setq ltsc (getvar 'ltscale))
   (cond
      (  (= (vla-get-activespace doc) 1) (setq space (vla-get-modelspace doc))   )
      (  (= (vla-get-activespace doc) 0) (setq space (vla-get-paperspace doc))   )
   )
   (if (setq ss (ssget (list (cons 0 "CIRCLE,ARC,*POLYLINE,LINE,ELLIPSE,SPLINE"))))
      (progn
         (initget "Yes No")
         (setq yn
            (getkword
               (strcat "n   <선축척=" (rtos ltsc 2 1) ", 문자높이=" txtsize ", 자리수=" decimal "> 변경여부? [Y/N] : ")
            )
         )
         (if (= yn "Yes")
            (progn
               (setq a (getdist (strcat "n>> 문자높이 지정 <" txtsize ">:")))
               (if (and a (numberp a))
                  (setq txtsize (rtos a 2 1))
               )
               (setq b (getint (strcat "n>> 소수점 자리수 지정 <" decimal ">:")))
               (if (and b (numberp b))
                  (setq decimal (rtos b 2 0))
               )
               (if (and txtsize decimal)
                  (progn
                     (setcfg "AppData/XiCAD/xiAREA1″ txtsize)
                     (setcfg "AppData/XiCAD/xiAREA2″ decimal)
                  )
               )
            )
         )
         (setq txtsize (* (atof txtsize) ltsc)
               decimal (atoi decimal)
         )
         (repeat (setq n (sslength ss))
            (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
            (vla-getboundingbox obj 'mi 'mx)
            (setq minpt (vlax-safearray->list mi)
                  maxpt (vlax-safearray->list mx)
                  area (vla-get-area obj)
                  len (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj))
                  inspt (polar (polar minpt
                                  (angle minpt maxpt)
                                  (/ (distance minpt maxpt) 2)
                               )
                               0
                               (/ (* txtsize 14) 2)
                        )
                  inspt (list (car inspt) (+ (cadr inspt) (* txtsize 2)))
            )
            (mapcar
              '(lambda (a b)
                  (setq p (vlax-3d-point inspt))
                  (setq txtobj (vla-addtext space (strcat a b) p txtsize))
                  (vla-put-alignment txtobj 2)
                  (vla-put-textalignmentpoint txtobj p)
                  (vla-put-stylename txtobj "Standard")
                  (setq inspt (polar inspt (/ (* 270 pi) 180) (* txtsize 2)))
               )
              '(" "  )
               (list
                  (rtos (/ area 1000000.) 2 decimal)
;;                  rtos len 2 decimal)
              '("㎡" )
               )
            )
         )
      )
   )
   (princ)
)
(princ)
;;;—————————————————————————–;

관련자료

댓글 1 / 1 페이지
전체 6,913 / 1 페이지
번호
제목
이름
알림 0