버튼 제거 및 21,22번 추가

This commit is contained in:
hyojun.choi 2024-09-03 16:26:44 +09:00
parent 761a155a52
commit 905ddd07b3
2 changed files with 191 additions and 1212 deletions

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,7 @@ import { modalState } from '@/store/modalAtom'
import { QPolygon } from '@/components/fabric/QPolygon' import { QPolygon } from '@/components/fabric/QPolygon'
import { fontSizeState, roofMaterialState } from '@/store/canvasAtom' import { fontSizeState, roofMaterialState } from '@/store/canvasAtom'
import { degreesToRadians } from '@turf/turf' import { degreesToRadians } from '@turf/turf'
import { getIntersectionPoint } from '@/util/canvas-util'
/** /**
* 면형상 배치 모달 * 면형상 배치 모달
@ -39,6 +40,10 @@ export const SurfaceShapeModal = ({ canvas }) => {
} }
const onSave = () => { const onSave = () => {
if (!checkValid()) {
alert('안됨')
return
}
let isDrawing = true let isDrawing = true
let obj = null let obj = null
let points = [] let points = []
@ -303,7 +308,136 @@ export const SurfaceShapeModal = ({ canvas }) => {
] ]
break break
} }
case 21: {
const pointsArray = [
{ x: 0, y: 0 },
{ x: 0, y: 0 },
{ x: 0, y: 0 },
{ x: 0, y: 0 },
{ x: 0, y: 0 },
]
const tmpPolygon = new QPolygon(
[
{ x: 0, y: length3 },
{ x: length1 - length2, y: length3 },
{ x: (length1 - length2) / 2, y: length3 - length3 },
],
{
fill: 'transparent',
stroke: 'black', //black
strokeWidth: 2,
selectable: true,
fontSize: 0,
},
)
const coord = getIntersectionPoint(tmpPolygon.lines[1].startPoint, tmpPolygon.lines[2].startPoint, length3 - length4)
const scale = (length1 - length2) / coord.x
tmpPolygon.set({ scaleX: scale })
pointsArray[0].x = 0
pointsArray[0].y = length3 //
pointsArray[1].x = pointsArray[0].x + length1
pointsArray[1].y = pointsArray[0].y
pointsArray[2].x = pointsArray[1].x
pointsArray[2].y = pointsArray[1].y - length4
pointsArray[3].x = pointsArray[2].x - length2
pointsArray[3].y = pointsArray[2].y
pointsArray[4].x = tmpPolygon.getCurrentPoints()[2].x
pointsArray[4].y = tmpPolygon.getCurrentPoints()[2].y
points = [
{
x: pointer.x - length1 / 2,
y: pointer.y + length4 / 2,
},
{
x: pointer.x + length1 / 2,
y: pointer.y + length4 / 2,
},
{
x: pointer.x + length1 / 2,
y: pointer.y - length4 / 2,
},
{
x: pointer.x - (length2 - length1 / 2),
y: pointer.y - length4 / 2,
},
{
x: pointer.x - length1 / 2 + pointsArray[4].x,
y: pointer.y - length3 + length4 / 2,
},
]
break
}
case 22: {
const pointsArray = [
{ x: 0, y: 0 },
{ x: 0, y: 0 },
{ x: 0, y: 0 },
{ x: 0, y: 0 },
{ x: 0, y: 0 },
]
const tmpPolygon = new QPolygon(
[
{ x: 0, y: length3 },
{ x: length1 - length2, y: length3 },
{ x: (length1 - length2) / 2, y: length3 - length3 },
],
{
fill: 'transparent',
stroke: 'black', //black
strokeWidth: 2,
selectable: true,
fontSize: 0,
},
)
const coord = getIntersectionPoint(tmpPolygon.lines[1].startPoint, tmpPolygon.lines[2].startPoint, length3 - length4)
const scale = (length1 - length2) / coord.x
tmpPolygon.set({ scaleX: scale })
pointsArray[0].x = 0
pointsArray[0].y = length3 //
pointsArray[1].x = pointsArray[0].x + length1
pointsArray[1].y = pointsArray[0].y
pointsArray[2].x = pointsArray[1].x
pointsArray[2].y = pointsArray[1].y - length4
pointsArray[3].x = pointsArray[2].x - length2
pointsArray[3].y = pointsArray[2].y
pointsArray[4].x = tmpPolygon.getCurrentPoints()[2].x
pointsArray[4].y = tmpPolygon.getCurrentPoints()[2].y
points = [
{
x: pointer.x - length1 / 2,
y: pointer.y + length4 / 2,
},
{
x: pointer.x + length1 / 2,
y: pointer.y + length4 / 2,
},
{
x: pointer.x + length1 / 2,
y: pointer.y - length4 / 2,
},
{
x: pointer.x - (length2 - length1 / 2),
y: pointer.y - length4 / 2,
},
{
x: pointer.x - length1 / 2 + pointsArray[4].x,
y: pointer.y - length3 + length4 / 2,
},
]
break
}
case 23: { case 23: {
points = [ points = [
{ x: pointer.x - length1 / 2 + length2, y: pointer.y + length4 / 2 }, { x: pointer.x - length1 / 2 + length2, y: pointer.y + length4 / 2 },
@ -462,14 +596,27 @@ export const SurfaceShapeModal = ({ canvas }) => {
break break
} }
} }
obj = new QPolygon(points, { if (type !== 22) {
fill: 'transparent', obj = new QPolygon(points, {
stroke: 'black', fill: 'transparent',
strokeWidth: 2, stroke: 'black',
selectable: false, strokeWidth: 2,
fontSize: fontSize, selectable: false,
name: 'guideTriangle', fontSize: fontSize,
}) name: 'guideTriangle',
})
} else {
obj = new QPolygon(points, {
fill: 'transparent',
stroke: 'black',
strokeWidth: 2,
selectable: false,
fontSize: fontSize,
name: 'guideTriangle',
flipX: true,
})
}
canvas?.add(obj) canvas?.add(obj)
setCurrentPattern(obj) setCurrentPattern(obj)
canvas?.renderAll() canvas?.renderAll()
@ -482,6 +629,42 @@ export const SurfaceShapeModal = ({ canvas }) => {
setOpen(false) setOpen(false)
} }
const checkValid = () => {
let result = true
switch (type) {
case 1: {
if (length3 !== 0 && length1 > length3) {
return false
}
break
}
case 21: {
if (length1 < length2) {
alert('1번보다 작게 입력해주세요.')
return false
}
if (length3 < length4) {
alert('3번보다 작게 입력해주세요.')
return false
}
}
case 22: {
if (length1 < length2) {
alert('1번보다 작게 입력해주세요.')
return false
}
if (length3 < length4) {
alert('3번보다 작게 입력해주세요.')
return false
}
}
}
return result
}
const setLength = (e) => { const setLength = (e) => {
let { name, value } = e.target let { name, value } = e.target
value = value.replace(/[^-0-9]/g, '') value = value.replace(/[^-0-9]/g, '')