오토캐드 길이 합계 리습 (LSUM)

선, 폴리선, 호, 원, 스플라인을 드래그로 선택하면 전체 길이 합계를 한 번에 계산합니다. 배관·전선 길이 산출, 부재 물량 검토처럼 길이를 더해야 하는 모든 작업에 씁니다.

코드 전문 공개 · 다운로드 파일과 100% 동일 · 출처 표기 후 자유 사용

길이를 하나씩 재고 있다면

배관 물량, 전선 길이, 보·기둥 부재 길이를 산출할 때 객체를 하나씩 클릭해 특성 창의 길이를 읽고 있다면, 그 시간의 대부분은 LSUM으로 없앨 수 있습니다.

LSUM은 선택한 곡선 객체(선·폴리선·호·원·스플라인·타원)의 길이를 모두 더해 합계를 보여줍니다. 폴리선은 호 구간을 포함한 실제 경로 길이로 계산합니다.

동작 방식과 주의할 점

  • 합계는 현재 도면 단위 기준입니다. mm 도면이면 mm 합계이므로, m 단위 물량표에 옮길 때 단위 환산을 잊지 마세요.
  • 닫힌 폴리선과 원은 둘레 길이로 계산됩니다. 둘레를 빼고 싶다면 선택에서 제외하세요.
  • 치수(DIM) 객체와 블록 내부의 선은 합산 대상이 아닙니다. 블록은 분해 전 상태 그대로는 계산되지 않습니다.
  • 레이어를 켜고 끄거나 빠른 선택(QSELECT)으로 대상 레이어만 남긴 뒤 드래그하면 원하는 계통만 정확히 합산할 수 있습니다.

이런 작업에 씁니다

  • 설비·전기: 배관/덕트/트레이/전선 루트 총 길이 산출
  • 토목: 경계석·측구·관로 연장 집계
  • 건축·구조: 부재 길이 합계, 몰딩·걸레받이 물량 검토
HOW TO USE

사용 순서

리습 로드가 처음이라면
  1. 1

    APPLOAD 명령으로 내려받은 length-sum.lsp를 로드합니다.

  2. 2

    명령행에 LSUM 을 입력합니다.

  3. 3

    길이를 합산할 객체를 드래그로 선택하고 Enter.

  4. 4

    명령행에서 길이 합계와 합산·건너뜀 개수를 확인합니다.

  5. 5

    합계를 도면에 남기려면 Y 입력 후 삽입 위치를 클릭합니다.

SOURCE

코드 전문

명령 LSUM

다운로드 파일은 아래 코드와 100% 동일합니다. 붙여넣기보다 파일 다운로드 후 APPLOAD 로드를 권장합니다.

.lsp 다운로드
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: LSUM
;; 기능: 선택한 선·폴리선·호·원·스플라인의 길이 합계 계산 + 도면 기입(선택)
;; 출처: https://www.autocats.co.kr/lisp/length-sum
;; 버전: 1.0 (2026-07-20)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 포함, 도면 저장·종료 등 파괴적 동작 없음
;;; ------------------------------------------------------------

(defun c:LSUM (/ *error* ss idx ent len res sum cnt skip pt)

  (defun *error* (msg)
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*,*취소*")))
      (princ (strcat "\n[LSUM] 중단: " msg)))
    (princ))

  (vl-load-com)
  (princ "\n[LSUM] 길이를 합산할 객체(선·폴리선·호·원·스플라인·타원)를 선택하세요.")
  (setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE,ARC,CIRCLE,SPLINE,ELLIPSE"))))
  (if ss
    (progn
      (setq idx 0 sum 0.0 cnt 0 skip 0)
      (while (< idx (sslength ss))
        (setq ent (ssname ss idx)
              res (vl-catch-all-apply
                    '(lambda ()
                       (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)))))
        (if (or (vl-catch-all-error-p res) (null res))
          (setq skip (1+ skip))
          (setq sum (+ sum res) cnt (1+ cnt)))
        (setq idx (1+ idx)))
      (princ (strcat "\n[LSUM] 길이 합계: " (rtos sum 2 4)
                     "  (합산 " (itoa cnt) "개 / 건너뜀 " (itoa skip) "개, 현재 도면 단위 기준)"))
      (if (> cnt 0)
        (progn
          (initget "Y N")
          (if (= (getkword "\n합계를 도면에 문자로 기입할까요? [예(Y)/아니오(N)] <N>: ") "Y")
            (progn
              (setq pt (getpoint "\n문자 삽입 위치 클릭: "))
              (if pt
                (entmake (list (cons 0 "TEXT")
                               (cons 10 pt)
                               (cons 40 (getvar "TEXTSIZE"))
                               (cons 1 (rtos sum 2 4))
                               (cons 7 (getvar "TEXTSTYLE")))))))))
      )
    (princ "\n[LSUM] 선택된 객체가 없습니다."))
  (princ))

(princ "\n[AutoCATS] LSUM 로드 완료 - 명령행에 LSUM 을 입력하세요.")
(princ)
COMPATIBILITY

호환 CAD

AutoCAD 2010+BricsCADZWCADGstarCAD

AutoLISP을 지원하는 CAD에서 동작합니다. 문제가 있다면 네이버 카페에 CAD 종류·버전과 함께 남겨주세요.

ONE-CLICK ALTERNATIVE

이 기능, CATS Pro에는 버튼으로 있습니다

LNGT / CATS_LNGT레이어별·색상별 필터까지 지원하는 길이 합산이 버튼 클릭 한 번에 됩니다.

CATS Pro는 계속 무료입니다. 리습 로드 없이 버튼 클릭으로 같은 작업을 처리할 수 있습니다.

WORKS WELL WITH

함께 쓰면 좋은 CATS 명령

전체 명령 보기
LOADLISPSATFOLDER / CATS_LOADLISPSATFOLDER받은 리습을 폴더째 한 번에 로드합니다. WCL / CATS_WCL개별 객체의 길이를 객체 위에 문자로 바로 기입할 때 사용합니다.
FAQ

자주 묻는 질문

일부 객체가 건너뜀으로 표시됩니다. 왜 그런가요?

길이를 계산할 수 없는 상태의 객체(잠긴 프록시 객체 등)는 건너뜁니다. 건너뜀 개수가 표시되므로 누락 여부를 바로 알 수 있고, 해당 객체만 다시 확인하면 됩니다.

CADian에서도 동작하나요?

이 리습은 곡선 길이 계산에 ActiveX(vlax-curve) 함수를 사용합니다. AutoCAD·BricsCAD·ZWCAD·GstarCAD에서 확인되었으며, CADian은 버전에 따라 다를 수 있어 호환 목록에서 제외했습니다. 사용해 보시고 결과를 카페에 알려주시면 반영하겠습니다.

FREE LISP + FREE ADD-IN

리습과 CATS Pro를 함께 쓰세요.

리습은 가볍게, 반복 작업은 CATS Pro 버튼으로. 둘 다 무료입니다.