From 1dfd6bbdc9f2a859042ab15ff85e2ee508341085 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Tue, 24 Jun 2025 14:26:57 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=A7=80=EB=B6=95=20=EB=8D=AE=EA=B0=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99=EC=8B=9C=20=EC=98=A4=EB=A5=98=20=EC=82=AC?= =?UTF-8?q?=ED=95=AD=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/common/useRoofFn.js | 11 +++-------- src/util/qpolygon-utils.js | 6 ++++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/hooks/common/useRoofFn.js b/src/hooks/common/useRoofFn.js index 38246273..0635b89e 100644 --- a/src/hooks/common/useRoofFn.js +++ b/src/hooks/common/useRoofFn.js @@ -202,7 +202,7 @@ export function useRoofFn() { } const roof = roofBase[0] - const wall = roof.wall + const wall = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.WALL && obj.attributes?.roofId === roof.id) const checkPolygon = new fabric.Polygon(roof.points, { name: 'moveRoofPolygon', @@ -230,16 +230,11 @@ export function useRoofFn() { const texts = canvas.getObjects().filter((obj) => obj.type === 'text' && (obj.attributes?.roofId === roof.id || obj.parentId === roof.id)) texts.forEach((text) => canvas.remove(text)) - const outerLines = canvas.getObjects().filter((obj) => obj.type === 'QLine' && (obj.attributes?.roofId === roof.id || obj.parentId === roof.id)) - const allRoofObject = canvas .getObjects() - .filter( - (obj) => obj !== roof && /*obj !== wall &&*/ (obj.attributes?.roofId === roof.id || obj.parentId === roof.id || obj.parentId === wall.id), - ) - - // // Calculate the movement delta + .filter((obj) => obj !== roof && (obj.attributes?.roofId === roof.id || obj.parentId === roof.id || obj.parentId === wall.id)) + /** 지붕이 움직인 만큼의 delta를 구한다. */ const originalRoofLeft = roof.left const originalRoofTop = roof.top diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 365fa119..32925a43 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -7585,6 +7585,8 @@ const reDrawPolygon = (polygon, canvas) => { selectable: polygon.selectable, fontSize: polygon.fontSize, wall: polygon.wall !== undefined ? polygon.wall : null, + originX: polygon.originX, + originY: polygon.originY, }) const newLines = newPolygon.lines @@ -7609,8 +7611,8 @@ const reDrawPolygon = (polygon, canvas) => { } }) - canvas?.add(newPolygon) - canvas?.renderAll() + canvas.add(newPolygon) + canvas.renderAll() return newPolygon } From 74c956bf1e1413e1a546783899e3734d664bd1b6 Mon Sep 17 00:00:00 2001 From: Jaeyoung Lee Date: Tue, 24 Jun 2025 14:39:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=A0=80=EC=9E=A5=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EB=B6=88=EB=9F=AC=EC=98=AC=EB=95=8C=20=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=EB=A9=B4=EC=9D=B4=20=EC=97=86=EB=8A=94=20=EC=A7=80?= =?UTF-8?q?=EB=B6=95=EB=8D=AE=EA=B0=9C=20=EC=9E=88=EB=8A=94=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EB=A9=94=EB=89=B4=EB=A5=BC=20=EC=A7=80=EB=B6=95?= =?UTF-8?q?=EB=8D=AE=EA=B0=9C=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasFrame.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx index 09fdd89c..06c2483b 100644 --- a/src/components/floor-plan/CanvasFrame.jsx +++ b/src/components/floor-plan/CanvasFrame.jsx @@ -68,9 +68,10 @@ export default function CanvasFrame() { canvas?.loadFromJSON(JSON.parse(plan.canvasStatus), function () { canvasLoadInit() //config된 상태로 캔버스 객체를 그린다 canvas?.renderAll() // 캔버스를 다시 그립니다. - if (canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE).length > 0) { setSelectedMenu('module') + } else if (canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.WALL).length > 0) { + setSelectedMenu('outline') } else { setSelectedMenu('surface') }