From 2bcafdff28dc1c3f62249266ba2f3109f0c072f3 Mon Sep 17 00:00:00 2001 From: yscha Date: Thu, 27 Nov 2025 01:13:47 +0900 Subject: [PATCH] =?UTF-8?q?=ED=95=A0=EB=8B=B9=ED=95=98=EA=B8=B0=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20=EC=A2=8C=ED=91=9C=EB=B3=80=EA=B2=BD=EC=A4=91..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roofcover/useRoofAllocationSetting.js | 3 --- src/util/skeleton-utils.js | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js index 5704b383..8a330c4d 100644 --- a/src/hooks/roofcover/useRoofAllocationSetting.js +++ b/src/hooks/roofcover/useRoofAllocationSetting.js @@ -411,9 +411,6 @@ export function useRoofAllocationSetting(id) { obj.name === 'eaveHelpLine' && obj.roofId === roofBase.id ); - // 기존 라인 제거 - roofEaveHelpLines.forEach(line => canvas.remove(line)); - if (roofBase.lines) { // Filter out any eaveHelpLines that are already in lines to avoid duplicates diff --git a/src/util/skeleton-utils.js b/src/util/skeleton-utils.js index 92c92d55..bf48b203 100644 --- a/src/util/skeleton-utils.js +++ b/src/util/skeleton-utils.js @@ -835,6 +835,7 @@ if(roof.moveUpDown??0 > 0) { return line } + //두 포인트가 변경된 라인인 if (fullyMoved) { //반시계방향향 @@ -844,25 +845,30 @@ if(roof.moveUpDown??0 > 0) { console.log("moveFully:::::::::::::", wallBaseLine, newPStart, newPEnd) if (getOrientation(roofLine) === 'vertical') { - + //왼쪽 부터 roofLine, wallBaseLine if (newPEnd.y <= wallBaseLine.y2 && wallBaseLine.y2 <= newPStart.y && newPStart.y <= wallBaseLine.y1) { newPStart.y = wallBaseLine.y1; getAddLine({ x: newPEnd.x, y: wallBaseLine.y1 }, { x: wallBaseLine.x1, y: wallBaseLine.y1 }) + } else if (wallBaseLine.y2 <= newPEnd.y && newPEnd.y <= wallBaseLine.y1 && wallBaseLine.y1 <= newPStart.y) { newPEnd.y = wallBaseLine.y2; getAddLine({ x: newPEnd.x, y: wallBaseLine.y2 }, { x: wallBaseLine.x2, y: wallBaseLine.y2 }) + } else if (newPStart.y <= wallBaseLine.y1 && wallBaseLine.y1 <= newPEnd.y && newPEnd.y <= wallBaseLine.y2) { newPEnd.y = wallBaseLine.y2; getAddLine({ x: newPEnd.x, y: wallBaseLine.y2 }, { x: wallBaseLine.x2, y: wallBaseLine.y2 }) + } else if (wallBaseLine.y1 <= newPStart.y && newPStart.y <= wallBaseLine.y2 && wallBaseLine.y2 <= newPEnd.y) { newPStart.y = wallBaseLine.y1; getAddLine({ x: newPEnd.x, y: wallBaseLine.y1 }, { x: wallBaseLine.x1, y: wallBaseLine.y1 }) - } else if (wallBaseLine.y2 <= newPEnd.y && newPStart.y <= wallBaseLine.y1) { // 위가운데 + + } else if (wallBaseLine.y2 <= newPEnd.y && newPEnd.y <= newPStart.y && newPStart.y <= wallBaseLine.y1) { // 위가운데 newPEnd.y = wallBaseLine.y2; getAddLine({ x: newPEnd.x, y: wallBaseLine.y2 }, { x: wallBaseLine.x2, y: wallBaseLine.y2 }) newPStart.y = wallBaseLine.y1; getAddLine({ x: newPEnd.x, y: wallBaseLine.y1 }, { x: wallBaseLine.x1, y: wallBaseLine.y1 }) - } else if (wallBaseLine.y1 <= newPStart.y && newPEnd.y <= wallBaseLine.y2) { // 아래가운데 + + } else if (wallBaseLine.y1 <= newPStart.y && newPStart.y <= newPEnd.y &&newPEnd.y <= wallBaseLine.y2) { // 아래가운데 newPEnd.y = wallBaseLine.y1; getAddLine({ x: newPEnd.x, y: wallBaseLine.y1 }, { x: wallBaseLine.x1, y: wallBaseLine.y1 }) newPStart.y = wallBaseLine.y2; @@ -902,12 +908,12 @@ if(roof.moveUpDown??0 > 0) { getAddLine({ x: wallBaseLine.x2, y: newPEnd.y }, { x: wallBaseLine.x2, y: wallBaseLine.y2 }) } } + getAddLine(newPStart, newPEnd, 'red') } else if (movedStart) { //end 변경경 - newPStart = { x: roofLine.x1, y: roofLine.y1 } if (getOrientation(roofLine) === 'vertical') { @@ -917,7 +923,7 @@ if(roof.moveUpDown??0 > 0) { isCross = true; } - + //newPStart = { x: roofLine.x2, y: roofLine.y2 } newPEnd = { x: roofLine.x1, y: (isCross) ? currentRoofLine.y1 : origin.y1 } } else if (getOrientation(roofLine) === 'horizontal') { @@ -933,7 +939,7 @@ if(roof.moveUpDown??0 > 0) { //movedLines.push({ index, newPStart, newPEnd }) console.log("moveStart:::::::::::::", origin, newPStart, newPEnd) - getAddLine(newPStart, newPEnd, 'red') + getAddLine(newPStart, newPEnd, 'green') } else if (movedEnd) { //start변경 @@ -947,6 +953,7 @@ if(roof.moveUpDown??0 > 0) { if (Math.abs(currentRoofLine.x2 - roofLine.x1) < 0.1 || Math.abs(currentRoofLine.x1 - roofLine.x2) < 0.1) { isCross = true; } + //newPStart = { x: roofLine.x1, y: roofLine.y1 } newPEnd = { x: roofLine.x2, y: (isCross) ? currentRoofLine.y2 : origin.y2 } //수직라인 접점까지지 } else if (getOrientation(roofLine) === 'horizontal') {