From 849ba0e0d5b2325ff0de3ca1904df9f6961a18eb Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 11 Jul 2025 11:07:37 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=B4=EC=A1=B0=EC=84=A0=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20=EC=8B=9C=20x,=20=EC=84=A0=ED=83=9D=EC=95=88?= =?UTF-8?q?=EB=90=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx | 13 +++++++++++++ src/hooks/roofcover/useAuxiliaryDrawing.js | 7 ++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx b/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx index 1417b501..ee0f304b 100644 --- a/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx +++ b/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx @@ -8,8 +8,12 @@ import { OUTER_LINE_TYPE } from '@/store/outerLineAtom' import OuterLineWall from '@/components/floor-plan/modal/lineTypes/OuterLineWall' import { useAuxiliaryDrawing } from '@/hooks/roofcover/useAuxiliaryDrawing' import { usePopup } from '@/hooks/usePopup' +import { useEffect } from 'react' +import { useRecoilValue } from 'recoil' +import { canvasState } from '@/store/canvasAtom' export default function AuxiliaryDrawing({ id, pos = { x: 50, y: 230 } }) { + const canvas = useRecoilValue(canvasState) const { getMessage } = useMessage() const { closePopup } = usePopup() @@ -52,6 +56,15 @@ export default function AuxiliaryDrawing({ id, pos = { x: 50, y: 230 } }) { cutAuxiliary, } = useAuxiliaryDrawing(id) + useEffect(() => { + return () => { + const auxiliaryLines = canvas.getObjects().filter((line) => line.name === 'auxiliaryLine' && !line.isAuxiliaryFixed) // 보조선이 그려져 있는 경우 물어본다. + if (auxiliaryLines.length > 0) { + handleFix() + } + } + }, []) + const outerLineProps = { length1, setLength1, diff --git a/src/hooks/roofcover/useAuxiliaryDrawing.js b/src/hooks/roofcover/useAuxiliaryDrawing.js index aad5a715..37095215 100644 --- a/src/hooks/roofcover/useAuxiliaryDrawing.js +++ b/src/hooks/roofcover/useAuxiliaryDrawing.js @@ -680,7 +680,7 @@ export function useAuxiliaryDrawing(id, isUseEffect = true) { const newLine = addLine([line1.x1, line1.y1, interSectionPointsWithRoofLines[0].x, interSectionPointsWithRoofLines[0].y], { stroke: 'black', strokeWidth: 1, - selectable: false, + selectable: true, name: 'auxiliaryLine', isFixed: true, attributes: { ...line1.attributes }, @@ -693,7 +693,7 @@ export function useAuxiliaryDrawing(id, isUseEffect = true) { const newLine = addLine([line1.x2, line1.y2, interSectionPointsWithRoofLines[0].x, interSectionPointsWithRoofLines[0].y], { stroke: 'black', strokeWidth: 1, - selectable: false, + selectable: true, name: 'auxiliaryLine', isFixed: true, attributes: { ...line1.attributes }, @@ -737,7 +737,6 @@ export function useAuxiliaryDrawing(id, isUseEffect = true) { // line2.set(originLine2) // canvas.renderAll() - const intersectionPoint = calculateIntersection(line1, line2) if (!intersectionPoint) { return @@ -865,6 +864,8 @@ export function useAuxiliaryDrawing(id, isUseEffect = true) { return } + cutAuxiliary() + const roofBases = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF) //lineHistory.current에 있는 선들 중 startPoint와 endPoint가 겹치는 line은 제거