diff --git a/src/hooks/surface/useSurfaceShapeBatch.js b/src/hooks/surface/useSurfaceShapeBatch.js index 5ee598c5..87b7e75c 100644 --- a/src/hooks/surface/useSurfaceShapeBatch.js +++ b/src/hooks/surface/useSurfaceShapeBatch.js @@ -986,7 +986,10 @@ export function useSurfaceShapeBatch({ isHidden, setIsHidden }) { roof.fire('modified') drawDirectionArrow(roof) changeCorridorDimensionText() - addLengthText(roof) + // [이동 후 길이 fix] 이동 경로는 addLengthText 만 호출해 actualSize(경사 보정 실제길이)가 + // 재계산되지 않고 평면길이로 표시되던 문제. 생성/resize 경로와 동일하게 + // setPolygonLinesActualSize(내부에서 actualSize 재계산 + addLengthText) 로 통일한다. + setPolygonLinesActualSize(roof, true) roof.setCoords() initEvent() canvas.renderAll() diff --git a/src/hooks/usePolygon.js b/src/hooks/usePolygon.js index 16d548ce..729cd8ec 100644 --- a/src/hooks/usePolygon.js +++ b/src/hooks/usePolygon.js @@ -4,7 +4,7 @@ import { fabric } from 'fabric' import { calculateIntersection, findAndRemoveClosestPoint, getDegreeByChon, isPointOnLine } from '@/util/canvas-util' import { QPolygon } from '@/components/fabric/QPolygon' import { calcLinePlaneSize, equalizeSymmetricHips, isSamePoint, removeDuplicatePolygons } from '@/util/qpolygon-utils' -import { basicSettingState, flowDisplaySelector } from '@/store/settingAtom' +import { basicSettingState, flowDisplaySelector, corridorDimensionSelector } from '@/store/settingAtom' import { fontSelector } from '@/store/fontAtom' import { QLine } from '@/components/fabric/QLine' import { LINE_TYPE, POLYGON_TYPE } from '@/common/common' @@ -21,6 +21,7 @@ export const usePolygon = () => { const pitchText = useRecoilValue(pitchTextSelector) const globalPitch = useRecoilValue(globalPitchState) const roofSizeSet = useRecoilValue(basicSettingState).roofSizeSet + const corridorDimension = useRecoilValue(corridorDimensionSelector) const { setActualSize } = useLine() @@ -91,8 +92,11 @@ export const usePolygon = () => { const maxY = line.top + line.length const degree = (Math.atan2(y2 - y1, x2 - x1) * 180) / Math.PI - // [2026-05-18 라벨 저장값 통일] planeSize(정수 또는 0.5 step) 그대로. - const __display = planeSize ?? length + // [라벨 실제길이 모드 fix] 치수표시가 '복도치수 표시'(corridorDimension) 면 roofSizeSet 무관하게 + // planeSize(평면길이)를 표시한다. 그 외에는 roofSizeSet===1(실제길이) 이면 actualSize, 아니면 planeSize. + // 기존엔 planeSize 만 표시해, 실제치수 모드에서도 이동 후 평면길이(예: 8000)가 나오던 문제. + const __isCorridorDimension = corridorDimension?.column === 'corridorDimension' + const __display = (__isCorridorDimension ? planeSize : +roofSizeSet === 1 ? actualSize : planeSize) ?? planeSize ?? length const text = new fabric.Textbox( Number(__display).toFixed(1).replace(/\.0$/, ''), {