← 목록
기타 2026-06-15 4KB 읽기 4분

크라우니캐드 — AutoCAD R12 수준 2D CAD (순수 한선씨, 듀얼 UX)

개요

CATIA/CDP 대용 CAD를 AutoCAD R12 수준 2D 드래프팅부터 완성. 순수 한선씨 단일코드 → 크라우니VM 위 CrownyOS 네이티브(FB) + 웹(브라우저 캔버스) 동일 UX. 우리가 이미 보유한 DXF R12가 결정적 출발점.

현황파악(4-탐색) 핵심

  • 자산: 도면엔진 13모듈(순수 한선씨, DXF R12 완비) + NURBS커널 + 웹코드 듀얼렌더(4942분기)
  • VM 동시실행: GUI분리(Cocoa+VM스레드)/이벤트큐(이벤트확인810)/멀티프로세스
  • 네이티브: FB opcode(화면초기화/선긋기/원그리기/글쓰기) + 마우스/키
  • 갭→신규: 뷰포트 변환(줌/팬), 엔티티 모델, 명령, 듀얼렌더 캔버스

아키텍처 (모듈)

  • 캐드기반.한선 — 핵심 계약: 엔티티 모델(병렬배열 선/원/호/문자) + 뷰포트(world↔screen,줌/팬) + 듀얼렌더(네이티브 FB / 웹 canvas JS) + 도(degree) sin/cos(Bhaskara, 사인/코사인 정수라디안 한계 회피)
  • 캐드명령.한선 — R12 명령 파서(LINE/CIRCLE/ARC/TEXT/ERASE/LAYER/ZOOM E/PAN), 전체보기
  • 캐드편집.한선 — 이동/복사/회전/배율/간격복사
  • 캐드DXF.한선 — 엔티티 ↔ DXF R12 in/out (도면엔진 재사용)
  • 크라우니캐드웹.한선 — 인터랙티브 웹 CAD HTML 생성(캔버스 줌/팬, 툴바, 명령행, 레이어패널, DXF다운로드)
  • apps/크라우니캐드.한선 — CrownyOS 네이티브 FB 이벤트 루프 앱(--window)

검증 (동일 UX 증명)

  • 웹: R12 명령으로 작도 → /tmp/크라우니캐드.html → Chrome 렌더 = 사각형+원3+호+중심선+텍스트+그리드+레이어패널 정상
  • 네이티브: 같은 엔티티 → FB 렌더 → PPM → PNG = 웹과 동일 도면(호 상단 일치)
  • DXF R12 내보내기(LINE/CIRCLE/ARC/TEXT) 검증
  • 라이브: design.crowny.org/cad/ (200)

빌드/실행

bashcd /Users/ef/CrownyOS/crownyc
# 웹 생성: 가져오기 크라우니캐드웹 → 캐드웹페이지() → html
# 네이티브: CROWNY_STD=./pkg/libs ./hanseonc_high ../apps/크라우니캐드.한선 > /tmp/cad.toau; ./crownyc run --window /tmp/cad.toau

버그 수정 기록

  • 웹 JS SyntaxError: setTool msgs pan:'PAN: 드래그} 닫는따옴표 누락 → 전체 스크립트 중단(빈 캔버스). 수정.
  • 선 끝점 인덱스 오매핑(웹+네이티브): lineTo(d,f)→(c,d), _그선 (엔c,엔d). 수정.
  • 호 사인/코사인: 정수 라디안만 받아 분수각 0 → Bhaskara 도기반 sin/cos 자체구현. 네이티브 Y-flip 부호 정합.
  • 인라인 ; 주석 다중단어 파싱오류 → // 사용.

잔여/다음 (R12→상위)

  • 캐드편집 회전도 사인/코사인 정수라디안 → 캐드_sin도/cos도로 교체(정밀).
  • R12 추가 명령: OFFSET/TRIM/EXTEND/FILLET/POLYLINE/DIM 통합(도면엔진 치수 연결), SNAP/ORTHO/OSNAP.
  • 블록/INSERT, DXF 가져오기 16KB캡(파일스트리밍) 확장.
  • 네이티브 --window 실트래픽 인터랙션 검증, 3D(R13+) 로드맵.

2차 — R12 상위명령 + 인터랙티브 검증 (병행)

Track A: R12 상위명령 (소넷 4병렬)

  • 캐드편집2.한선: OFFSET(간격띄우기)/TRIM(자르기)/EXTEND(연장)/FILLET(모깎기) — 선·원 교점 기하
  • 캐드폴리선.한선: POLYLINE/닫기/사각형/정다각형
  • 캐드치수.한선: 선형(가로/세로/정렬)+반지름 DIM (치수보조선+화살표+문자 엔티티)
  • 캐드스냅.한선: SNAP(격자)/ORTHO/OSNAP(끝점·중점·중심·사분점)
  • 통합검증: 41엔티티 기계부품(사각형+모깎기+동심원+볼트홀+중심선+육각형+치수 340/200/R70) → 웹+네이티브 동일 렌더 + DXF R12 41엔티티

Track B: 인터랙티브 실사용 검증

  • 네이티브 앱 핸들러(툴바클릭처리/도면클릭처리/캐드키처리)에 합성 이벤트 주입 → L키→선2개, C키→원, E키→삭제, Z키→줌 전 경로 검증. 툴바·상태바·명령행 실시간 갱신 확인.

VM 함정 발견

  • 루트(x)=floor(√x) 정수(×1000 아님) → 정밀거리 루트(d2*10000)/100. [[feedback_hanseon_root_floor]]
  • 사인/코사인 정수라디안만 → Bhaskara 도기반 캐드_sin도/cos도. [[feedback_hanseon_sin_cos_integer_radian]]

라이브

  • design.crowny.org/cad/ = R12 기계부품 도면(치수 포함). output/크라우니캐드R12.{html,dxf,웹.png,네이티브.png}+인터랙션.png