면적 표기하는 리습인데 뒤에 “㎡”기호 삽입 하고 싶습니다.
(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] <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 답변