From 1ecb67e8a1be0cd31bd8274a13801750aa395470 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Sat, 8 Feb 2025 22:25:25 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=9C=84=EC=B9=98=20?= =?UTF-8?q?=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/module/useModuleBasicSetting.js | 108 +++++++++++++--------- 1 file changed, 64 insertions(+), 44 deletions(-) diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index 6d7105f9..707e0673 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -427,7 +427,7 @@ export function useModuleBasicSetting(tabNum) { turfPolygon = polygonToTurfPolygon(moduleSetupSurfaces[i]) trestlePolygon = moduleSetupSurfaces[i] manualDrawModules = moduleSetupSurfaces[i].modules // 앞에서 자동으로 했을때 추가됨 - flowDirection = moduleSetupSurfaces[i].flowDirection //도형의 방향 + flowDirection = moduleSetupSurfaces[i].direction //도형의 방향 const moduleWidth = Number(checkedModule[0].longAxis) / 10 const moduleHeight = Number(checkedModule[0].shortAxis) / 10 @@ -930,9 +930,9 @@ export function useModuleBasicSetting(tabNum) { } } else { //디버깅용 - // tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) - // canvas?.add(tempModule) - // canvas.renderAll() + tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) + canvas?.add(tempModule) + canvas.renderAll() } } } @@ -955,11 +955,20 @@ export function useModuleBasicSetting(tabNum) { checkedModule.forEach((module, index) => { const { width, height } = getModuleWidthHeight(maxLengthLine, moduleSetupSurface, module) - const flowLines = getFlowLines(moduleSetupSurface, width) + let flowLines = getFlowLines(moduleSetupSurface, width) //육지붕이 아닐때만 넣는다 육지붕일땐 클릭 이벤트에 별도로 넣어놓음 let startPoint = flowLines.left const moduleArray = [] + if (flowLines.left.type === 'flat') { + const tempPoint = { ...flowLines.top } + startPoint = { ...flowLines.top, x1: tempPoint.x2, x2: tempPoint.x1 } + } else { + flowLines = getFlowLines(moduleSetupSurface, height) + const tempPoint = { ...flowLines.left } + startPoint = { ...flowLines.left, x1: tempPoint.x1 + 5, x2: tempPoint.x2, y1: tempPoint.y1 - 5 } + } + //중앙배치일 경우에는 계산한다 if (isCenter) { if (flowLines.left.type === 'flat' && flowLines.bottom.type === 'flat' && flowLines.top.type === 'flat') { @@ -976,12 +985,6 @@ export function useModuleBasicSetting(tabNum) { } } - console.log('flowLines.top', flowLines.top) - - if (flowLines.left.type === 'flat') { - startPoint = flowLines.top - } - const maxRightEndPoint = surfaceMaxLines.right.x1 //최 우측 const maxTopEndPoint = surfaceMaxLines.top.y1 //최 상단 const maxBottomEndPoint = surfaceMaxLines.bottom.y1 //최하단 @@ -1043,9 +1046,9 @@ export function useModuleBasicSetting(tabNum) { } } else { //디버깅용 - // tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) - // canvas?.add(tempModule) - // canvas.renderAll() + tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) + canvas?.add(tempModule) + canvas.renderAll() } } } @@ -1069,6 +1072,11 @@ export function useModuleBasicSetting(tabNum) { const { width, height } = getModuleWidthHeight(maxLengthLine, moduleSetupSurface, module) const flowLines = getFlowLines(moduleSetupSurface, height) let startPoint = flowLines.top + + if (flowLines.top.type === 'flat' && flowLines.right.type === 'curve') { + startPoint = flowLines.right + } + const moduleArray = [] if (isCenter) { @@ -1162,9 +1170,9 @@ export function useModuleBasicSetting(tabNum) { } } else { //디버깅용 - // tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) - // canvas?.add(tempModule) - // canvas.renderAll() + tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) + canvas?.add(tempModule) + canvas.renderAll() } } } @@ -1186,8 +1194,20 @@ export function useModuleBasicSetting(tabNum) { checkedModule.forEach((module, index) => { const { width, height } = getModuleWidthHeight(maxLengthLine, moduleSetupSurface, module) - const flowLines = getFlowLines(moduleSetupSurface, width) + let flowLines = getFlowLines(moduleSetupSurface, width) let startPoint = flowLines.right + + if (flowLines.right.type === 'flat') { + const tempPoint = { ...flowLines.bottom } + startPoint = { ...flowLines.bottom, x1: tempPoint.x2, x2: tempPoint.x1 } + } else { + flowLines = getFlowLines(moduleSetupSurface, height) + const tempPoint = { ...flowLines.right } + startPoint = { ...flowLines.right, x1: tempPoint.x1 - 5, x2: tempPoint.x2, y1: tempPoint.y1 + 5 } + } + + console.log('startPoint', startPoint) + const moduleArray = [] if (isCenter) { @@ -1214,7 +1234,9 @@ export function useModuleBasicSetting(tabNum) { let diffTopEndPoint = Math.abs(totalTopEndPoint / height) let totalHeight = Math.ceil(Math.abs(maxBottomEndPoint - maxTopEndPoint) / height) let totalWidth = Math.abs(startPoint.x1 - maxLeftEndPoint) / width - let startRowPoint = startPoint.y1 - height * Math.ceil(diffTopEndPoint) - 3 // -3으로 위치살짝 보정 + let startRowPoint = startPoint.y1 - height * Math.ceil(diffTopEndPoint) // -3으로 위치살짝 보정1 + + console.log('startRowPoint', startRowPoint) let tempMaxHeight = isMaxSetup ? height / 2 : height //최대배치인지 확인하려고 넣음 if (isMaxSetup) totalHeight = totalHeight * 2 //최대배치시 2배로 늘려서 반씩 검사 @@ -1268,9 +1290,9 @@ export function useModuleBasicSetting(tabNum) { } } else { //디버깅용 - // tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) - // canvas?.add(tempModule) - // canvas.renderAll() + tempModule.set({ fill: 'rgba(255,190,41, 0.4)', stroke: 'black', strokeWidth: 1 }) + canvas?.add(tempModule) + canvas.renderAll() } } } @@ -1290,7 +1312,7 @@ export function useModuleBasicSetting(tabNum) { return acc.length > cur.length ? acc : cur }) - const flowDirection = moduleSetupSurface.flowDirection + const flowDirection = moduleSetupSurface.direction let intvHor = flowDirection === 'south' || flowDirection === 'north' @@ -1304,44 +1326,44 @@ export function useModuleBasicSetting(tabNum) { //처마면 배치 if (setupLocation === 'eaves') { // 흐름방향이 남쪽일때 - if (moduleSetupSurface.flowDirection === 'south') { + if (moduleSetupSurface.direction === 'south') { downFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'west') { + if (moduleSetupSurface.direction === 'west') { leftFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'east') { + if (moduleSetupSurface.direction === 'east') { rightFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'north') { + if (moduleSetupSurface.direction === 'north') { topFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } } else if (setupLocation === 'ridge') { //용마루 - if (moduleSetupSurface.flowDirection === 'south') { + if (moduleSetupSurface.direction === 'south') { topFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'west') { + if (moduleSetupSurface.direction === 'west') { rightFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'east') { + if (moduleSetupSurface.direction === 'east') { leftFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'north') { + if (moduleSetupSurface.direction === 'north') { downFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, false, intvHor, intvVer) } } else if (setupLocation === 'center') { //중가면 - if (moduleSetupSurface.flowDirection === 'south') { + if (moduleSetupSurface.direction === 'south') { downFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, true, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'west') { + if (moduleSetupSurface.direction === 'west') { leftFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, true, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'east') { + if (moduleSetupSurface.direction === 'east') { rightFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, true, intvHor, intvVer) } - if (moduleSetupSurface.flowDirection === 'north') { + if (moduleSetupSurface.direction === 'north') { topFlowSetupModule(surfaceMaxLines, maxLengthLine, moduleSetupArray, moduleSetupSurface, containsBatchObjects, true, intvHor, intvVer) } } @@ -1789,7 +1811,7 @@ export function useModuleBasicSetting(tabNum) { turfPolygon = polygonToTurfPolygon(moduleSetupSurfaces[i], true) trestlePolygon = moduleSetupSurfaces[i] manualDrawModules = moduleSetupSurfaces[i].modules // 앞에서 자동으로 했을때 추가됨 - flowDirection = moduleSetupSurfaces[i].flowDirection //도형의 방향 + flowDirection = moduleSetupSurfaces[i].direction //도형의 방향 const moduleWidth = Number(checkedModule[0].longAxis) / 10 const moduleHeight = Number(checkedModule[0].shortAxis) / 10 @@ -2575,19 +2597,17 @@ export function useModuleBasicSetting(tabNum) { (maxLengthLine.flowDirection === 'east' || maxLengthLine.flowDirection === 'west' ? Number(module.shortAxis) : Number(module.longAxis)) / 10 //배치면때는 방향쪽으로 패널이 넓게 누워져야함 - if (moduleSetupSurface.flowDirection !== undefined) { + if (moduleSetupSurface.direction !== undefined) { tmpWidth = - (moduleSetupSurface.flowDirection === 'south' || moduleSetupSurface.flowDirection === 'north' - ? Number(module.longAxis) - : Number(module.shortAxis)) / 10 + (moduleSetupSurface.direction === 'south' || moduleSetupSurface.direction === 'north' ? Number(module.longAxis) : Number(module.shortAxis)) / + 10 tmpHeight = - (moduleSetupSurface.flowDirection === 'south' || moduleSetupSurface.flowDirection === 'north' - ? Number(module.shortAxis) - : Number(module.longAxis)) / 10 + (moduleSetupSurface.direction === 'south' || moduleSetupSurface.direction === 'north' ? Number(module.shortAxis) : Number(module.longAxis)) / + 10 } return canvasSetting.roofSizeSet === '1' - ? calculateVisibleModuleHeight(tmpWidth, tmpHeight, getDegreeByChon(moduleSetupSurface.roofMaterial.pitch), moduleSetupSurface.flowDirection) + ? calculateVisibleModuleHeight(tmpWidth, tmpHeight, getDegreeByChon(moduleSetupSurface.roofMaterial.pitch), moduleSetupSurface.direction) : { width: tmpWidth, height: tmpHeight } }