dev #930
@ -1436,8 +1436,6 @@ export function useObjectBatch({ isHidden, setIsHidden }) {
|
||||
|
||||
const originObj = { ...obj }
|
||||
const turfSurface = pointsToTurfPolygon(parentSurface.getCurrentPoints())
|
||||
const originLeft = obj.left
|
||||
const originTop = obj.top
|
||||
|
||||
addCanvasMouseEventListener('mouse:up', (e) => {
|
||||
//개구, 그림자 타입일 경우 폴리곤 타입 변경
|
||||
@ -1482,15 +1480,11 @@ export function useObjectBatch({ isHidden, setIsHidden }) {
|
||||
})
|
||||
|
||||
if (obj.name === BATCH_TYPE.TRIANGLE_DORMER || obj.name === BATCH_TYPE.PENTAGON_DORMER) {
|
||||
const calcLeft = obj.left - originLeft
|
||||
const calcTop = obj.top - originTop
|
||||
|
||||
const currentDormerPoints = obj.getCurrentPoints().map((item) => {
|
||||
return {
|
||||
x: item.x + calcLeft,
|
||||
y: item.y + calcTop,
|
||||
}
|
||||
})
|
||||
// getCurrentPoints() 는 calcTransformMatrix() 기반으로 이미 이동된 월드 좌표를 반환한다.
|
||||
// 과거 코드에서 (obj.left - originLeft) delta 를 다시 더해 2배 이동된 좌표로 검사 →
|
||||
// 빠르게 이동 시 도머가 지붕 내부에 있어도 within=false 가 되어 alert 오발생.
|
||||
obj.setCoords()
|
||||
const currentDormerPoints = obj.getCurrentPoints()
|
||||
|
||||
const turfObject = pointsToTurfPolygon(currentDormerPoints)
|
||||
|
||||
|
||||
@ -335,10 +335,26 @@ export function useUndoRedo() {
|
||||
poly.name !== POLYGON_TYPE.MODULE_SETUP_SURFACE &&
|
||||
poly.name !== POLYGON_TYPE.OBJECT_SURFACE
|
||||
|
||||
// lengthText 인스턴스를 parentId 기준으로 한 번만 모아둔다 (texts 배열 복원에 재사용)
|
||||
const lengthTextsByParent = new Map()
|
||||
objects.forEach((obj) => {
|
||||
if (obj.name === 'lengthText' && obj.parentId) {
|
||||
const arr = lengthTextsByParent.get(obj.parentId) || []
|
||||
arr.push(obj)
|
||||
lengthTextsByParent.set(obj.parentId, arr)
|
||||
}
|
||||
})
|
||||
|
||||
const qPolygons = objects.filter(shouldRebuildText)
|
||||
qPolygons.forEach((polygon) => {
|
||||
try {
|
||||
polygon.initLines()
|
||||
// texts 배열 참조 복원 (재생성이 아닌 기존 lengthText 인스턴스 연결만)
|
||||
// commonDeleteText 가 group._objects[i].texts / object.texts 를 통해 제거하므로,
|
||||
// loadFromJSON 후 끊긴 참조를 다시 이어주지 않으면 삭제 시 lengthText 가 잔존한다.
|
||||
if (polygon.id) {
|
||||
polygon.texts = lengthTextsByParent.get(polygon.id) || []
|
||||
}
|
||||
} catch (e) { /* skip */ }
|
||||
})
|
||||
|
||||
@ -351,6 +367,9 @@ export function useUndoRedo() {
|
||||
try {
|
||||
if (!child.canvas) child.canvas = canvas
|
||||
child.initLines?.()
|
||||
if (child.id) {
|
||||
child.texts = lengthTextsByParent.get(child.id) || []
|
||||
}
|
||||
} catch (e) { /* skip */ }
|
||||
}
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user