/** * SCALE(337 라 · 설계 1-3) — 「기준점 지정:」 → 「축척 비율 지정 또는 [복사(C)/참조(R)] <1.0000>:」 · * 누름 = 기준점~점 거리 · 숫자 > 0 · R → 「참조 길이 지정 <1.0000>:」(숫자 · 두 점) → 「새 길이 지정 또는 [점(P)] <1.0000>:」 · * 0 이하 거절 · 비율 기억(SCALE.FACTOR). */ import { Tool } from '../tools'; import { PivotState, createPivotTool } from './pivot-tool'; import { distanceOf } from './transform.helpers'; export { PivotState as ScaleState }; export const scaleToolStateMachine = createPivotTool({ tool: Tool.SCALE, format: 'len', value: { text: '축척 비율 지정', remember: 'SCALE.FACTOR', initial: 1 }, reference: { text: '참조 길이 지정', remember: 'SCALE.REF', initial: 1 }, next: { text: '새 길이 지정', remember: 'SCALE.NEW', initial: 1 }, number: { positive: true }, copyNotice: ['선택한 객체의 사본을 축척함.', '선택한 객체를 축척함.'], invalidNotice: '값은 양수이고 0이 아니어야 함.', measure: distanceOf, combine: (next, reference) => (reference > 0 ? next / reference : null), valid: (factor) => factor > 0, apply: (entity, base, factor) => entity.scale(base, factor), });