곡선 길이 표기 리습 (LLABEL)

선·폴리선·호·원·스플라인·타원의 길이를 계산해 각 객체 중점에 문자로 배치합니다. 문자는 중점의 접선 방향을 따라 읽기 좋게 정렬됩니다.

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

객체마다 길이를 자동 표기

배관, 전선, 부재처럼 각 선의 길이를 도면에서 바로 확인해야 할 때 선택 객체마다 길이 문자를 만듭니다.

중점과 접선 방향 사용

  • 곡선의 실제 경로 길이 기준 중점에 배치합니다.
  • 접선 방향을 따르되 문자가 거꾸로 보이지 않게 각도를 보정합니다.
  • 원본 객체는 수정하지 않으며 계산 실패 객체는 건너뜁니다.
HOW TO USE

사용 순서

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

    APPLOAD로 length-label.lsp를 로드합니다.

  2. 2

    LLABEL을 입력합니다.

  3. 3

    소수 자릿수와 문자 높이를 지정합니다.

  4. 4

    길이를 표시할 곡선을 선택하고 Enter를 누릅니다.

SOURCE

코드 전문

명령 LLABEL

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

.lsp 다운로드
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: LLABEL
;; 기능: 선택한 곡선 중점에 길이를 접선 방향 문자로 표기
;; 출처: https://www.autocats.co.kr/lisp/length-label
;; 버전: 1.0 (2026-07-23)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 + UNDO 그룹, 원본 곡선 수정 없음
;;; ------------------------------------------------------------

(vl-load-com)

(defun autocats-llabel-length (ent / result)
  (setq result
        (vl-catch-all-apply
          '(lambda ()
             (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)))))
  (if (vl-catch-all-error-p result) nil result))

(defun autocats-llabel-readable-angle (radians)
  (if (and (> radians (/ pi 2.0)) (< radians (* 1.5 pi)))
    (+ radians pi)
    radians))

(defun autocats-llabel-create (ent precision height / length distance point param deriv angle result)
  (setq length (autocats-llabel-length ent))
  (if length
    (progn
      (setq distance (/ length 2.0)
            point (vlax-curve-getPointAtDist ent distance)
            param (vlax-curve-getParamAtPoint ent point)
            deriv (vlax-curve-getFirstDeriv ent param)
            angle (autocats-llabel-readable-angle
                    (atan (cadr deriv) (car deriv)))
            result
            (entmakex
              (list
                (cons 0 "TEXT")
                (cons 10 point)
                (cons 40 height)
                (cons 1 (rtos length 2 precision))
                (cons 7 (getvar "TEXTSTYLE"))
                (cons 50 angle))))
      result)
    nil))

(defun c:LLABEL (/ *error* doc undo-open ss idx ent precision height created skipped result)
  (defun *error* (msg)
    (if undo-open
      (progn (vla-EndUndoMark doc) (setq undo-open nil)))
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*,*취소*")))
      (princ (strcat "\n[LLABEL] 중단: " msg)))
    (princ))

  (setq precision (getint (strcat "\n[LLABEL] 소수 자릿수 <" (itoa (getvar "DIMDEC")) ">: ")))
  (if (or (null precision) (< precision 0) (> precision 8))
    (setq precision (getvar "DIMDEC")))
  (setq height (getreal (strcat "\n문자 높이 <" (rtos (getvar "TEXTSIZE") 2 precision) ">: ")))
  (if (or (null height) (<= height 0.0)) (setq height (getvar "TEXTSIZE")))
  (princ "\n[LLABEL] 길이를 표기할 곡선을 선택하세요.")
  (setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE,ARC,CIRCLE,SPLINE,ELLIPSE"))))
  (if ss
    (progn
      (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
            idx 0 created 0 skipped 0)
      (vla-StartUndoMark doc)
      (setq undo-open T)
      (while (< idx (sslength ss))
        (setq ent (ssname ss idx)
              result
              (vl-catch-all-apply
                'autocats-llabel-create
                (list ent precision height)))
        (if (or (vl-catch-all-error-p result) (null result))
          (setq skipped (1+ skipped))
          (setq created (1+ created)))
        (setq idx (1+ idx)))
      (vla-EndUndoMark doc)
      (setq undo-open nil)
      (princ (strcat "\n[LLABEL] 완료: " (itoa created)
                     "개 표기 / " (itoa skipped) "개 건너뜀")))
    (princ "\n[LLABEL] 선택된 곡선이 없습니다."))
  (princ))

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

호환 CAD

AutoCAD 2021AutoCAD 2026

위 환경에서 확인했습니다. 목록에 없는 CAD는 샘플 도면에서 먼저 결과를 대조한 뒤, CAD 종류·버전과 함께 네이버 카페에 알려주세요.

ONE-CLICK ALTERNATIVE

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

WCL / CATS_WCLCATS Pro에서는 더 다양한 곡선과 표기 설정을 버튼으로 처리합니다.

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

WORKS WELL WITH

함께 쓰면 좋은 CATS 명령

전체 명령 보기
WCL / CATS_WCLCATS Pro에서 곡선 길이를 문자로 입력합니다. LNGT / CATS_LNGT선택 곡선 길이의 전체 합계를 조회합니다.
FAQ

자주 묻는 질문

폴리선의 호 구간도 계산하나요?

예. 곡선 API의 실제 경로 길이를 사용해 호 구간을 포함합니다.

길이 문자가 객체와 겹칩니다.

가벼운 버전은 중점에 바로 배치합니다. 생성 후 MOVE로 조정하거나 CATS Pro의 고급 옵션을 사용하세요.

WORKFLOW PRODUCTS

업무 분야에 맞는 전용 자동화도 확인해 보세요.

공통 CAD 작업은 CATS Pro로, 분야별 도면과 산출 업무는 전용 제품으로 이어갈 수 있습니다.

FREE LISP + FREE ADD-IN

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

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