Skip to content

주석 명령 ​

이 페이지는 cad-viewer에서 주석 명령이 어떻게 구현되는지, 즉 명령 계층과 UI 상호 작용 계층을 모두 소개합니다.
설계는 시스템 변수, 현재 레이어, 엔티티 그리기 스타일과 같은 AutoCAD 유사 개념을 충실히 따릅니다.

개요 ​

cad-viewer의 주석(주석 원, 사각형, 클라우드 사각형, 스케치 등)은 다음과 같이 구현됩니다:

  • 공통 기본 클래스에서 파생된 특수화된 명령
  • 전용 주석 레이어에 동적으로 생성되는 엔티티
  • 레이어 스타일 대신 시스템 변수로 제어되는 그리기 스타일
  • 명령 실행 중 시스템 변수를 변경하는 임시 UI 툴바

이 접근 방식은 다음을 보장합니다:

  • 모든 주석 명령에서 일관된 동작
  • 모든 주석의 간편한 표시/숨기기
  • AutoCAD 스타일 작업 흐름에 대한 친숙함

명령 파트 ​

기본 명령 클래스 ​

모든 주석 관련 명령은 동일한 기본 클래스를 상속합니다:

이 기본 클래스는 다음과 같은 공통 동작을 중앙 집중화합니다:

  • 주석 레이어 관리
  • 시스템 변수 백업 및 복원
  • 명령 수명 주기 처리(시작 / 종료 / 취소)

AcApBaseRevCmd를 상속함으로써 모든 주석 명령은 동일한 실행 패턴과 시스템 변수 동작을 따릅니다.

주석 레이어 관리 ​

모든 주석 엔티티는 전용 주석 레이어에 생성되며, 이 레이어는:

  • 존재하지 않으면 동적으로 생성됩니다
  • 주석 명령 실행 중에만 사용됩니다

내부적으로는 다음 시스템 변수를 조작하여 이를 달성합니다:

  • clayer(현재 레이어)

작업 흐름 ​

  1. 주석 엔티티를 생성하기 전:

    • clayer의 원래 값이 저장됩니다
    • clayer가 주석 레이어로 전환됩니다
  2. 주석 엔티티가 생성됩니다

  3. 명령이 끝난 후(또는 취소된 후):

    • clayer가 원래 값으로 복원됩니다

이를 통해 다음이 보장됩니다:

  • 주석은 항상 올바른 레이어에 배치됩니다
  • 사용자의 레이어 상태가 영구적으로 변경되지 않습니다

주석 표시 / 숨기기 ​

주석 숨기기 또는 표시는 단순히 다음을 통해 구현됩니다:

  • 주석 레이어를 숨기거나 표시

엔티티별 가시성 로직이 필요하지 않습니다.
이로써 주석 가시성 관리가 효율적이고 일관되게 유지됩니다.

엔티티 그리기 스타일 확인 ​

주석 엔티티는 외형에 레이어 스타일을 사용하지 않습니다.

대신 그리기 스타일은 다음을 포함한 시스템 변수에서 확인됩니다:

  • cecolor — 현재 엔티티 색상
  • celweight — 현재 엔티티 선 가중치

이 설계는 다음을 가능하게 합니다:

  • 각 주석이 생성 시점의 시각적 스타일을 유지합니다
  • 레이어 스타일 변경이 기존 주석에 영향을 주지 않습니다

UI 파트 ​

엔티티 그리기 스타일 툴바 ​

주석 엔티티를 생성할 때 다음 UI 컴포넌트가 표시됩니다:

동작 ​

  • 뷰어의 상단 중앙에 나타납니다

  • 사용자가 다음을 수정할 수 있습니다:

    • 색상
    • 선 가중치
    • 기타 엔티티 그리기 스타일

이 툴바가 파일 이름 표시와 겹치기 때문에:

  • 툴바가 표시되는 동안 파일 이름이 일시적으로 숨겨집니다

시스템 변수 바인딩 ​

MlEntityDrawStyleToolbar에 대한 사용자 상호 작용은 다음과 같은 시스템 변수를 직접 수정합니다:

  • cecolor
  • celweight

이 시스템 변수는 생성 중에 주석 엔티티에서 사용되며, 다음을 보장합니다:

  • 사용자가 툴바에서 보는 내용이 그려지는 내용과 일치합니다
  • 주석 동작이 AutoCAD 스타일 작업 흐름과 일관됩니다

시스템 변수 복원 ​

주석 명령이 끝난 후(성공 여부와 관계없이):

  • 수정된 시스템 변수(cecolor, celweight 등)가 원래 값으로 복원됩니다

이를 통해 다음이 보장됩니다:

  • 주석 명령이 전역 도면 상태에 영구적으로 영향을 주지 않습니다
  • 사용자가 주석 명령과 일반 그리기 명령 사이를 안전하게 전환할 수 있습니다

요약 ​

cad-viewer의 주석 시스템은 세 가지 핵심 아이디어를 중심으로 구축됩니다:

  1. 명령 상속

    • 모든 주석 명령이 공통 기본 구현을 공유합니다
  2. 레이어 기반 구성

    • 모든 주석이 동적으로 관리되는 주석 레이어에 존재합니다
  3. 시스템 변수 기반 스타일

    • 그리기 스타일이 레이어 스타일이 아닌 시스템 변수로 제어됩니다

이 아키텍처는 다음을 제공합니다:

  • 예측 가능한 명령 동작
  • 간편한 주석 관리
  • 익숙한 CAD 스타일 사용자 경험