동,현 연결
This commit is contained in:
parent
80e555d653
commit
88136403f7
@ -181,49 +181,7 @@ const movingLineFromSkeleton = (roofId, canvas) => {
|
|||||||
const offset = line.attributes.offset
|
const offset = line.attributes.offset
|
||||||
// 새로운 좌표 계산
|
// 새로운 좌표 계산
|
||||||
let newStartPoint = {...originalStartPoint};
|
let newStartPoint = {...originalStartPoint};
|
||||||
let newEndPoint = {...originalEndPoint};
|
let newEndPoint = {...originalEndPoint}
|
||||||
|
|
||||||
// 위치와 방향에 따라 좌표 조정
|
|
||||||
/*
|
|
||||||
switch (position) {
|
|
||||||
case 'left':
|
|
||||||
if (moveDirection === 'up') {
|
|
||||||
newStartPoint.x = Big(line.startPoint.x).minus(absMove).toNumber();
|
|
||||||
newEndPoint.x = Big(line.endPoint.x).minus(absMove).toNumber();
|
|
||||||
} else if (moveDirection === 'down') {
|
|
||||||
newStartPoint.x = Big(line.startPoint.x).plus(absMove).toNumber();
|
|
||||||
newEndPoint.x = Big(line.endPoint.x).plus(absMove).toNumber();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'right':
|
|
||||||
if (moveDirection === 'up') {
|
|
||||||
newStartPoint.x = Big(line.startPoint.x).plus(absMove).toNumber();
|
|
||||||
newEndPoint.x = Big(line.endPoint.x).plus(absMove).toNumber();
|
|
||||||
} else if (moveDirection === 'down') {
|
|
||||||
newStartPoint.x = Big(line.startPoint.x).minus(absMove).toNumber();
|
|
||||||
newEndPoint.x = Big(line.endPoint.x).minus(absMove).toNumber();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'top':
|
|
||||||
if (moveDirection === 'up') {
|
|
||||||
newStartPoint.y = Big(line.startPoint.y).minus(absMove).toNumber();
|
|
||||||
newEndPoint.y = Big(line.endPoint.y).minus(absMove).toNumber();
|
|
||||||
} else if (moveDirection === 'down') {
|
|
||||||
newStartPoint.y = Big(line.startPoint.y).plus(absMove).toNumber();
|
|
||||||
newEndPoint.y = Big(line.endPoint.y).plus(absMove).toNumber();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'bottom':
|
|
||||||
if (moveDirection === 'up') {
|
|
||||||
newStartPoint.y = Big(line.startPoint.y).plus(absMove).toNumber();
|
|
||||||
newEndPoint.y = Big(line.endPoint.y).plus(absMove).toNumber();
|
|
||||||
} else if (moveDirection === 'down') {
|
|
||||||
newStartPoint.y = Big(line.startPoint.y).minus(absMove).toNumber();
|
|
||||||
newEndPoint.y = Big(line.endPoint.y).minus(absMove).toNumber();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// 원본 라인 업데이트
|
// 원본 라인 업데이트
|
||||||
// newPoints 배열에서 일치하는 포인트들을 찾아서 업데이트
|
// newPoints 배열에서 일치하는 포인트들을 찾아서 업데이트
|
||||||
console.log('absMove::', moveUpDownLength);
|
console.log('absMove::', moveUpDownLength);
|
||||||
@ -650,8 +608,9 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
canvas.renderAll();
|
canvas.renderAll();
|
||||||
});
|
});
|
||||||
|
|
||||||
//if((roof.moveUpDown??0 > 0) ) {
|
if((roof.moveUpDown??0 > 0) || (roof.moveFlowLine??0 > 0) ) {
|
||||||
|
|
||||||
|
const getMoveUpDownLine = () => {
|
||||||
// 같은 라인이 없으므로 새 다각형 라인 생성
|
// 같은 라인이 없으므로 새 다각형 라인 생성
|
||||||
//라인 편집
|
//라인 편집
|
||||||
// let i = 0
|
// let i = 0
|
||||||
@ -799,11 +758,11 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
// const roofLine = sortRoofLines[index];
|
// const roofLine = sortRoofLines[index];
|
||||||
|
|
||||||
if(roofLine.attributes.wallLine !== wallLine.id || (roofLine.idx - 1) !== index ){
|
if (roofLine.attributes.wallLine !== wallLine.id || (roofLine.idx - 1) !== index) {
|
||||||
console.log("wallLine2::::", wallLine.id)
|
console.log("wallLine2::::", wallLine.id)
|
||||||
console.log('roofLine:::',roofLine.attributes.wallLine)
|
console.log('roofLine:::', roofLine.attributes.wallLine)
|
||||||
console.log("w:::",wallLine.startPoint, wallLine.endPoint)
|
console.log("w:::", wallLine.startPoint, wallLine.endPoint)
|
||||||
console.log("R:::",roofLine.startPoint, roofLine.endPoint)
|
console.log("R:::", roofLine.startPoint, roofLine.endPoint)
|
||||||
console.log("not matching roofLine", roofLine);
|
console.log("not matching roofLine", roofLine);
|
||||||
return false
|
return false
|
||||||
}//roofLines.find(line => line.attributes.wallLineId === wallLine.attributes.wallId);
|
}//roofLines.find(line => line.attributes.wallLineId === wallLine.attributes.wallId);
|
||||||
@ -815,7 +774,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
//roofline 외곽선 설정
|
//roofline 외곽선 설정
|
||||||
console.log("index::::", index)
|
console.log("index::::", index)
|
||||||
console.log('roofLine:::',roofLine)
|
console.log('roofLine:::', roofLine)
|
||||||
console.log('wallLine', wallLine)
|
console.log('wallLine', wallLine)
|
||||||
console.log('wallBaseLine', wallBaseLine)
|
console.log('wallBaseLine', wallBaseLine)
|
||||||
|
|
||||||
@ -854,17 +813,39 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
strokeWidth: 4,
|
strokeWidth: 4,
|
||||||
name : 'eaveHelpLine',
|
name : 'eaveHelpLine',
|
||||||
lineName : 'eaveHelpLine',
|
lineName : 'eaveHelpLine',
|
||||||
selectable : true,
|
|
||||||
visible : true,
|
visible : true,
|
||||||
roofId : roofId,
|
roofId : roofId,
|
||||||
|
selectable: true,
|
||||||
|
hoverCursor: 'pointer',
|
||||||
attributes : {
|
attributes : {
|
||||||
type: 'eaveHelpLine',
|
type : 'eaveHelpLine',
|
||||||
isStart : true,
|
isStart: true,
|
||||||
pitch: wallLine.attributes.pitch,
|
pitch : wallLine.attributes.pitch,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Add right-click handler
|
||||||
|
line.on('mousedown', function(options) {
|
||||||
|
if (options.e.button === 2) { // Right click
|
||||||
|
options.e.preventDefault();
|
||||||
|
options.e.stopPropagation();
|
||||||
|
|
||||||
|
// Trigger the context menu
|
||||||
|
if (canvas) {
|
||||||
|
canvas.setActiveObject(line);
|
||||||
|
canvas.fire('mouse:down', {
|
||||||
|
e: options.e,
|
||||||
|
target: line,
|
||||||
|
subTargets: [line]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
coordinateText(line)
|
coordinateText(line)
|
||||||
canvas.add(line)
|
canvas.add(line)
|
||||||
|
line.bringToFront()
|
||||||
canvas.renderAll();
|
canvas.renderAll();
|
||||||
return line
|
return line
|
||||||
}
|
}
|
||||||
@ -881,7 +862,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
let isOut = false
|
let isOut = false
|
||||||
|
|
||||||
//두 포인트가 변경된 라인인
|
//두 포인트가 변경된 라인인
|
||||||
if (fullyMoved ) {
|
if (fullyMoved) {
|
||||||
//반시계방향향
|
//반시계방향향
|
||||||
|
|
||||||
const mLine = getSelectLinePosition(wall, wallBaseLine)
|
const mLine = getSelectLinePosition(wall, wallBaseLine)
|
||||||
@ -889,7 +870,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
if (getOrientation(roofLine) === 'vertical') {
|
if (getOrientation(roofLine) === 'vertical') {
|
||||||
|
|
||||||
if (['left', 'right'].includes(mLine.position)) {
|
if (['left', 'right'].includes(mLine.position)) {
|
||||||
if(Math.abs(wallLine.x1 - wallBaseLine.x1) < 0.1 || Math.abs(wallLine.x2 - wallBaseLine.x2) < 0.1) {
|
if (Math.abs(wallLine.x1 - wallBaseLine.x1) < 0.1 || Math.abs(wallLine.x2 - wallBaseLine.x2) < 0.1) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const positionType =
|
const positionType =
|
||||||
@ -899,61 +880,61 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const condition = `${mLine.position}_${positionType}`;
|
const condition = `${mLine.position}_${positionType}`;
|
||||||
let isStartEnd = findInteriorPoint(wallBaseLine, sortedBaseLines)
|
let isStartEnd = findInteriorPoint(wallBaseLine, sortedBaseLines)
|
||||||
let sPoint, ePoint;
|
let sPoint, ePoint;
|
||||||
if(condition === 'left_in') {
|
if (condition === 'left_in') {
|
||||||
isIn = true
|
isIn = true
|
||||||
|
|
||||||
if (isStartEnd.start ) {
|
if (isStartEnd.start) {
|
||||||
newPEnd.y = roofLine.y2;
|
newPEnd.y = roofLine.y2;
|
||||||
newPEnd.x = roofLine.x2;
|
newPEnd.x = roofLine.x2;
|
||||||
|
|
||||||
const moveDist = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
const moveDist = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
||||||
ePoint = {x: wallBaseLine.x1, y: wallBaseLine.y1};
|
ePoint = { x: wallBaseLine.x1, y: wallBaseLine.y1 };
|
||||||
newPStart.y = wallBaseLine.y1
|
newPStart.y = wallBaseLine.y1
|
||||||
|
|
||||||
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'left_in_start' });
|
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'left_in_start' });
|
||||||
const newPointX = Big(roofLine.x1).plus(moveDist).abs().toNumber()
|
const newPointX = Big(roofLine.x1).plus(moveDist).abs().toNumber()
|
||||||
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
||||||
const pLineY = Big(roofLine.y1).minus(0).abs().toNumber()
|
const pLineY = Big(roofLine.y1).minus(0).abs().toNumber()
|
||||||
let idx = (0 > index - 1)?roofLines.length:index
|
let idx = (0 > index - 1) ? roofLines.length : index
|
||||||
const pLineX = roofLines[idx-1].x1
|
const pLineX = roofLines[idx - 1].x1
|
||||||
|
|
||||||
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
||||||
getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
if (Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
||||||
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartEnd.end) {
|
if (isStartEnd.end) {
|
||||||
newPStart.y = roofLine.y1;
|
newPStart.y = roofLine.y1;
|
||||||
newPStart.x = roofLine.x1;
|
newPStart.x = roofLine.x1;
|
||||||
|
|
||||||
const moveDist = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
const moveDist = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
||||||
ePoint = {x: wallBaseLine.x2, y: wallBaseLine.y2};
|
ePoint = { x: wallBaseLine.x2, y: wallBaseLine.y2 };
|
||||||
newPEnd.y = wallBaseLine.y2
|
newPEnd.y = wallBaseLine.y2
|
||||||
|
|
||||||
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'left_in_end' });
|
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'left_in_end' });
|
||||||
const newPointX = Big(roofLine.x1).plus(moveDist).toNumber()
|
const newPointX = Big(roofLine.x1).plus(moveDist).toNumber()
|
||||||
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
||||||
const pLineY = Big(roofLine.y2).minus(0).abs().toNumber()
|
const pLineY = Big(roofLine.y2).minus(0).abs().toNumber()
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const pLineX = roofLines[idx+1].x2
|
const pLineX = roofLines[idx + 1].x2
|
||||||
|
|
||||||
getAddLine({ x: newPEnd.x, y: newPEnd.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
getAddLine({ x: newPEnd.x, y: newPEnd.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
||||||
getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: newPointX, y: roofLine.y1 }, 'orange')
|
getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: newPointX, y: roofLine.y1 }, 'orange')
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
if (Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
||||||
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
//getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
//getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
||||||
}
|
}
|
||||||
|
|
||||||
}else if(condition === 'left_out') {
|
} else if (condition === 'left_out') {
|
||||||
console.log("left_out::::isStartEnd:::::", isStartEnd);
|
console.log("left_out::::isStartEnd:::::", isStartEnd);
|
||||||
if(isStartEnd.start){
|
if (isStartEnd.start) {
|
||||||
|
|
||||||
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
||||||
const aStartY = Big(roofLine.y1).minus(moveDist).abs().toNumber()
|
const aStartY = Big(roofLine.y1).minus(moveDist).abs().toNumber()
|
||||||
@ -963,38 +944,38 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineY = Big(bStartY).minus(wallLine.y1).abs().toNumber()
|
const eLineY = Big(bStartY).minus(wallLine.y1).abs().toNumber()
|
||||||
newPStart.y = aStartY
|
newPStart.y = aStartY
|
||||||
newPEnd.y = roofLine.y2 //Big(roofLine.y2).minus(eLineY).toNumber()
|
newPEnd.y = roofLine.y2 //Big(roofLine.y2).minus(eLineY).toNumber()
|
||||||
let idx = (0 >= index - 1)?roofLines.length:index
|
let idx = (0 >= index - 1) ? roofLines.length : index
|
||||||
const newLine = roofLines[idx-1];
|
const newLine = roofLines[idx - 1];
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
if (Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x1 < inLine.x2) {
|
if (inLine.x1 < inLine.x2) {
|
||||||
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y2, x: inLine.x2 },{ y: bStartY, x: wallLine.x2 }, 'pink')
|
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: bStartY, x: wallLine.x2 }, 'pink')
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: roofLine.y1, x: wallLine.x1 }, 'magenta')
|
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: roofLine.y1, x: wallLine.x1 }, 'magenta')
|
||||||
getAddLine({ y: newLine.y1, x: newLine.x1 }, { y: newLine.y2, x: wallLine.x2 }, 'Gray')
|
getAddLine({ y: newLine.y1, x: newLine.x1 }, { y: newLine.y2, x: wallLine.x2 }, 'Gray')
|
||||||
findPoints.push({ y: aStartY, x: newPStart.x, position: 'left_out_start' });
|
findPoints.push({ y: aStartY, x: newPStart.x, position: 'left_out_start' });
|
||||||
}else{
|
} else {
|
||||||
const cLineY = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
const cLineY = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
||||||
newPStart.y = Big(newPStart.y).minus(cLineY).toNumber();
|
newPStart.y = Big(newPStart.y).minus(cLineY).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x1 < inLine.x2) {
|
if (inLine.x1 < inLine.x2) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1},{ y: newPStart.y, x: newPStart.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//newPStart.y = wallLine.y1;
|
//newPStart.y = wallLine.y1;
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.x2).minus(roofLine.x2).abs().toNumber();
|
const rLineM = Big(wallBaseLine.x2).minus(roofLine.x2).abs().toNumber();
|
||||||
newPStart.y = Big(wallBaseLine.y1).minus(rLineM).abs().toNumber();
|
newPStart.y = Big(wallBaseLine.y1).minus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine) {
|
if (inLine) {
|
||||||
if (inLine.x2 > inLine.x1) {
|
if (inLine.x2 > inLine.x1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
} else {
|
} else {
|
||||||
@ -1007,7 +988,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(isStartEnd.end){
|
if (isStartEnd.end) {
|
||||||
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
||||||
const aStartY = Big(roofLine.y2).plus(moveDist).toNumber()
|
const aStartY = Big(roofLine.y2).plus(moveDist).toNumber()
|
||||||
const bStartY = Big(wallLine.y2).plus(moveDist).toNumber()
|
const bStartY = Big(wallLine.y2).plus(moveDist).toNumber()
|
||||||
@ -1016,31 +997,31 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineY = Big(bStartY).minus(wallLine.y2).abs().toNumber()
|
const eLineY = Big(bStartY).minus(wallLine.y2).abs().toNumber()
|
||||||
newPEnd.y = aStartY
|
newPEnd.y = aStartY
|
||||||
newPStart.y = roofLine.y1//Big(roofLine.y1).plus(eLineY).toNumber()
|
newPStart.y = roofLine.y1//Big(roofLine.y1).plus(eLineY).toNumber()
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const newLine = roofLines[idx+1];
|
const newLine = roofLines[idx + 1];
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
if (Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x1 < inLine.x2) {
|
if (inLine.x1 < inLine.x2) {
|
||||||
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: bStartY, x: wallLine.x1 }, 'pink')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: bStartY, x: wallLine.x1 }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: roofLine.y2, x: wallLine.x2 }, 'magenta')
|
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: roofLine.y2, x: wallLine.x2 }, 'magenta')
|
||||||
getAddLine({ y: newLine.y2, x: newLine.x2 }, { y: newLine.y1, x: wallLine.x1 }, 'Gray')
|
getAddLine({ y: newLine.y2, x: newLine.x2 }, { y: newLine.y1, x: wallLine.x1 }, 'Gray')
|
||||||
findPoints.push({ y: aStartY, x: newPEnd.x, position: 'left_out_end' });
|
findPoints.push({ y: aStartY, x: newPEnd.x, position: 'left_out_end' });
|
||||||
}else{
|
} else {
|
||||||
const cLineY = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
const cLineY = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
||||||
newPEnd.y = Big(newPEnd.y).plus(cLineY).toNumber();
|
newPEnd.y = Big(newPEnd.y).plus(cLineY).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x1 < inLine.x2) {
|
if (inLine.x1 < inLine.x2) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 },{ y: newPEnd.y, x: newPEnd.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
|
|
||||||
// newPEnd.y = wallLine.y2
|
// newPEnd.y = wallLine.y2
|
||||||
|
|
||||||
@ -1048,7 +1029,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const rLineM = Big(wallBaseLine.x2).minus(roofLine.x2).abs().toNumber();
|
const rLineM = Big(wallBaseLine.x2).minus(roofLine.x2).abs().toNumber();
|
||||||
newPEnd.y = Big(wallBaseLine.y2).plus(rLineM).abs().toNumber();
|
newPEnd.y = Big(wallBaseLine.y2).plus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine) {
|
if (inLine) {
|
||||||
if (inLine.x2 > inLine.x1) {
|
if (inLine.x2 > inLine.x1) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
} else {
|
} else {
|
||||||
@ -1060,60 +1041,60 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
}
|
}
|
||||||
findPoints.push({ y: newPStart.y, x: newPEnd.x, position: 'left_out_end' });
|
findPoints.push({ y: newPStart.y, x: newPEnd.x, position: 'left_out_end' });
|
||||||
}
|
}
|
||||||
}else if(condition === 'right_in') {
|
} else if (condition === 'right_in') {
|
||||||
if (isStartEnd.start ) {
|
if (isStartEnd.start) {
|
||||||
|
|
||||||
newPEnd.y = roofLine.y2;
|
newPEnd.y = roofLine.y2;
|
||||||
newPEnd.x = roofLine.x2;
|
newPEnd.x = roofLine.x2;
|
||||||
|
|
||||||
const moveDist = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
const moveDist = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
||||||
ePoint = {x: wallBaseLine.x1, y: wallBaseLine.y1};
|
ePoint = { x: wallBaseLine.x1, y: wallBaseLine.y1 };
|
||||||
newPStart.y = wallBaseLine.y1
|
newPStart.y = wallBaseLine.y1
|
||||||
|
|
||||||
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'right_in_start'});
|
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'right_in_start' });
|
||||||
const newPointX = Big(roofLine.x1).minus(moveDist).abs().toNumber()
|
const newPointX = Big(roofLine.x1).minus(moveDist).abs().toNumber()
|
||||||
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
||||||
const pLineY = Big(roofLine.y1).minus(0).abs().toNumber()
|
const pLineY = Big(roofLine.y1).minus(0).abs().toNumber()
|
||||||
let idx = (0 >= index - 1)?roofLines.length:index
|
let idx = (0 >= index - 1) ? roofLines.length : index
|
||||||
const pLineX = roofLines[idx-1].x1
|
const pLineX = roofLines[idx - 1].x1
|
||||||
|
|
||||||
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
||||||
//getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
//getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
if (Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
||||||
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartEnd.end) {
|
if (isStartEnd.end) {
|
||||||
newPStart.y = roofLine.y1;
|
newPStart.y = roofLine.y1;
|
||||||
newPStart.x = roofLine.x1;
|
newPStart.x = roofLine.x1;
|
||||||
|
|
||||||
const moveDist = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
const moveDist = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
||||||
ePoint = {x: wallBaseLine.x2, y: wallBaseLine.y2};
|
ePoint = { x: wallBaseLine.x2, y: wallBaseLine.y2 };
|
||||||
newPEnd.y = wallBaseLine.y2
|
newPEnd.y = wallBaseLine.y2
|
||||||
|
|
||||||
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'right_in_end' });
|
findPoints.push({ x: ePoint.x, y: ePoint.y, position: 'right_in_end' });
|
||||||
const newPointX = Big(roofLine.x1).minus(moveDist).toNumber()
|
const newPointX = Big(roofLine.x1).minus(moveDist).toNumber()
|
||||||
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
const pDist = Big(wallLine.x1).minus(roofLine.x1).abs().toNumber()
|
||||||
const pLineY = Big(roofLine.y2).minus(0).abs().toNumber()
|
const pLineY = Big(roofLine.y2).minus(0).abs().toNumber()
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const pLineX = roofLines[idx+1].x2
|
const pLineX = roofLines[idx + 1].x2
|
||||||
|
|
||||||
getAddLine({ x: newPEnd.x, y: newPEnd.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
getAddLine({ x: newPEnd.x, y: newPEnd.y }, { x: ePoint.x, y: ePoint.y }, 'blue')
|
||||||
getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: newPointX, y: roofLine.y1 }, 'orange')
|
getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: newPointX, y: roofLine.y1 }, 'orange')
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
if (Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: newPointX, y: pLineY }, 'green')
|
||||||
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
getAddLine({ x: newPointX, y: pLineY }, { x: ePoint.x, y: ePoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: newPointX, y: roofLine.y2 }, 'orange')
|
||||||
}
|
}
|
||||||
|
|
||||||
}else if(condition === 'right_out') {
|
} else if (condition === 'right_out') {
|
||||||
console.log("right_out::::isStartEnd:::::", isStartEnd);
|
console.log("right_out::::isStartEnd:::::", isStartEnd);
|
||||||
if (isStartEnd.start ) { //x1 inside
|
if (isStartEnd.start) { //x1 inside
|
||||||
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
||||||
const aStartY = Big(roofLine.y1).plus(moveDist).abs().toNumber()
|
const aStartY = Big(roofLine.y1).plus(moveDist).abs().toNumber()
|
||||||
const bStartY = Big(wallLine.y1).plus(moveDist).abs().toNumber()
|
const bStartY = Big(wallLine.y1).plus(moveDist).abs().toNumber()
|
||||||
@ -1122,41 +1103,41 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineY = Big(bStartY).minus(wallLine.y1).abs().toNumber()
|
const eLineY = Big(bStartY).minus(wallLine.y1).abs().toNumber()
|
||||||
newPStart.y = aStartY
|
newPStart.y = aStartY
|
||||||
newPEnd.y = roofLine.y2//Big(roofLine.y2).plus(eLineY).toNumber()
|
newPEnd.y = roofLine.y2//Big(roofLine.y2).plus(eLineY).toNumber()
|
||||||
let idx = (0 >= index - 1)?roofLines.length:index
|
let idx = (0 >= index - 1) ? roofLines.length : index
|
||||||
const newLine = roofLines[idx-1];
|
const newLine = roofLines[idx - 1];
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
if (Math.abs(wallBaseLine.y1 - wallLine.y1) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x2 < inLine.x1) {
|
if (inLine.x2 < inLine.x1) {
|
||||||
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 },{ y: bStartY, x: wallLine.x2 }, 'pink')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: bStartY, x: wallLine.x2 }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: roofLine.y1, x: wallLine.x1 }, 'magenta')
|
getAddLine({ y: bStartY, x: wallLine.x2 }, { y: roofLine.y1, x: wallLine.x1 }, 'magenta')
|
||||||
getAddLine({ y: newLine.y1, x: newLine.x1 }, { y: newLine.y2, x: wallLine.x2 }, 'Gray')
|
getAddLine({ y: newLine.y1, x: newLine.x1 }, { y: newLine.y2, x: wallLine.x2 }, 'Gray')
|
||||||
findPoints.push({ y: aStartY, x: newPEnd.x, position: 'right_out_start' });
|
findPoints.push({ y: aStartY, x: newPEnd.x, position: 'right_out_start' });
|
||||||
}else{
|
} else {
|
||||||
const cLineY = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
const cLineY = Big(wallBaseLine.x1).minus(wallLine.x1).abs().toNumber()
|
||||||
newPStart.y = Big(newPStart.y).plus(cLineY).toNumber();
|
newPStart.y = Big(newPStart.y).plus(cLineY).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x2 < inLine.x1 ) {
|
if (inLine.x2 < inLine.x1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 },{ y: newPStart.y, x: newPStart.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//newPStart.y = wallLine.y1;
|
//newPStart.y = wallLine.y1;
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.x1).minus(roofLine.x1).abs().toNumber();
|
const rLineM = Big(wallBaseLine.x1).minus(roofLine.x1).abs().toNumber();
|
||||||
newPStart.y = Big(wallBaseLine.y1).plus(rLineM).abs().toNumber();
|
newPStart.y = Big(wallBaseLine.y1).plus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x2 > inLine.x1 ) {
|
if (inLine.x2 > inLine.x1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPStart.y, x: newPStart.x } , 'purple')
|
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1166,7 +1147,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartEnd.end){
|
if (isStartEnd.end) {
|
||||||
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
const moveDist = Big(wallLine.x1).minus(wallBaseLine.x1).abs().toNumber()
|
||||||
const aStartY = Big(roofLine.y2).minus(moveDist).abs().toNumber()
|
const aStartY = Big(roofLine.y2).minus(moveDist).abs().toNumber()
|
||||||
const bStartY = Big(wallLine.y2).minus(moveDist).abs().toNumber()
|
const bStartY = Big(wallLine.y2).minus(moveDist).abs().toNumber()
|
||||||
@ -1175,41 +1156,41 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineY = Big(bStartY).minus(wallLine.y2).abs().toNumber()
|
const eLineY = Big(bStartY).minus(wallLine.y2).abs().toNumber()
|
||||||
newPEnd.y = aStartY
|
newPEnd.y = aStartY
|
||||||
newPStart.y = roofLine.y1//Big(roofLine.y1).minus(eLineY).toNumber()
|
newPStart.y = roofLine.y1//Big(roofLine.y1).minus(eLineY).toNumber()
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const newLine = roofLines[idx+1];
|
const newLine = roofLines[idx + 1];
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x2 < inLine.x1) {
|
if (inLine.x2 < inLine.x1) {
|
||||||
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: inLine.y2, x: inLine.x2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 },{ y: bStartY, x: wallLine.x1 }, 'pink')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: bStartY, x: wallLine.x1 }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
if (Math.abs(wallBaseLine.y2 - wallLine.y2) < 0.1) {
|
||||||
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: roofLine.y2, x: wallLine.x2 }, 'magenta')
|
getAddLine({ y: bStartY, x: wallLine.x1 }, { y: roofLine.y2, x: wallLine.x2 }, 'magenta')
|
||||||
getAddLine({ y: newLine.y2, x: newLine.x2 }, { y: newLine.y1, x: wallLine.x1 }, 'Gray')
|
getAddLine({ y: newLine.y2, x: newLine.x2 }, { y: newLine.y1, x: wallLine.x1 }, 'Gray')
|
||||||
findPoints.push({ y: aStartY, x: newPEnd.x, position: 'right_out_end' });
|
findPoints.push({ y: aStartY, x: newPEnd.x, position: 'right_out_end' });
|
||||||
}else{
|
} else {
|
||||||
const cLineY = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
const cLineY = Big(wallBaseLine.x2).minus(wallLine.x2).abs().toNumber()
|
||||||
newPEnd.y = Big(newPEnd.y).minus(cLineY).toNumber();
|
newPEnd.y = Big(newPEnd.y).minus(cLineY).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x2 < inLine.x1) {
|
if (inLine.x2 < inLine.x1) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//newPEnd.y = wallLine.y2;
|
//newPEnd.y = wallLine.y2;
|
||||||
|
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.x2).minus(roofLine.x2).abs().toNumber();
|
const rLineM = Big(wallBaseLine.x2).minus(roofLine.x2).abs().toNumber();
|
||||||
newPEnd.y = Big(wallBaseLine.y2).minus(rLineM).abs().toNumber();
|
newPEnd.y = Big(wallBaseLine.y2).minus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.x2 > inLine.x1 ) {
|
if (inLine.x2 > inLine.x1) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y2, x: inLine.x2}, { y: newPEnd.y, x: newPEnd.x } , 'purple')
|
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1222,7 +1203,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
} else if (getOrientation(roofLine) === 'horizontal') { //red
|
} else if (getOrientation(roofLine) === 'horizontal') { //red
|
||||||
|
|
||||||
if (['top', 'bottom'].includes(mLine.position)) {
|
if (['top', 'bottom'].includes(mLine.position)) {
|
||||||
if(Math.abs(wallLine.y1 - wallBaseLine.y1) < 0.1 || Math.abs(wallLine.y2 - wallBaseLine.y2) < 0.1) {
|
if (Math.abs(wallLine.y1 - wallBaseLine.y1) < 0.1 || Math.abs(wallLine.y2 - wallBaseLine.y2) < 0.1) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const positionType =
|
const positionType =
|
||||||
@ -1235,10 +1216,10 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
let sPoint, ePoint;
|
let sPoint, ePoint;
|
||||||
|
|
||||||
if(condition === 'top_in') {
|
if (condition === 'top_in') {
|
||||||
if (isStartEnd.start ) {
|
if (isStartEnd.start) {
|
||||||
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
||||||
sPoint = {x: wallBaseLine.x1, y: wallBaseLine.y1};
|
sPoint = { x: wallBaseLine.x1, y: wallBaseLine.y1 };
|
||||||
newPStart.x = wallBaseLine.x1;
|
newPStart.x = wallBaseLine.x1;
|
||||||
|
|
||||||
|
|
||||||
@ -1246,12 +1227,12 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
const pDist = Big(wallLine.y2).minus(roofLine.y2).abs().toNumber()
|
const pDist = Big(wallLine.y2).minus(roofLine.y2).abs().toNumber()
|
||||||
const pLineX = Big(roofLine.x1).minus(0).abs().toNumber()
|
const pLineX = Big(roofLine.x1).minus(0).abs().toNumber()
|
||||||
let idx = (0 >= index - 1)?roofLines.length:index
|
let idx = (0 >= index - 1) ? roofLines.length : index
|
||||||
const pLineY = roofLines[idx-1].y1
|
const pLineY = roofLines[idx - 1].y1
|
||||||
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: sPoint.x, y: sPoint.y }, 'blue')
|
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: sPoint.x, y: sPoint.y }, 'blue')
|
||||||
findPoints.push({ x: sPoint.x, y: sPoint.y, position: 'top_in_start' });
|
findPoints.push({ x: sPoint.x, y: sPoint.y, position: 'top_in_start' });
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
if (Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: pLineX, y: newPointY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: pLineX, y: newPointY }, 'green')
|
||||||
getAddLine({ x: pLineX, y: newPointY }, { x: sPoint.x, y: sPoint.y }, 'pink')
|
getAddLine({ x: pLineX, y: newPointY }, { x: sPoint.x, y: sPoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
@ -1259,7 +1240,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartEnd.end){
|
if (isStartEnd.end) {
|
||||||
const moveDist = Big(wallLine.y2).minus(wallBaseLine.y2).abs().toNumber()
|
const moveDist = Big(wallLine.y2).minus(wallBaseLine.y2).abs().toNumber()
|
||||||
sPoint = { x: wallBaseLine.x2, y: wallBaseLine.y2 }
|
sPoint = { x: wallBaseLine.x2, y: wallBaseLine.y2 }
|
||||||
newPEnd.x = wallBaseLine.x2
|
newPEnd.x = wallBaseLine.x2
|
||||||
@ -1282,10 +1263,10 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
//getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: roofLine.x1, y: newPointY }, 'orange')
|
//getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: roofLine.x1, y: newPointY }, 'orange')
|
||||||
}
|
}
|
||||||
|
|
||||||
}else if(condition === 'top_out') {
|
} else if (condition === 'top_out') {
|
||||||
console.log("top_out isStartEnd:::::::", isStartEnd);
|
console.log("top_out isStartEnd:::::::", isStartEnd);
|
||||||
|
|
||||||
if (isStartEnd.start ) {
|
if (isStartEnd.start) {
|
||||||
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
||||||
const aStartX = Big(roofLine.x1).plus(moveDist).toNumber()
|
const aStartX = Big(roofLine.x1).plus(moveDist).toNumber()
|
||||||
const bStartX = Big(wallLine.x1).plus(moveDist).toNumber()
|
const bStartX = Big(wallLine.x1).plus(moveDist).toNumber()
|
||||||
@ -1294,48 +1275,48 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineX = Big(bStartX).minus(wallLine.x1).abs().toNumber()
|
const eLineX = Big(bStartX).minus(wallLine.x1).abs().toNumber()
|
||||||
newPEnd.x = roofLine.x2 //Big(newPEnd.x).plus(eLineX).toNumber()
|
newPEnd.x = roofLine.x2 //Big(newPEnd.x).plus(eLineX).toNumber()
|
||||||
newPStart.x = aStartX
|
newPStart.x = aStartX
|
||||||
let idx = (0 > index - 1)?roofLines.length:index
|
let idx = (0 > index - 1) ? roofLines.length : index
|
||||||
const newLine = roofLines[idx-1];
|
const newLine = roofLines[idx - 1];
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
if (Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 > inLine.y1 ) {
|
if (inLine.y2 > inLine.y1) {
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ x: inLine.x1, y: inLine.y1 }, { x: bStartX, y: wallLine.y1 }, 'pink')
|
getAddLine({ x: inLine.x1, y: inLine.y1 }, { x: bStartX, y: wallLine.y1 }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x1, y: wallLine.y1 }, 'magenta')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x1, y: wallLine.y1 }, 'magenta')
|
||||||
getAddLine({ x: newLine.x1, y: newLine.y1 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
getAddLine({ x: newLine.x1, y: newLine.y1 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
||||||
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'top_out_start' });
|
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'top_out_start' });
|
||||||
}else{
|
} else {
|
||||||
const cLineX = Big(wallBaseLine.y1).minus(wallLine.y1).abs().toNumber()
|
const cLineX = Big(wallBaseLine.y1).minus(wallLine.y1).abs().toNumber()
|
||||||
newPStart.x = Big(newPStart.x).plus(cLineX).toNumber();
|
newPStart.x = Big(newPStart.x).plus(cLineX).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 > inLine.y1 ) {
|
if (inLine.y2 > inLine.y1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x } , 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
|
|
||||||
}else {
|
} else {
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.y1).minus(roofLine.y1).abs().toNumber();
|
const rLineM = Big(wallBaseLine.y1).minus(roofLine.y1).abs().toNumber();
|
||||||
newPStart.x = Big(wallBaseLine.x1).plus(rLineM).abs().toNumber();
|
newPStart.x = Big(wallBaseLine.x1).plus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 > inLine.y1 ) {
|
if (inLine.y2 > inLine.y1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x } , 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(isStartEnd.end){
|
if (isStartEnd.end) {
|
||||||
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
||||||
const aStartX = Big(roofLine.x2).minus(moveDist).abs().toNumber()
|
const aStartX = Big(roofLine.x2).minus(moveDist).abs().toNumber()
|
||||||
const bStartX = Big(wallLine.x2).minus(moveDist).abs().toNumber()
|
const bStartX = Big(wallLine.x2).minus(moveDist).abs().toNumber()
|
||||||
@ -1344,52 +1325,52 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineX = Big(bStartX).minus(wallLine.x2).abs().toNumber()
|
const eLineX = Big(bStartX).minus(wallLine.x2).abs().toNumber()
|
||||||
newPStart.x = roofLine.x1;//Big(newPStart.x).minus(eLineX).abs().toNumber()
|
newPStart.x = roofLine.x1;//Big(newPStart.x).minus(eLineX).abs().toNumber()
|
||||||
newPEnd.x = aStartX
|
newPEnd.x = aStartX
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const newLine = roofLines[idx+1];
|
const newLine = roofLines[idx + 1];
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x2 - wallLine.x2) < 0.1) {
|
if (Math.abs(wallBaseLine.x2 - wallLine.x2) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 > inLine.y1 ){
|
if (inLine.y2 > inLine.y1) {
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ x: inLine.x1, y: inLine.y1 },{ x: bStartX, y: wallLine.y1 }, 'pink')
|
getAddLine({ x: inLine.x1, y: inLine.y1 }, { x: bStartX, y: wallLine.y1 }, 'pink')
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x2, y: wallLine.y2 }, 'magenta')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x2, y: wallLine.y2 }, 'magenta')
|
||||||
getAddLine({ x: newLine.x2, y: newLine.y2 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
getAddLine({ x: newLine.x2, y: newLine.y2 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
||||||
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'top_out_end' });
|
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'top_out_end' });
|
||||||
}else{
|
} else {
|
||||||
const cLineX = Big(wallLine.y2).minus(wallBaseLine.y2).abs().toNumber()
|
const cLineX = Big(wallLine.y2).minus(wallBaseLine.y2).abs().toNumber()
|
||||||
newPEnd.x = Big(newPEnd.x).minus(cLineX).toNumber();
|
newPEnd.x = Big(newPEnd.x).minus(cLineX).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 > inLine.y1 ) {
|
if (inLine.y2 > inLine.y1) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 },{ y: newPEnd.y, x: newPEnd.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//newPEnd.x = wallLine.x2;
|
//newPEnd.x = wallLine.x2;
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.y2).minus(roofLine.y2).abs().toNumber();
|
const rLineM = Big(wallBaseLine.y2).minus(roofLine.y2).abs().toNumber();
|
||||||
newPEnd.x = Big(wallBaseLine.x2).minus(rLineM).abs().toNumber();
|
newPEnd.x = Big(wallBaseLine.x2).minus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y1 > inLine.y2 ) {
|
if (inLine.y1 > inLine.y2) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPEnd.y, x: newPEnd.x } , 'purple')
|
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else if(condition === 'bottom_in') {
|
} else if (condition === 'bottom_in') {
|
||||||
if (isStartEnd.start ) {
|
if (isStartEnd.start) {
|
||||||
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
||||||
sPoint = {x: wallBaseLine.x1, y: wallBaseLine.y1};
|
sPoint = { x: wallBaseLine.x1, y: wallBaseLine.y1 };
|
||||||
newPStart.x = wallBaseLine.x1;
|
newPStart.x = wallBaseLine.x1;
|
||||||
|
|
||||||
|
|
||||||
@ -1397,21 +1378,21 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
const pDist = Big(wallLine.y2).minus(roofLine.y2).abs().toNumber()
|
const pDist = Big(wallLine.y2).minus(roofLine.y2).abs().toNumber()
|
||||||
const pLineX = Big(roofLine.x1).minus(0).abs().toNumber()
|
const pLineX = Big(roofLine.x1).minus(0).abs().toNumber()
|
||||||
let idx = (0 > index - 1)?roofLines.length:index
|
let idx = (0 > index - 1) ? roofLines.length : index
|
||||||
const pLineY = roofLines[idx-1].y1
|
const pLineY = roofLines[idx - 1].y1
|
||||||
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: sPoint.x, y: sPoint.y }, 'blue')
|
getAddLine({ x: newPStart.x, y: newPStart.y }, { x: sPoint.x, y: sPoint.y }, 'blue')
|
||||||
findPoints.push({ x: sPoint.x, y: sPoint.y, position: 'bottom_in_start' });
|
findPoints.push({ x: sPoint.x, y: sPoint.y, position: 'bottom_in_start' });
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
if (Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: pLineX, y: newPointY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: pLineX, y: newPointY }, 'green')
|
||||||
getAddLine({ x: pLineX, y: newPointY }, { x: sPoint.x, y: sPoint.y }, 'pink')
|
getAddLine({ x: pLineX, y: newPointY }, { x: sPoint.x, y: sPoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: roofLine.x2, y: newPointY }, 'orange')
|
getAddLine({ x: roofLine.x2, y: roofLine.y2 }, { x: roofLine.x2, y: newPointY }, 'orange')
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartEnd.end){
|
if (isStartEnd.end) {
|
||||||
const moveDist = Big(wallLine.y2).minus(wallBaseLine.y2).abs().toNumber()
|
const moveDist = Big(wallLine.y2).minus(wallBaseLine.y2).abs().toNumber()
|
||||||
sPoint = {x: wallBaseLine.x2, y: wallBaseLine.y2};
|
sPoint = { x: wallBaseLine.x2, y: wallBaseLine.y2 };
|
||||||
newPEnd.x = wallBaseLine.x2;
|
newPEnd.x = wallBaseLine.x2;
|
||||||
|
|
||||||
|
|
||||||
@ -1419,21 +1400,21 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
const pDist = Big(wallLine.y1).minus(roofLine.y1).abs().toNumber()
|
const pDist = Big(wallLine.y1).minus(roofLine.y1).abs().toNumber()
|
||||||
const pLineX = Big(roofLine.x2).minus(0).abs().toNumber()
|
const pLineX = Big(roofLine.x2).minus(0).abs().toNumber()
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const pLineY = roofLines[idx+1].y2
|
const pLineY = roofLines[idx + 1].y2
|
||||||
getAddLine({ x: newPEnd.x, y: newPEnd.y }, { x: sPoint.x, y: sPoint.y }, 'blue')
|
getAddLine({ x: newPEnd.x, y: newPEnd.y }, { x: sPoint.x, y: sPoint.y }, 'blue')
|
||||||
findPoints.push({ x: sPoint.x, y: sPoint.y, position: 'bottom_in_end' });
|
findPoints.push({ x: sPoint.x, y: sPoint.y, position: 'bottom_in_end' });
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x2 - wallLine.x2) < 0.1) {
|
if (Math.abs(wallBaseLine.x2 - wallLine.x2) < 0.1) {
|
||||||
getAddLine({ x: pLineX, y: pLineY }, { x: pLineX, y: newPointY }, 'green')
|
getAddLine({ x: pLineX, y: pLineY }, { x: pLineX, y: newPointY }, 'green')
|
||||||
getAddLine({ x: pLineX, y: newPointY }, { x: sPoint.x, y: sPoint.y }, 'pink')
|
getAddLine({ x: pLineX, y: newPointY }, { x: sPoint.x, y: sPoint.y }, 'pink')
|
||||||
}
|
}
|
||||||
getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: roofLine.x1, y: newPointY }, 'orange')
|
getAddLine({ x: roofLine.x1, y: roofLine.y1 }, { x: roofLine.x1, y: newPointY }, 'orange')
|
||||||
|
|
||||||
}
|
}
|
||||||
}else if(condition === 'bottom_out') {
|
} else if (condition === 'bottom_out') {
|
||||||
console.log("bottom_out isStartEnd:::::::", isStartEnd);
|
console.log("bottom_out isStartEnd:::::::", isStartEnd);
|
||||||
if (isStartEnd.start ) {
|
if (isStartEnd.start) {
|
||||||
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
||||||
const aStartX = Big(roofLine.x1).minus(moveDist).abs().toNumber()
|
const aStartX = Big(roofLine.x1).minus(moveDist).abs().toNumber()
|
||||||
const bStartX = Big(wallLine.x1).minus(moveDist).abs().toNumber()
|
const bStartX = Big(wallLine.x1).minus(moveDist).abs().toNumber()
|
||||||
@ -1442,42 +1423,42 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineX = Big(bStartX).minus(wallLine.x1).abs().toNumber()
|
const eLineX = Big(bStartX).minus(wallLine.x1).abs().toNumber()
|
||||||
newPEnd.x = roofLine.x2//Big(roofLine.x2).minus(eLineX).toNumber()
|
newPEnd.x = roofLine.x2//Big(roofLine.x2).minus(eLineX).toNumber()
|
||||||
newPStart.x = aStartX
|
newPStart.x = aStartX
|
||||||
let idx = (0 > index - 1)?roofLines.length:index
|
let idx = (0 > index - 1) ? roofLines.length : index
|
||||||
const newLine = roofLines[idx-1];
|
const newLine = roofLines[idx - 1];
|
||||||
|
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
if (Math.abs(wallBaseLine.x1 - wallLine.x1) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 < inLine.y1 ) {
|
if (inLine.y2 < inLine.y1) {
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ x: inLine.x1, y: inLine.y1 },{ x: bStartX, y: wallLine.y1 }, 'pink')
|
getAddLine({ x: inLine.x1, y: inLine.y1 }, { x: bStartX, y: wallLine.y1 }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x1, y: wallLine.y1 }, 'magenta')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x1, y: wallLine.y1 }, 'magenta')
|
||||||
getAddLine({ x: newLine.x1, y: newLine.y1 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
getAddLine({ x: newLine.x1, y: newLine.y1 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
||||||
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'bottom_out_start' });
|
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'bottom_out_start' });
|
||||||
}else{
|
} else {
|
||||||
const cLineX = Big(wallBaseLine.y1).minus(wallLine.y1).abs().toNumber()
|
const cLineX = Big(wallBaseLine.y1).minus(wallLine.y1).abs().toNumber()
|
||||||
newPStart.x = Big(newPStart.x).minus(cLineX).toNumber();
|
newPStart.x = Big(newPStart.x).minus(cLineX).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 < inLine.y1 ) {
|
if (inLine.y2 < inLine.y1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
//newPStart.x = wallLine.x1;
|
//newPStart.x = wallLine.x1;
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.y1).minus(roofLine.y1).abs().toNumber();
|
const rLineM = Big(wallBaseLine.y1).minus(roofLine.y1).abs().toNumber();
|
||||||
newPStart.x = Big(wallBaseLine.x1).minus(rLineM).abs().toNumber();
|
newPStart.x = Big(wallBaseLine.x1).minus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPStart.y, x: newPStart.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 > inLine.y1 ) {
|
if (inLine.y2 > inLine.y1) {
|
||||||
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
getAddLine({ y: newPStart.y, x: newPStart.x }, { y: inLine.y1, x: inLine.x1 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPStart.y, x: newPStart.x } , 'purple')
|
getAddLine({ y: inLine.y2, x: inLine.x2 }, { y: newPStart.y, x: newPStart.x }, 'purple')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1485,7 +1466,7 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartEnd.end){
|
if (isStartEnd.end) {
|
||||||
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
const moveDist = Big(wallLine.y1).minus(wallBaseLine.y1).abs().toNumber()
|
||||||
const aStartX = Big(roofLine.x2).plus(moveDist).toNumber()
|
const aStartX = Big(roofLine.x2).plus(moveDist).toNumber()
|
||||||
const bStartX = Big(wallLine.x2).plus(moveDist).toNumber()
|
const bStartX = Big(wallLine.x2).plus(moveDist).toNumber()
|
||||||
@ -1494,41 +1475,41 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
const eLineX = Big(bStartX).minus(wallLine.x2).abs().toNumber()
|
const eLineX = Big(bStartX).minus(wallLine.x2).abs().toNumber()
|
||||||
newPEnd.x = aStartX
|
newPEnd.x = aStartX
|
||||||
newPStart.x = roofLine.x1;//Big(roofLine.x1).plus(eLineX).toNumber()
|
newPStart.x = roofLine.x1;//Big(roofLine.x1).plus(eLineX).toNumber()
|
||||||
let idx = (roofLines.length < index + 1)?0:index
|
let idx = (roofLines.length < index + 1) ? 0 : index
|
||||||
const newLine = roofLines[idx + 1];
|
const newLine = roofLines[idx + 1];
|
||||||
|
|
||||||
if(Math.abs(wallBaseLine.x2 - wallLine.x2) < 0.1) {
|
if (Math.abs(wallBaseLine.x2 - wallLine.x2) < 0.1) {
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 < inLine.y1 ) {
|
if (inLine.y2 < inLine.y1) {
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: inLine.x2, y: inLine.y2 }, 'pink')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ x: inLine.x1, y: inLine.y1 }, { x: bStartX, y: wallLine.y1 }, 'pink')
|
getAddLine({ x: inLine.x1, y: inLine.y1 }, { x: bStartX, y: wallLine.y1 }, 'pink')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x2, y: wallLine.y2 }, 'magenta')
|
getAddLine({ x: bStartX, y: wallLine.y1 }, { x: roofLine.x2, y: wallLine.y2 }, 'magenta')
|
||||||
getAddLine({ x: newLine.x2, y: newLine.y2 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
getAddLine({ x: newLine.x2, y: newLine.y2 }, { x: newLine.x1, y: wallLine.y1 }, 'Gray')
|
||||||
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'bottom_out_end' });
|
findPoints.push({ x: aStartX, y: newPEnd.y, position: 'bottom_out_end' });
|
||||||
}else{
|
} else {
|
||||||
const cLineX = Big(wallBaseLine.y2).minus(wallLine.y2).abs().toNumber()
|
const cLineX = Big(wallBaseLine.y2).minus(wallLine.y2).abs().toNumber()
|
||||||
newPEnd.x = Big(newPEnd.x).plus(cLineX).toNumber();
|
newPEnd.x = Big(newPEnd.x).plus(cLineX).toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y2 < inLine.y1 ) {
|
if (inLine.y2 < inLine.y1) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 },{ y: newPEnd.y, x: newPEnd.x }, 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
//newPEnd.x = wallLine.x2;
|
//newPEnd.x = wallLine.x2;
|
||||||
//외곽 라인 그리기
|
//외곽 라인 그리기
|
||||||
const rLineM = Big(wallBaseLine.y2).minus(roofLine.y2).abs().toNumber();
|
const rLineM = Big(wallBaseLine.y2).minus(roofLine.y2).abs().toNumber();
|
||||||
newPEnd.x = Big(wallBaseLine.x2).plus(rLineM).abs().toNumber();
|
newPEnd.x = Big(wallBaseLine.x2).plus(rLineM).abs().toNumber();
|
||||||
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
const inLine = findLineContainingPoint(innerLines, { y: newPEnd.y, x: newPEnd.x })
|
||||||
if(inLine){
|
if (inLine) {
|
||||||
if(inLine.y1 > inLine.y2 ) {
|
if (inLine.y1 > inLine.y2) {
|
||||||
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
getAddLine({ y: newPEnd.y, x: newPEnd.x }, { y: inLine.y2, x: inLine.x2 }, 'purple')
|
||||||
}else{
|
} else {
|
||||||
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x } , 'purple')
|
getAddLine({ y: inLine.y1, x: inLine.x1 }, { y: newPEnd.y, x: newPEnd.x }, 'purple')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1541,15 +1522,17 @@ const createInnerLinesFromSkeleton = (roofId, canvas, skeleton, textMode) => {
|
|||||||
|
|
||||||
getAddLine(newPStart, newPEnd, 'red')
|
getAddLine(newPStart, newPEnd, 'red')
|
||||||
//canvas.remove(roofLine)
|
//canvas.remove(roofLine)
|
||||||
}else{
|
} else {
|
||||||
getAddLine(roofLine.startPoint, roofLine.endPoint, )
|
getAddLine(roofLine.startPoint, roofLine.endPoint,)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
});
|
});
|
||||||
// }
|
}
|
||||||
|
getMoveUpDownLine()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (findPoints.length > 0) {
|
if (findPoints.length > 0) {
|
||||||
// 모든 점에 대해 라인 업데이트를 누적
|
// 모든 점에 대해 라인 업데이트를 누적
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user