할당하기위해 좌표변경중..

This commit is contained in:
yscha 2025-11-27 01:13:47 +09:00
parent e20892188a
commit 2bcafdff28
2 changed files with 13 additions and 9 deletions

View File

@ -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

View File

@ -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') {