다중면적
컨텐츠 정보
- 214 조회
- 3 댓글
- 0 추천
- 0 비추천
-
목록
본문
여러개의 객체를 클릭했을때 그 면적의 합계를 '면적(m2):oo'으로 자동표기하는 리습을 구하고 싶습니다. 질문 게시판을 읽어보고 해도 잘 모르겠네요. 좋은 주말 되세요….
관련자료
달립니다님의 댓글
(defun c:as ( / ss index asum e obj tmparea msp spt txtobj ) (if (setq ss (ssget (list (cons 0 "CIRCLE,ARC,LWPOLYLINE,ELLIPSE,SPLINE")))) (progn (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq index 0 asum 0) (repeat (sslength ss) (setq e (ssname ss index)) (setq obj (vlax-ename->vla-object e)) (setq tmparea (vla-get-area obj)) (setq asum (+ asum tmparea)) (setq index (1+ index)) ) (prompt (strcat "n총 면적 = " (rtos (/ asum 1000000.) 2 2))) (setq slen (strlen #a))
(if (< 3 slen) (setq #b (strcat (substr #a 1 (- slen 3))","(substr #a (- slen 2)))) )
(initget 1) (setq spt (getpoint "n문자시작점: ")) (setq txtobj (vla-addtext msp (strcat "면적(m²) : " (rtos (/ asum 1000000.) 2 2)) (vlax-3d-point spt) (getvar "textsize"))) ) ) (princ) ) (vl-load-com) (prompt "n[ ASUM ]") (princ)
위의 리습을 실행하면 명령창에 면적합계는 나오는데 도면상에 문자 시작점을 찍으라는 말은 없이 그냥 명령이 종료되어 버립니다. 어떤 문구를 수정해야 할까요?
우기로기님의 댓글
(defun c:as ( / ss index asum e obj tmparea msp spt txtobj ) (if (setq ss (ssget (list (cons 0 "CIRCLE,ARC,LWPOLYLINE,ELLIPSE,SPLINE")))) (progn (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq index 0 asum 0) (repeat (sslength ss) (setq e (ssname ss index)) (setq obj (vlax-ename->vla-object e)) (setq tmparea (vla-get-area obj)) (setq asum (+ asum tmparea)) (setq index (1+ index)) ) (prompt (strcat "n총 면적 = " (rtos (/ asum 1000000.) 2 2))) ;(setq slen (strlen #a))
;(if (< 3 slen) ; (setq #b (strcat (substr #a 1 (- slen 3))","(substr #a (- slen 2)))) ????
(initget 1) (setq spt (getpoint "n문자시작점: ")) (setq txtobj (vla-addtext msp (strcat "면적(m²) : " (rtos (/ asum 1000000.) 2 2)) (vlax-3d-point spt) (getvar "textsize"))) ) ) (princ) ) (vl-load-com) (prompt "n[ ASUM ]") (princ)