프로그램
캐드 분류

길이산출 리습 수정하고 싶습니다. 도움주시면 감사하겠습니다.

컨텐츠 정보

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

본문


 안녕하세요. 

  길이산출 리습을 쓰고있습니다.

  길이산출시 합계는 치수는 잘 사용하고있습니다. 

  수정하고싶은것은 다음과같이 여러선을 산출하였을시,,, 
 
  같은길이의 치수는 객체수 갯수가 1개로  표기되는부분읍니다.

  총 6개의 길이 합계산출시 같은 길이는 하나로보고
  "객체수 5개 " 라고 출력되는 부분을 " 객체수 6개로"  출력되도록 바꾸고 싶습니다.
 
  L = 5.53*2개 + 12.51 + 1.84 + 8.72 + 1.08 = 35.21m : 객체수 5 개

  어떻게 수정하면 될까요?

  도움주시면 감사하겠습니다.


————————————————————————————————————-


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


  (setq ss (ssget (list (cons 0 "LINE,CIRCLE,ARC,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE"))))
  (if ss
    (progn
      (setq index 0)
      (setq linelist nil)
      (setq linenumlist nil)
      (repeat (sslength ss)
        (setq ent (ssname ss index))
        (command-s "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 (length linelist) 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 여분필드2 여분필드3
전체 7,337 / 1 페이지
번호
제목
이름
알림 0