모임지붕 그리기 최종시 떨어진 마루 합치는 작업추가

This commit is contained in:
Jaeyoung Lee 2024-08-08 09:39:54 +09:00
parent 5912da0ff8
commit 8c10964b52

View File

@ -2386,18 +2386,6 @@ const connectLinePoint = (polygon) => {
} }
}) })
console.log('missedPoints : ', missedPoints)
console.log(
polygon.hips.filter((hip) => {
let count = 0
count += polygon.ridges.filter((ridge) => (ridge.x1 === hip.x2 && ridge.y1 === hip.y2) || (ridge.x2 === hip.x2 && ridge.y2 === hip.y2)).length
count += polygon.hips.filter((hip2) => (hip2.x1 === hip.x2 && hip2.y1 === hip.y2) || (hip2.x2 === hip.x2 && hip2.y2 === hip.y2)).length
if (count < 3) {
return hip
}
}),
)
//추녀마루 //추녀마루
polygon.hips.forEach((hip) => { polygon.hips.forEach((hip) => {
let count = 0 let count = 0
@ -2457,7 +2445,7 @@ const connectLinePoint = (polygon) => {
polygon.innerLines.push(line) polygon.innerLines.push(line)
}) })
/*missedPoints = [] missedPoints = []
missedLine = [] missedLine = []
polygon.innerLines.forEach((line, index) => { polygon.innerLines.forEach((line, index) => {
@ -2507,8 +2495,6 @@ const connectLinePoint = (polygon) => {
//중복라인제거 //중복라인제거
missedLine = [...new Set(missedLine.map((line) => JSON.stringify(line)))].map((line) => JSON.parse(line)) missedLine = [...new Set(missedLine.map((line) => JSON.stringify(line)))].map((line) => JSON.parse(line))
console.log(missedLine)
missedLine.forEach((p, index) => { missedLine.forEach((p, index) => {
const line = new QLine([p.x1, p.y1, p.x2, p.y2], { const line = new QLine([p.x1, p.y1, p.x2, p.y2], {
fontSize: polygon.fontSize, fontSize: polygon.fontSize,
@ -2517,7 +2503,70 @@ const connectLinePoint = (polygon) => {
}) })
polygon.canvas.add(line) polygon.canvas.add(line)
polygon.innerLines.push(line) polygon.innerLines.push(line)
})*/ })
//마지막으로 연결되지 않고 떨어져있는 마루를 확인한다.
let missedRidge = []
polygon.ridges.forEach((ridge) => {
let lineCheck1 = polygon.innerLines.filter((line) => {
console.log(!(line.x1 !== ridge.x1 && line.y1 !== ridge.y1 && line.x2 !== ridge.x2 && line.y2 !== ridge.y2))
if (
!(line.x1 === ridge.x1 && line.y1 === ridge.y1 && line.x2 === ridge.x2 && line.y2 === ridge.y2) &&
((line.x1 === ridge.x1 && line.y1 === ridge.y1) || (line.x2 === ridge.x1 && line.y2 === ridge.y1))
) {
return line
}
})
let lineCheck2 = polygon.innerLines.filter((line) => {
if (
!(line.x1 === ridge.x1 && line.y1 === ridge.y1 && line.x2 === ridge.x2 && line.y2 === ridge.y2) &&
((line.x1 === ridge.x2 && line.y1 === ridge.y2) || (line.x2 === ridge.x2 && line.y2 === ridge.y2))
) {
return line
}
})
if (lineCheck1.length === 0 || lineCheck2.length === 0) {
missedRidge.push(ridge)
}
})
missedRidge.forEach((ridge) => {
let missedRidge2 = missedRidge.filter(
(ridge2) => !(ridge.x1 === ridge2.x1 && ridge.y1 === ridge2.y1 && ridge.x2 === ridge2.x2 && ridge.y2 === ridge2.y2),
)
missedRidge2.forEach((ridge2) => {
let overlap = false
if (ridge.x1 === ridge.x2 && ridge2.x1 === ridge2.x2 && ridge2.x1 === ridge.x1) {
overlap = true
}
if (ridge.y1 === ridge.y2 && ridge2.y1 === ridge2.y2 && ridge2.y1 === ridge.y1) {
overlap = true
}
if (overlap) {
let x1 = Math.min(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2)
let x2 = Math.max(ridge.x1, ridge2.x1, ridge.x2, ridge2.x2)
let y1 = Math.min(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2)
let y2 = Math.max(ridge.y1, ridge2.y1, ridge.y2, ridge2.y2)
const newRidge = new QLine([x1, y1, x2, y2], {
fontSize: polygon.fontSize,
stroke: 'blue',
strokeWidth: 1,
})
polygon.canvas.remove(ridge)
polygon.canvas.remove(ridge2)
polygon.ridges = polygon.ridges.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2))
polygon.ridges = polygon.ridges.filter((r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2))
polygon.innerLines = polygon.innerLines.filter((r) => !(ridge.x1 === r.x1 && ridge.y1 === r.y1 && ridge.x2 === r.x2 && ridge.y2 === r.y2))
polygon.innerLines = polygon.innerLines.filter((r) => !(ridge2.x1 === r.x1 && ridge2.y1 === r.y1 && ridge2.x2 === r.x2 && ridge2.y2 === r.y2))
polygon.canvas.add(newRidge)
polygon.ridges.push(newRidge)
polygon.innerLines.push(newRidge)
}
})
})
} }
/* /*