diff --git a/src/components/floor-plan/modal/object/SizeSetting.jsx b/src/components/floor-plan/modal/object/SizeSetting.jsx index d5c9f0d9..34e86ed8 100644 --- a/src/components/floor-plan/modal/object/SizeSetting.jsx +++ b/src/components/floor-plan/modal/object/SizeSetting.jsx @@ -33,9 +33,9 @@ export default function SizeSetting(props) { const height = heightRef.current.value if (target.name === BATCH_TYPE.OPENING || target.name === BATCH_TYPE.SHADOW) { - resizeObjectBatch(settingTarget, target, width, height) + resizeObjectBatch(settingTarget, target, width, height, id) } else if (target.name === POLYGON_TYPE.ROOF) { - resizeSurfaceShapeBatch(settingTarget, target, width, height) + resizeSurfaceShapeBatch(settingTarget, target, width, height, id) } } @@ -87,7 +87,7 @@ export default function SizeSetting(props) {
-
diff --git a/src/hooks/object/useObjectBatch.js b/src/hooks/object/useObjectBatch.js index c0c6bf75..1761aa16 100644 --- a/src/hooks/object/useObjectBatch.js +++ b/src/hooks/object/useObjectBatch.js @@ -22,6 +22,7 @@ import { v4 as uuidv4 } from 'uuid' import { fontSelector } from '@/store/fontAtom' import { useRoofFn } from '@/hooks/common/useRoofFn' import { roofDisplaySelector } from '@/store/settingAtom' +import { usePopup } from '@/hooks/usePopup' export function useObjectBatch({ isHidden, setIsHidden }) { const { getMessage } = useMessage() @@ -33,6 +34,7 @@ export function useObjectBatch({ isHidden, setIsHidden }) { const { setSurfaceShapePattern } = useRoofFn() const lengthTextFont = useRecoilValue(fontSelector('lengthText')) const roofDisplay = useRecoilValue(roofDisplaySelector) + const { closePopup } = usePopup() useEffect(() => { if (canvas) { @@ -160,12 +162,15 @@ export function useObjectBatch({ isHidden, setIsHidden }) { const rectPolygon = pointsToTurfPolygon(rectToPolygon(rect)) const selectedSurfacePolygon = polygonToTurfPolygon(selectedSurface) - //지붕 밖으로 그렸을때 - if (!turf.booleanWithin(rectPolygon, selectedSurfacePolygon)) { - swalFire({ text: getMessage('batch.object.outside.roof'), icon: 'error' }) - //일단 지워 - deleteTempObjects() - return + //그림자는 배치면이 겹친부분에도 그려져야 한다 + if (rect.name === BATCH_TYPE.OPENING_TEMP) { + //지붕 밖으로 그렸을때 + if (!turf.booleanWithin(rectPolygon, selectedSurfacePolygon)) { + swalFire({ text: getMessage('batch.object.outside.roof'), icon: 'error' }) + //일단 지워 + deleteTempObjects() + return + } } if (!isCrossChecked) { @@ -242,12 +247,15 @@ export function useObjectBatch({ isHidden, setIsHidden }) { const rectPolygon = pointsToTurfPolygon(rectToPolygon(rect)) const selectedSurfacePolygon = polygonToTurfPolygon(selectedSurface) - //지붕 밖으로 그렸을때 - if (!turf.booleanWithin(rectPolygon, selectedSurfacePolygon)) { - swalFire({ text: getMessage('batch.object.outside.roof'), icon: 'error' }) - //일단 지워 - deleteTempObjects() - return + //그림자는 배치면이 겹친부분에도 그려져야 한다 + if (rect.name === BATCH_TYPE.OPENING_TEMP) { + //지붕 밖으로 그렸을때 + if (!turf.booleanWithin(rectPolygon, selectedSurfacePolygon)) { + swalFire({ text: getMessage('batch.object.outside.roof'), icon: 'error' }) + //일단 지워 + deleteTempObjects() + return + } } if (!isCrossChecked) { @@ -1269,7 +1277,7 @@ export function useObjectBatch({ isHidden, setIsHidden }) { return { leftPoints, rightPoints, groupPoints } } - const resizeObjectBatch = (side, target, width, height) => { + const resizeObjectBatch = (side, target, width, height, popupId) => { const objectWidth = target.width const objectHeight = target.height @@ -1318,6 +1326,10 @@ export function useObjectBatch({ isHidden, setIsHidden }) { originY: target.originY, left: changedCoords.x, top: changedCoords.y, + height: toFixedWithoutRounding(height / 10, 1), + width: toFixedWithoutRounding(width / 10, 1), + scaleX: 1, + scaleY: 1, }) // target.setCoords() @@ -1327,6 +1339,8 @@ export function useObjectBatch({ isHidden, setIsHidden }) { target.points = currentPoints if (target.type === 'group') reGroupObject(target) + + closePopup(popupId) } const reGroupObject = (groupObj) => { @@ -1402,21 +1416,30 @@ export function useObjectBatch({ isHidden, setIsHidden }) { points: rectToPolygon(obj), }) - const turfObject = pointsToTurfPolygon(obj.points) + //그림자는 아무데나 설치 할 수 있게 해달라고 함 + if (obj.name === BATCH_TYPE.OPENING) { + const turfObject = pointsToTurfPolygon(obj.points) - if (turf.booleanWithin(turfObject, turfSurface)) { + if (turf.booleanWithin(turfObject, turfSurface)) { + obj.set({ + lockMovementX: true, + lockMovementY: true, + }) + + obj.setCoords() + } else { + swalFire({ + title: getMessage('batch.object.outside.roof'), + icon: 'warning', + }) + obj.set({ ...originObj, lockMovementX: true, lockMovementY: true }) + } + } else { obj.set({ lockMovementX: true, lockMovementY: true, }) - - obj.setCoords() - } else { - swalFire({ - title: getMessage('batch.object.outside.roof'), - icon: 'warning', - }) - obj.set({ ...originObj, lockMovementX: true, lockMovementY: true }) + obj.bringToFront() } } else { obj.set({