해치 면적 합계 리습 (HAREA)

여러 HATCH 객체의 면적을 현재 도면 단위로 합산합니다. 결과를 명령행에서 확인하거나 원하는 위치에 문자로 남길 수 있습니다.

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

해치 물량을 한 번에 합산

마감·포장·도장처럼 해치로 구분한 여러 영역의 면적을 선택 한 번으로 더합니다.

결과와 단위

  • 연관·비연관 HATCH의 Area 속성을 읽습니다.
  • 결과는 현재 도면 단위의 제곱값입니다.
  • 면적을 읽을 수 없는 해치는 건너뜀 개수로 표시합니다.
HOW TO USE

사용 순서

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

    APPLOAD로 hatch-area.lsp를 로드합니다.

  2. 2

    HAREA를 입력합니다.

  3. 3

    면적을 합산할 해치를 선택합니다.

  4. 4

    필요하면 Y를 입력하고 결과 문자 위치를 클릭합니다.

SOURCE

코드 전문

명령 HAREA

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

.lsp 다운로드
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: HAREA
;; 기능: 선택한 HATCH 객체의 면적 합계 계산 + 도면 기입(선택)
;; 출처: https://www.autocats.co.kr/lisp/hatch-area
;; 버전: 1.0 (2026-07-23)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 + UNDO 그룹, 원본 해치 수정 없음
;;; ------------------------------------------------------------

(vl-load-com)

(defun autocats-harea-value (ent / result)
  (setq result
        (vl-catch-all-apply
          '(lambda ()
             (command "_.AREA" "_Object" ent)
             (getvar "AREA"))))
  (if (vl-catch-all-error-p result) nil result))

(defun autocats-harea-text (point value precision / wcs)
  (setq wcs (trans point 1 0))
  (entmakex
    (list
      (cons 0 "TEXT")
      (cons 10 wcs)
      (cons 40 (getvar "TEXTSIZE"))
      (cons 1 (rtos value 2 precision))
      (cons 7 (getvar "TEXTSTYLE")))))

(defun c:HAREA (/ *error* doc undo-open ss idx ent value total counted skipped precision answer point)
  (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[HAREA] 중단: " msg)))
    (princ))

  (princ "\n[HAREA] 면적을 합산할 HATCH 객체를 선택하세요.")
  (setq ss (ssget '((0 . "HATCH"))))
  (if ss
    (progn
      (setq total 0.0 counted 0 skipped 0 idx 0
            precision (getvar "DIMDEC"))
      (while (< idx (sslength ss))
        (setq ent (ssname ss idx)
              value (autocats-harea-value ent))
        (if value
          (setq total (+ total value) counted (1+ counted))
          (setq skipped (1+ skipped)))
        (setq idx (1+ idx)))
      (princ (strcat "\n[HAREA] 면적 합계: " (rtos total 2 precision)
                     "  (합산 " (itoa counted) "개 / 건너뜀 " (itoa skipped)
                     "개, 현재 도면 단위 기준)"))
      (if (> counted 0)
        (progn
          (initget "Y N")
          (setq answer
                (getkword "\n합계를 도면에 문자로 기입할까요? [예(Y)/아니오(N)] <N>: "))
          (if (= answer "Y")
            (progn
              (setq point (getpoint "\n문자 삽입 위치: "))
              (if point
                (progn
                  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
                  (vla-StartUndoMark doc)
                  (setq undo-open T)
                  (autocats-harea-text point total precision)
                  (vla-EndUndoMark doc)
                  (setq undo-open nil))))))))
    (princ "\n[HAREA] 선택된 해치가 없습니다."))
  (princ))

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

호환 CAD

AutoCAD 2021AutoCAD 2026

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

ONE-CLICK ALTERNATIVE

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

HART / CATS_HARTCATS Pro의 조회 도구에서 해치 면적 작업을 바로 실행합니다.

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

WORKS WELL WITH

함께 쓰면 좋은 CATS 명령

전체 명령 보기
HART / CATS_HARTCATS Pro에서 해치 면적을 조회합니다. ARET / CATS_ARET해치 외 다양한 닫힌 객체와 클릭 영역의 면적도 조회합니다.
FAQ

자주 묻는 질문

㎡로 자동 변환되나요?

아닙니다. 결과는 현재 도면 단위 기준입니다. mm 도면의 값을 ㎡로 사용할 때는 단위 환산이 필요합니다.

해치 경계를 수정하나요?

아닙니다. HAREA는 Area 속성만 읽으며 원본 해치는 변경하지 않습니다.

WORKFLOW PRODUCTS

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

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

FREE LISP + FREE ADD-IN

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

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