CAFE

★ CAD/LISP/분과 Q&A

[[Lisp]]숫자 더하기를 산출과정이 보이도록 리습 구성되었으면 합니다.

작성자스르르르|작성시간12.05.04|조회수821 목록 댓글 3

 

성심 성의껏 질문을 작성하여 주세요, 대충하시면 답변도 대충작성합니다.^^

 

 - 제목 작성시 금지어

   만들어주세요? 해주세요? 안되는데 이렇게 변경해주세요? 등등

- 특정분과 질문은 제목에 분과삽입 [건축] 

   좋은예) [분과]무엇에 대해 문의합니다. /[분과]B로 바꾸는 방법을 알고싶습니다.

- 말머리 필수 

 

① CAD 종류   : AutoCAD

② VERSION   : 2012

③ 운영 체제    : 윈도우7

  

④ 질문내용 및 스크린샷(이미지 및동영상)

    

아래 구문은 인터넷에서 숫자 더하기 리습인데...

선택한 숫자들의 합의 결과값을 도면에 표기하는 리습으로 유용하게 잘 사용하고 있습니다.

(제작자님은 누군지 잘 모르겠습니다. 제작자님께는 제작자를 밝히지 못하여 죄송...)

그런데 결과값만 나타내는 것이 아니라 수식까지 함께 도면에 표현되도록 하였으면 좋겠습니다.

즉  [10],  [20],  [30],  [40] 이란 숫자를 선택하면 이 리습의 경우

결과값인 [100] 이란 숫자만이 도면에 표기되는데

이 리습을 수정하여 위 숫자를 선택하면 도면에 [ 10 + 20 + 30 + 40 = 100 ] 처럼 보이도록 하고 싶습니다.

 

 

;------------------------------------------------------------ ;;선택한 숫자들을 모두 더하기
(defun c:sum (/ z ss sno no tno sum x entity etype num h pt
               num1 eq_num num_leng)
;------------------------------------------------------------
       (setvar "cmdecho" 0)
       (prompt "\nSelect Text: ")
       (setq ss (ssget))
       (setq sno (sslength ss))
       (setq no 0)
       (setq sum 0.0)
       (setq tno 0)
       (repeat sno
           (setq x (ssname ss no))
           (setq etype (cdr (assoc 0 (entget x))))
           (if (= etype "TEXT")
               (progn
                  (setq entity (entget x))
                  (setq num1 (cdr (assoc 1 entity)))
                  (setq num_leng (strlen num1))
                  (setq num (atof num1))
                  (setq index 1)
                  (setq eq_num nil)
                  (repeat num_leng
                     (setq eq_num (substr num1 index 1))
                     (if (= eq_num "=")
                        (setq num (atof (substr num1 (+ index 1) num_leng)))
                     )
                     (setq index (+ index 1))
                  )
                  (setq sum (+ sum num))
                  (setq tno (1+ tno))
               )
           )
           (setq no (1+ no))
       )
       (setq tno (itoa tno))
       (setq sum (rtos sum 2 1))
       (princ "\nAdding ")
       (princ tno)
       (princ " \nTexts: ")
       (princ "\nThe Result is: ")
       (princ sum)
       (princ "   ")
       (princ "\nDo You Want Write it into the DWG? <y> ")
       (setq z (strcase (getstring)))
       (if (or (= z "") (= z "Y"))
           (progn
               (setq pt (getpoint "\nText Point: "))
               (setq h (getvar "textsize"))
               (prompt "\nText Height: ")
               (princ H)
               (princ "  : ")
               (setq z (getdist))
               (if z
                   (setq h z)
               )
               (command "text"
                        (setq z pt)
                        (setq z h)
                        (setq z 0.0)
                        (setq z sum)
               )
           )
       )
       (setvar "cmdecho" 1)
       (setvar "blipmode" 0)
       (prin1)
)

 

항상 많은 도움만 받는 부족한 저에게 다시 한번 리습을 수정하여 주시면 감사하겠습니다.

 

 

 

 

 

⑤ 파일첨부 (LISP/DWG) - DWG 첨부시 보다 정확한 답변을 얻을수 있습니다.

 

 

첨부파일 SANSU.LSP

 

 

 

※ 유의사항

 - ①말머리 : 말머리를 달아야 구분이 쉽겠죠^^

 - ②Screenshot : 이해를 돕기위해 삽입요망.

 - ③파일 첨부 : 상위버전에서 테스트할 파일이 아니면 가급적 하위버전으로 저장후 첨부.

                          해당리습/해당파일(DWG) 도 같이 첨부하여 주세요.

 - ④       목 : 질문 내용 반영(개략적인 내용),       예) 해치를 만들고 싶어요, pline을 연결할려면?

 - ⑤질문글 삭제금지 : 질문후 댓글이 달린글은 삭제금지.

    여러 리플러들이 소중한 시간을 내어서 고민한후 댓글을 작성한 이상 "강력조치" 토록 하겠음. 

 

※ 정답만이 댓글은 아닙니다. 그 답이 맞던 틀리던 그건 그 댓글로서 존중되어야 합니다.

    회원님들이 글을 읽었다는것과 댓글을 달았다는건 그만큼 관심을 가지고 있고 또 그 답을 해주기 위해

    검색도 해보고 도움말도 보고 고민도 하는 일련의 과정을 거치면서 나오기 때문이죠.

    이에 대한 고마움과 감사함을 모르는 테러행위(?)는 없었으면 합니다.

 

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자3:16 | 작성시간 12.05.04 음...위 리습은...고치는거 보다 새로 만드는게 더 쉬울거 같네요..^^;

    그냥..리습 말구..비포 에프터로...샘플 상황 하나 올려주는게 더 나을 거 같네요^^;
  • 작성자3:16 | 작성시간 12.05.04 일단 수정해봤습니다..^^;
  • 작성자바다소리 | 작성시간 14.06.08 감사 합니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼