프로그램
캐드 분류

다중 면적의 합계를 계산식으로 보여지게 하고싶어요.

컨텐츠 정보

  • 213 조회
  • 2 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

현재 mm 리습으로 다중 길이의 합계를 계산식으로 텍스트 표기가 될수있게 쓰고있습니다만
위 기능을 다중 길이가 아닌 다중 면적으로 적용시키고 싶습니다 ㅠ..
도움 부탁드려요 어딜 고쳐야할지 감이 안와서요.

(defun c:MM (/ ss sslist i index linelist linenumlist ent old10 old11 dist lnum count temp total total1 subtotal txt pt)
  (vl-load-com)                                                                                            ;—->total1 추가함
  (princ "n Eltity Length Sum")
  (setvar "cmdecho" 0)


  (setq ss (ssget (list (cons 0 "LINE,CIRCLE,ARC,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE"))))
  (setq zzz (sslength ss))
  (if ss
    (progn
      (setq index 0)
      (setq linelist nil)
      (setq linenumlist nil)
      (repeat (sslength ss)
        (setq ent (ssname ss index))
        (command "lengthen" ent "")
        (setq dist (GETVAR "PERIMETER"))
        (if (apply 'or (mapcar '(lambda (x) (equal dist x 1)) linelist))
          (progn
            (setq temp 0)
            (setq lnum nil)
            (foreach x linelist
              (if (equal dist x 1)
                (setq lnum temp)
              )
              (setq temp (1+ temp))
            )
            (setq count 0)
            (setq temp nil)
            (foreach x linenumlist
              (if (= count lnum)
                (setq temp (append temp (list (+ x 1))))
                (setq temp (append temp (list x)))
              )
              (setq count (1+ count))
            )
            (setq linenumlist temp)
          )
          (progn
            (setq linelist (append linelist (list dist)))
            (setq linenumlist (append linenumlist (list 1)))
          )
        )
        (setq index (1+ index))
      )
      (setq txt "")
      (setq count 0)
      (setq total 0)
      (setq subtotal 0)
      (repeat (length linelist)
        (if (= count 0)
          (if (> (nth count linenumlist) 1)


            ;;;;(setq txt (strcat "nL = " (rtos (/ (nth count linelist) 1.0) 2 2) "*" (rtos (nth count linenumlist) 2 0) "개"))
            ;;;;(setq txt  (strcat "nL = " (rtos (/ (nth count linelist) 1.0) 2 2)))


            (setq txt (strcat "nL = " (rtos (/ (nth count linelist) 1000.0) 2 2) "*" (rtos (nth count linenumlist) 2 0) "개"))
            (setq txt  (strcat "nL = " (rtos (/ (nth count linelist) 1000.0) 2 2)))
          )
          (if (> (nth count linenumlist) 1)


            ;;;;(setq txt (strcat txt " + " (rtos (/ (nth count linelist) 1.0) 2 2) "*" (rtos (nth count linenumlist) 2 0) "개"))
            ;;;;(setq txt (strcat txt " + " (rtos (/ (nth count linelist) 1.0) 2 2)))


            (setq txt (strcat txt " + " (rtos (/ (nth count linelist) 1000.0) 2 2) "*" (rtos (nth count linenumlist) 2 0) "개"))
            (setq txt (strcat txt " + " (rtos (/ (nth count linelist) 1000.0) 2 2)))
          )
        )
        (setq subtotal (* (/ (nth count linelist) 1) (nth count linenumlist)))
        (setq total (+ subtotal total))
        (setq total1 (/ total 1000));————->추가함
        (setq count (1+ count))
      )
      ;;;;(setq txt (strcat txt " = " (rtos total 2 2) "m"))
      (setq txt (strcat txt " = " (rtos total1 2 2) "m"));——->total에서 total1 변경함
      (setq txt (strcat txt " : 객체수 " (rtos zzz 2 0) " 개"))
      (princ txt)
(if (not (setq tth (getreal (strcat "n현재 TextSize : <" (rtos(getvar "textsize") 2 1) "> 입니다. 원하는 Text 크기를 입력하세요 : "))))
    (setq tth (getvar "textsize"))
    (setvar "textsize" tth)
  )
      (setq pt (getpoint "n 텍스트 삽입점 : "))


      (if pt (command "text" pt "" "" txt))
     
    )
  )
  (princ)
)

관련자료

댓글 2 / 1 페이지

싸후니님의 댓글

그부분을 바꿨더니 면적에 대합 합계는 구해졌어요 근데 실행해보니 다양한 면적들이 표기되진 않고 면적 평균치*수량=총면적으로 수식이 형성되더라구요. ㅠㅠ  다양한 면적들 수식으로 표기되었으면 합니다만 수정이 어려울까요?

전체 7,232 / 377 페이지
번호
제목
이름
게시물이 없습니다.

최근글


새댓글


알림 0