From cf3e64deb5cf123030168acf3e4b2a902b109175 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 23 May 2025 13:17:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A7=80=EB=B6=95=EB=A9=B4=20=ED=95=A0?= =?UTF-8?q?=EB=8B=B9=20=EC=8B=9C=20=EC=88=9C=EC=84=9C=20=EC=9E=AC=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EB=90=98=EB=8A=94=20=ED=98=84=EC=83=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/usePolygon.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/hooks/usePolygon.js b/src/hooks/usePolygon.js index 91562948..148683ef 100644 --- a/src/hooks/usePolygon.js +++ b/src/hooks/usePolygon.js @@ -1009,14 +1009,14 @@ export const usePolygon = () => { // startPoint와 endPoint의 각도가 0,90,180,270이면 직선으로 판단 if (Math.abs(startPoint.x - endPoint.x) < 2 || Math.abs(startPoint.y - endPoint.y) < 2) { - if (!innerLine.attributes || !innerLine.attributes.type) { + if (!innerLine.attributes || !innerLine.attributes.type || innerLine.attributes.type === 'default') { innerLine.attributes = { ...innerLine.attributes, type: LINE_TYPE.SUBLINE.RIDGE, } } } else { - if (!innerLine.attributes || !innerLine.attributes.type) { + if (!innerLine.attributes || !innerLine.attributes.type || innerLine.attributes.type === 'default') { innerLine.attributes = { ...innerLine.attributes, type: LINE_TYPE.SUBLINE.GABLE, @@ -1149,7 +1149,7 @@ export const usePolygon = () => { //allLines중 생성된 roof와 관련있는 line을 찾는다. - roof.lines = [...polygonLines, ...polygon.innerLines].filter((line) => { + const roofLines = [...polygonLines, ...polygon.innerLines].filter((line) => { let startFlag = false let endFlag = false const startPoint = line.startPoint @@ -1166,6 +1166,17 @@ export const usePolygon = () => { return startFlag && endFlag }) + roofLines.forEach((line) => { + roof.lines.forEach((roofLine) => { + if ( + (isSamePoint(line.startPoint, roofLine.startPoint) && isSamePoint(line.endPoint, roofLine.endPoint)) || + (isSamePoint(line.startPoint, roofLine.endPoint) && isSamePoint(line.endPoint, roofLine.startPoint)) + ) { + roofLine.attributes = { ...line.attributes } + } + }) + }) + canvas.add(roof) // addLengthText(roof) canvas.remove(polygon)