현재 제가 쓰고있는 리습인데 결과로 나오는 수치가 음수(-)로 나오게 변경해주시면 감사하겠습니다..^^
m단위로 부탁드립니다. 1000mm -> 1m 단위
비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.
You must login to ask a question.
해당 질문을 신고하는 이유를 간단히 입력해주세요.
해당 답변을 신고하는 이유를 간단히 입력해주세요.
해당 유저를 신고하는 이유를 간단히 입력해주세요.
현재 제가 쓰고있는 리습인데 결과로 나오는 수치가 음수(-)로 나오게 변경해주시면 감사하겠습니다..^^
도형 각각의 면적을 구해주는 리습인데요
이게 단위가 mm단위로 표기되어서 이걸
m단위로 소수점 3째자리까지 표기 될 수 있도록 부탁드립니다.
예를들어 400.000m2 으로 나올 수 있도록 부탁드립니다.
(defun c:aaa ( / doc space ss index obj mi mx minpt maxpt inspt area txtobj )
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(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,ELLIPSE,SPLINE”))))
(progn
(setq index 0)
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss index)))
(vla-getboundingbox obj ‘mi ‘mx)
(setq minpt (vlax-safearray->list mi))
(setq maxpt (vlax-safearray->list mx))
(setq inspt (polar minpt (angle minpt maxpt) (/ (distance minpt maxpt) 2)))
(setq area (vla-get-area obj))
(setq txtobj (vla-addtext space (rtos area 2 4) (vlax-3d-point inspt) (getvar “textsize”)))
(vla-put-alignment txtobj 4)
(vla-put-textalignmentpoint txtobj (vlax-3d-point inspt))
(setq index (1+ index))
)
)
)
(princ)
)
(vl-load-com)
(prompt “n[ AAA ]”)
(princ)
(defun c:ar2 (/ arRegionCenter arRtos arSta arEnd acDoc acSpc ss m2 py textHeigth iPt iPt1 iPt2 tObj)
(defun arRegionCenter (obj / closed regObj cenPt)
(setq closed (if (= (vla-get-closed obj) :vlax-true) 0 1))
(and (= closed 1)(vla-put-closed obj :vlax-true))
(setq regObj (car (vlax-invoke acSpc ‘addRegion (list obj))))
(and (= closed 1)(vla-put-closed obj :vlax-false))
(setq cenPt (vla-get-Centroid regObj))
(vla-delete regObj)
(vlax-safearray->list (vlax-variant-value cenPt))
)
(defun arRtos (n d / re ls m L s r)
(defun re (L n / r)
(if L (cons (reverse (repeat (if (> (length L) (1- n)) n (length L))
(setq r (cons (car L) r) L (cdr L)) r))(re L n)))
)
(defun ls (L d)(if (cdr L)(strcat (car L) d (ls (cdr L) d))(car L)))
(and (= (type n) ‘STR)(setq n (atof n)))
(and (minusp n)(setq m t n (abs n)))
(setq L (re (reverse (mapcar ‘chr (vl-string->list (itoa (fix n))))) 3))
(setq s (ls (reverse (mapcar ‘(lambda (x) (apply ‘strcat (reverse x))) L)) “,”))
(if m (setq s (strcat “-” s)))
(if (> d 0)
(progn
(setq r (apply ‘strcat (cddr (mapcar ‘chr (vl-string->list (rtos (abs (- n (fix n))) 2 d))))))
(if (> (setq i (- d (strlen r))) 0)(repeat i (setq r (strcat r “0”))))
(strcat s “.” r)
) s
)
)
(defun *error* (msg)(arEnd)
(if (not (wcmatch (strcase msg) “*BREAK,*CANCEL*,*EXIT*”))
(princ (strcat “n** Error: ” msg ” **”)))(princ)
)
(defun arSta (/ lst o)(arEnd)
(setq gv (mapcar ‘getvar (setq gvL ‘(“OSMODE” “CMDECHO”))))
(mapcar ‘setvar gvL ‘(0 0))(vla-startundomark acDoc)
)
(defun arEnd ()
(if (and gvL gv)(mapcar ‘setvar gvL gv))
(if (= 8 (logand 8 (getvar ‘UNDOCTL)))(vla-endundomark acDoc))
)
(vl-load-com)
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(setq acSpc (vlax-get-property acDoc (if (= 1 (getvar ‘CVPORT)) ‘paperspace ‘modelspace)))
(arSta)
(if (setq ss (ssget “:S” ‘((0 . “LWPOLYLINE”))))
(progn
(setq obj (vlax-ename->vla-object (ssname ss 0)))
(setq m2 (arRtos (vla-get-Area obj) 3)) ;면적(M2)
(setq py (arRtos (* (vla-get-Area obj) 0.3025) 3)) ;면적(PY)
(prompt “nArea (M2): “)(princ m2)
(prompt “nArea (Py): “)(princ py)(princ)
(setq textHeigth (* (getvar “dimscale”) 2)) ;문자크기
(setq iPt (arRegionCenter obj)) ;선택한 객체의 중심점
(setq iPt1 (vlax-3d-point (list (car iPt) (+ (cadr iPt) (* textHeigth 1.0)) 0.0)))
(setq iPt2 (vlax-3d-point (list (car iPt) (- (cadr iPt) (* textHeigth 1.0)) 0.0)))
(setq tObj (vla-addtext acSpc (strcat “면적(M2) : ” m2) iPt1 textHeigth))
(vla-put-Alignment tObj acAlignmentMiddleCenter)(vla-put-TextAlignmentPoint tObj iPt1)
(setq tObj (vla-addtext acSpc (strcat “면적(PY) : ” py) iPt2 textHeigth))
(vla-put-Alignment tObj acAlignmentMiddleCenter)(vla-put-TextAlignmentPoint tObj iPt2)
)
)(arEnd)(princ)
)
수고하세요
감사합니다~!~! ^^