모임지붕 그리기 최종시 떨어진 마루 합치는 작업추가
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) => {
|
||||
let count = 0
|
||||
@ -2457,7 +2445,7 @@ const connectLinePoint = (polygon) => {
|
||||
polygon.innerLines.push(line)
|
||||
})
|
||||
|
||||
/*missedPoints = []
|
||||
missedPoints = []
|
||||
missedLine = []
|
||||
|
||||
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))
|
||||
|
||||
console.log(missedLine)
|
||||
|
||||
missedLine.forEach((p, index) => {
|
||||
const line = new QLine([p.x1, p.y1, p.x2, p.y2], {
|
||||
fontSize: polygon.fontSize,
|
||||
@ -2517,7 +2503,70 @@ const connectLinePoint = (polygon) => {
|
||||
})
|
||||
polygon.canvas.add(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