모임지붕 그리기 최종시 떨어진 마루 합치는 작업추가
This commit is contained in:
parent
5912da0ff8
commit
8c10964b52
@ -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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user