닫힌 폴리라인 면적 합계 리습 (PLASUM)

닫힌 LWPOLYLINE 여러 개의 면적을 명령행에서 합산합니다. 열린 폴리라인은 제외하며, 원본 객체를 수정하거나 결과 문자를 만들지 않습니다.

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

닫힌 경량 폴리라인만 합산

선택한 LWPOLYLINE의 닫힘 플래그를 확인한 뒤 면적을 읽도록 구성했습니다. 열린 폴리라인과 면적을 읽을 수 없는 객체는 제외 개수로 표시합니다. 기존 해치 면적 합계 HAREA와는 대상 객체가 다릅니다.

합계 해석과 선택 범위

  • 결과는 도면 단위의 제곱값입니다. mm 도면에서 ㎡로 환산하려면 1,000,000으로 나눕니다.
  • 겹친 영역도 각 객체 면적을 그대로 더합니다. 합집합 계산이나 내부 구멍 빼기를 하지 않습니다.
  • 자가 교차·중복 경계는 입력에서 제외하고 별도로 점검하세요.
  • 구형 POLYLINE, 3D 폴리라인, 해치, 블록·외부참조 내부 객체는 대상에서 제외합니다.
  • 원본 객체를 수정하거나 결과 문자를 만들지 않는 명령행 조회용 리습입니다.

실제 CAD 실행 결과

10×10과 10×20 닫힌 경량 폴리라인, 열린 폴리라인을 함께 선택한 결과입니다. 명령행에서 면적 합계 300, 합산 2개, 제외 1개를 확인했습니다. 시험 도면은 mm 단위로 준비했으므로 합계는 300 mm²입니다.

AutoCAD 2021·2026 Core Console 수치 검사는 각각 7개를 통과했습니다. 아래 화면의 CAD 제품·버전은 확인되지 않았으며, 다른 CAD 호환성이나 취소·호 구간·자가 교차 결과를 보장하지 않습니다.

닫힌 10×10·10×20 폴리라인과 열린 폴리라인, PLASUM 합계 300 및 합산 2개·제외 1개가 보이는 실제 CAD 화면
실제 실행 원본: 세 객체 선택 후 합계 300, 합산 2개, 제외 1개. CAD 제품·버전은 미상입니다.
HOW TO USE

사용 순서

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

    복사한 시험 도면에서 APPLOAD로 polyline-area-sum.lsp를 로드합니다.

  2. 2

    PLASUM을 입력하고 합산할 경량 폴리라인을 선택합니다.

  3. 3

    Enter 후 면적 합계와 합산·제외 개수를 확인합니다.

  4. 4

    특성 창의 개별 면적과 대조하고 도면 단위를 확인한 뒤 필요한 단위로 환산합니다.

SOURCE

코드 전문

명령 PLASUM

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

.lsp 다운로드
;;; AutoCATS - draft, not a public download.
;; 명령: PLASUM
;; 출처: AutoCATS 자체 작성 (공개 전 초안)
;; 버전: 0.1 (2026-10-22)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; Read-only sum of closed LWPOLYLINE areas; no union or hole subtraction.
;; API reference: Autodesk AutoLISP vlax-curve-getArea.

(vl-load-com)

(defun autocats-plasum-value (ent / data result)
  (setq data (entget ent))
  (if (and (= "LWPOLYLINE" (cdr (assoc 0 data)))
           (= 1 (logand 1 (cdr (assoc 70 data)))))
    (progn
      (setq result
        (vl-catch-all-apply 'vlax-curve-getArea
          (list ent)))
      (if (and (not (vl-catch-all-error-p result)) (numberp result))
        (abs result)))))

(defun autocats-plasum-total (ss / idx value total counted skipped)
  (setq idx 0 total 0.0 counted 0 skipped 0)
  (if ss
    (repeat (sslength ss)
      (setq value (autocats-plasum-value (ssname ss idx)))
      (if value
        (setq total (+ total value) counted (1+ counted))
        (setq skipped (1+ skipped)))
      (setq idx (1+ idx))))
  (list total counted skipped))

(defun c:PLASUM (/ *error* ss result)
  (defun *error* (msg)
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*,*취소*")))
      (princ (strcat "\n[PLASUM] 중단: " msg)))
    (princ))
  (princ "\n[PLASUM] 면적을 합산할 경량 폴리라인을 선택하세요.")
  (setq ss (ssget '((0 . "LWPOLYLINE"))))
  (if ss
    (progn
      (setq result (autocats-plasum-total ss))
      (princ (strcat "\n[PLASUM] 면적 합계: " (rtos (car result) 2 6)
        " (합산 " (itoa (cadr result)) "개 / 제외 " (itoa (caddr result))
        "개, 도면 단위의 제곱값)")))
    (princ "\n[PLASUM] 선택된 경량 폴리라인이 없습니다."))
  (princ))

(princ)

검증 환경

자동 수치 검사와 실제 실행 결과의 확인 범위는 위 설명을 참고하세요. CAD 제품·버전별 대화형 호환성 목록은 아직 확정하지 않았습니다.

WORKS WELL WITH

함께 쓰면 좋은 CATS 명령

전체 명령 보기
ARET / CATS_ARETCATS Pro의 면적 조회 명령 안내도 확인할 수 있습니다.
FAQ

자주 묻는 질문

열린 폴리라인도 자동으로 닫나요?

닫지 않습니다. 닫힘 플래그가 없는 경량 폴리라인은 제외합니다.

해치나 겹친 영역의 순면적도 계산하나요?

해치는 HAREA 안내를 확인하세요. PLASUM은 개별 경량 폴리라인 면적의 단순 합이며 겹침이나 구멍을 보정하지 않습니다.

WORKFLOW PRODUCTS

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

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

FREE LISP + FREE ADD-IN

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

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