오브젝트 이동 수정

This commit is contained in:
yjnoh 2025-02-09 17:06:57 +09:00
parent 69ebe48570
commit 4ac63f2376
4 changed files with 51 additions and 14 deletions

View File

@ -92,7 +92,7 @@ export function useModuleSelection(props) {
//해당 메뉴 이동시 배치면 삭제
const moduleSurfacesArray = canvas
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE || obj.name === POLYGON_TYPE.MODULE)
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE || obj.name === POLYGON_TYPE.MODULE || obj.name === POLYGON_TYPE.OBJECT_SURFACE)
if (moduleSurfacesArray.length > 0) {
moduleSurfacesArray.forEach((moduleSurface) => {
canvas.remove(moduleSurface)

View File

@ -78,7 +78,15 @@ export function useModuleTabContents({ tabIndex, addRoof, setAddedRoofs, roofTab
}
const getConstructionListData = async (params) => {
if (params.trestleMkrCd && params.constMthdCd && params.roofBaseCd) {
if (
params.trestleMkrCd &&
params.constMthdCd &&
params.roofBaseCd &&
params.illuminationTp &&
params.stdWindSpeed &&
params.instHt &&
params.stdSnowLd
) {
const optionsList = await getConstructionList(params)
setConstructionList(optionsList.data)
}
@ -151,7 +159,7 @@ export function useModuleTabContents({ tabIndex, addRoof, setAddedRoofs, roofTab
useEffect(() => {
if (isExistData) {
setConstructionListParams({
...moduleSelectionInitParams,
...moduleSelectionData.common,
...roofBaseParams,
roofBaseCd: selectedRoofBase.roofBaseCd,
inclCd: addRoof.pitch,

View File

@ -3,7 +3,7 @@ import { useEffect } from 'react'
import { useMessage } from '@/hooks/useMessage'
import { useRecoilValue } from 'recoil'
import { canvasState } from '@/store/canvasAtom'
import { BATCH_TYPE, INPUT_TYPE } from '@/common/common'
import { BATCH_TYPE, INPUT_TYPE, POLYGON_TYPE } from '@/common/common'
import { useEvent } from '@/hooks/useEvent'
import { pointsToTurfPolygon, polygonToTurfPolygon, rectToPolygon, triangleToPolygon } from '@/util/canvas-util'
import { useSwal } from '@/hooks/useSwal'
@ -955,8 +955,8 @@ export function useObjectBatch({ isHidden, setIsHidden }) {
})
reGroupObjects.push(newObj)
canvas.remove(obj)
if (obj.direction) {
drawDirectionArrow(obj)
if (newObj.direction) {
drawDirectionArrow(newObj)
}
newObj.fire('modified')
})
@ -977,6 +977,7 @@ export function useObjectBatch({ isHidden, setIsHidden }) {
const moveObjectBatch = () => {
const obj = canvas.getActiveObject()
const parentSurface = canvas?.getObjects().filter((item) => item.name === POLYGON_TYPE.ROOF && item.id === obj.parentId)[0]
if (obj) {
obj.set({
@ -984,14 +985,42 @@ export function useObjectBatch({ isHidden, setIsHidden }) {
lockMovementY: false,
})
const originObj = { ...obj }
addCanvasMouseEventListener('mouse:up', (e) => {
obj.set({
lockMovementX: true,
lockMovementY: true,
})
//개구, 그림자 타입일 경우 폴리곤 타입 변경
if (BATCH_TYPE.OPENING === obj.name || BATCH_TYPE.SHADOW === obj.name) {
obj.set({
points: rectToPolygon(obj),
})
const turfSurface = pointsToTurfPolygon(parentSurface.points)
const turfObject = pointsToTurfPolygon(obj.points)
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,
})
if (obj.type === 'group') reGroupObject(obj)
obj.setCoords()
}
canvas.discardActiveObject()
initEvent()
obj.setCoords()
if (obj.type === 'group') reGroupObject(obj)
})
}
}

View File

@ -464,7 +464,7 @@ export function useContextMenu() {
id: 'openingMove',
shortcut: ['m', 'M'],
name: `${getMessage('contextmenu.move')}(M)`,
fn: () => moveObject(),
fn: () => moveObjectBatch(),
},
{
id: 'openingCopy',
@ -667,7 +667,7 @@ export function useContextMenu() {
id: 'move',
shortcut: ['m', 'M'],
name: `${getMessage('contextmenu.move')}(M)`,
fn: () => moveObject(),
fn: () => moveObjectBatch(),
},
{
id: 'copy',