feat(B07): CAD를 AutoCAD 명령 체계로 재구성한다 (조사표 1·2·3·5절)
저장소 사고로 잃은 4개 커밋(38eb7cd4·b8a11756·281528bf·f60b488d)의 작업물을 하나로 다시 담았다. 내용은 동일하다. ■ 구조 - commands/: 명령 정의(id·AutoCAD 별칭·글리프·도구/즉시실행)를 단일 소스로 두고 리본·명령행·단축키가 모두 이 레지스트리를 읽는다. tools/tool.consts.ts 폐지. - ribbon/: 탭→패널→명령 데이터(ribbon.config.ts)와 범용 렌더러 분리. AutoCAD 배치(홈·삽입·주석·뷰·출력)와 패널 확장(▾)을 따른다. - tools/factories/sequence-tool.ts: 점·숫자·문자·객체·선택 단계를 선언하면 xstate 머신을 만들어 주는 공장. 명령당 170줄 보일러플레이트 제거. - helpers/geometry/: 3점 호·정다각형·타원·스플라인·구름형·평행이동·해치 스캔선· 점렬 샘플링 등 상태 없는 순수 함수. - Toolbar 483줄을 QuickAccessBar/Ribbon/InspectorPanel/StatusBar/CommandLine/ ViewControls/PropertiesEditor/QuickProperties로 분해. ■ 명령 (조사표 기준) - 1절 그리기 21건, 2절 수정 27건, 3절 도면층·특성·그룹·유틸리티 39건 전부 반영. - 5절 주석 34건 중 26건 반영(문자·치수 16종·지시선·표·구름형·주석 축척). - HatchEntity 추가(solid·pattern·cross·gradient) + JSON 왕복, Layer에 색·선가중치· 선종류·동결·투명도 필드 추가, 그리기 루프가 동결·숨김·투명도를 반영. ■ 화면 실측에서 고친 결함 - 명령행 포커스 상태에서 ENTER가 도구로 가지 않던 문제 - 명령행 문자 입력이 접두사가 같은 명령으로 실행되던 문제 - 명령이 끝나도 입력을 계속 먹던 문제(점 입력 명령만 반복, 나머지는 선택 도구 복귀) - 시퀀스 단계 인덱스 오사용 9건 + 단계 값 종류 검사 추가 - 해치 내부를 클릭해도 선택되지 않던 문제 미반영 8건(맞춤법 검사·꺾기 치수·치수 끊기/재연관/검사 치수·기하공차·지시선 수집· 축척 리스트 편집)은 조사표 `반영` 열과 PLAN.md에 사유를 적었다.
This commit is contained in:
@@ -9,7 +9,6 @@ export enum Tool {
|
||||
ERASER = 'ERASER',
|
||||
IMAGE_IMPORT = 'IMAGE_IMPORT',
|
||||
ROTATE = 'ROTATE',
|
||||
MEASUREMENT = 'MEASUREMENT',
|
||||
ALIGN_LEFT = 'ALIGN_LEFT',
|
||||
ALIGN_RIGHT = 'ALIGN_RIGHT',
|
||||
ALIGN_CENTER_HORIZONTAL = 'ALIGN_CENTER_HORIZONTAL',
|
||||
@@ -17,5 +16,105 @@ export enum Tool {
|
||||
ALIGN_BOTTOM = 'ALIGN_BOTTOM',
|
||||
ALIGN_CENTER_VERTICAL = 'ALIGN_CENTER_VERTICAL',
|
||||
ARRAY = 'ARRAY',
|
||||
PEDIT = 'PEDIT'
|
||||
PEDIT = 'PEDIT',
|
||||
// 조사표 1절 — 그리기
|
||||
PLINE = 'PLINE',
|
||||
ARC = 'ARC',
|
||||
POLYGON = 'POLYGON',
|
||||
ELLIPSE = 'ELLIPSE',
|
||||
SPLINE = 'SPLINE',
|
||||
MLINE = 'MLINE',
|
||||
MLSTYLE = 'MLSTYLE',
|
||||
XLINE = 'XLINE',
|
||||
RAY = 'RAY',
|
||||
POINT = 'POINT',
|
||||
DONUT = 'DONUT',
|
||||
DIVIDE = 'DIVIDE',
|
||||
MEASURE_LENGTH = 'MEASURE_LENGTH',
|
||||
HATCH = 'HATCH',
|
||||
GRADIENT = 'GRADIENT',
|
||||
BOUNDARY = 'BOUNDARY',
|
||||
REGION = 'REGION',
|
||||
WIPEOUT = 'WIPEOUT',
|
||||
// 조사표 2절 — 수정
|
||||
MIRROR = 'MIRROR',
|
||||
ALIGN = 'ALIGN',
|
||||
OFFSET = 'OFFSET',
|
||||
STRETCH = 'STRETCH',
|
||||
LENGTHEN = 'LENGTHEN',
|
||||
FILLET = 'FILLET',
|
||||
CHAMFER = 'CHAMFER',
|
||||
BLEND = 'BLEND',
|
||||
BREAK = 'BREAK',
|
||||
BREAK_AT_POINT = 'BREAK_AT_POINT',
|
||||
EXTEND = 'EXTEND',
|
||||
JOIN = 'JOIN',
|
||||
EXPLODE = 'EXPLODE',
|
||||
ERASE = 'ERASE',
|
||||
MATCHPROP = 'MATCHPROP',
|
||||
DRAWORDER_FRONT = 'DRAWORDER_FRONT',
|
||||
DRAWORDER_BACK = 'DRAWORDER_BACK',
|
||||
SETBYLAYER = 'SETBYLAYER',
|
||||
REVERSE = 'REVERSE',
|
||||
OVERKILL = 'OVERKILL',
|
||||
HATCHEDIT = 'HATCHEDIT',
|
||||
// 조사표 3절 — 도면층·특성·그룹·유틸리티
|
||||
LAYER_CURRENT = 'LAYER_CURRENT',
|
||||
LAYOFF = 'LAYOFF',
|
||||
LAYFRZ = 'LAYFRZ',
|
||||
LAYLCK = 'LAYLCK',
|
||||
LAYULK = 'LAYULK',
|
||||
LAYISO = 'LAYISO',
|
||||
LAYERSTATE = 'LAYERSTATE',
|
||||
LAYERSTATE_RESTORE = 'LAYERSTATE_RESTORE',
|
||||
LAYMCH = 'LAYMCH',
|
||||
LAYCUR = 'LAYCUR',
|
||||
LAYMRG = 'LAYMRG',
|
||||
LAYDEL = 'LAYDEL',
|
||||
TRANSPARENCY = 'TRANSPARENCY',
|
||||
GROUP = 'GROUP',
|
||||
UNGROUP = 'UNGROUP',
|
||||
DIST = 'DIST',
|
||||
RADIUS_INQUIRY = 'RADIUS_INQUIRY',
|
||||
ANGLE_INQUIRY = 'ANGLE_INQUIRY',
|
||||
AREA = 'AREA',
|
||||
ID_POINT = 'ID_POINT',
|
||||
QUICKCALC = 'QUICKCALC',
|
||||
MEASUREGEOM = 'MEASUREGEOM',
|
||||
QSELECT = 'QSELECT',
|
||||
SELECTSIMILAR = 'SELECTSIMILAR',
|
||||
ISOLATEOBJECTS = 'ISOLATEOBJECTS',
|
||||
HIDEOBJECTS = 'HIDEOBJECTS',
|
||||
COPYBASE = 'COPYBASE',
|
||||
PASTECLIP = 'PASTECLIP',
|
||||
// 조사표 5절 — 주석
|
||||
TEXT = 'TEXT',
|
||||
MTEXT = 'MTEXT',
|
||||
TEXTEDIT = 'TEXTEDIT',
|
||||
FIND = 'FIND',
|
||||
DIM = 'DIM',
|
||||
DIMLINEAR = 'DIMLINEAR',
|
||||
DIMALIGNED = 'DIMALIGNED',
|
||||
DIMBASELINE = 'DIMBASELINE',
|
||||
DIMCONTINUE = 'DIMCONTINUE',
|
||||
QDIM = 'QDIM',
|
||||
DIMRADIUS = 'DIMRADIUS',
|
||||
DIMDIAMETER = 'DIMDIAMETER',
|
||||
DIMANGULAR = 'DIMANGULAR',
|
||||
DIMARC = 'DIMARC',
|
||||
DIMORDINATE = 'DIMORDINATE',
|
||||
CENTERMARK = 'CENTERMARK',
|
||||
CENTERLINE = 'CENTERLINE',
|
||||
DIMSPACE = 'DIMSPACE',
|
||||
DIMSTYLE = 'DIMSTYLE',
|
||||
MLEADER = 'MLEADER',
|
||||
MLEADERSTYLE = 'MLEADERSTYLE',
|
||||
MLEADERALIGN = 'MLEADERALIGN',
|
||||
TABLE = 'TABLE',
|
||||
TABLESTYLE = 'TABLESTYLE',
|
||||
REVCLOUD = 'REVCLOUD',
|
||||
ANNOSCALE = 'ANNOSCALE',
|
||||
COLOR = 'COLOR',
|
||||
LINETYPE = 'LINETYPE',
|
||||
LWEIGHT = 'LWEIGHT'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user