|
@@ -184,6 +184,7 @@ export default {
|
|
OtherValue: '',
|
|
OtherValue: '',
|
|
showOtherFlag: false, //是否显示其他分区类型添加
|
|
showOtherFlag: false, //是否显示其他分区类型添加
|
|
buildFloorName: "", //建筑楼层名称
|
|
buildFloorName: "", //建筑楼层名称
|
|
|
|
+ spaceHeight: 0,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -447,6 +448,9 @@ export default {
|
|
|
|
|
|
} else {
|
|
} else {
|
|
if (item instanceof SpaceItem && item.selectable) {
|
|
if (item instanceof SpaceItem && item.selectable) {
|
|
|
|
+ if (this.spaceHeight == 0) {
|
|
|
|
+ this.spaceHeight = item.data.Height > 1000 ? item.data.Height / 1000 : item.data.Height
|
|
|
|
+ }
|
|
if (this.type == 2) {
|
|
if (this.type == 2) {
|
|
this.scene.clearZoneSelection();
|
|
this.scene.clearZoneSelection();
|
|
}
|
|
}
|
|
@@ -541,7 +545,7 @@ export default {
|
|
Outline: [t.Outline],
|
|
Outline: [t.Outline],
|
|
BuildingId: this.buildFloor[0],
|
|
BuildingId: this.buildFloor[0],
|
|
FloorId: this.buildFloor[1],
|
|
FloorId: this.buildFloor[1],
|
|
- Height: t.Height || 0
|
|
|
|
|
|
+ Height: this.spaceHeight
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
return undefined
|
|
return undefined
|
|
@@ -591,62 +595,64 @@ export default {
|
|
createRoom(val) {
|
|
createRoom(val) {
|
|
const zoneObj = { Outline: [], Height: 0 }, IspaceIdList = [];
|
|
const zoneObj = { Outline: [], Height: 0 }, IspaceIdList = [];
|
|
let spaces = {};
|
|
let spaces = {};
|
|
- if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
- // 如果有划分,求交集
|
|
|
|
- // 格式为Poly(先与业务空间求差集)
|
|
|
|
- const obj = this.scene.getZoneDifference(true);
|
|
|
|
- // 差集与楼层平面图或用户划分区域求交集
|
|
|
|
- spaces = this.scene.getPloyIntersect(obj)
|
|
|
|
- } else {
|
|
|
|
- // 格式为SPoint[]
|
|
|
|
- spaces = this.scene.getZoneDifference();
|
|
|
|
- }
|
|
|
|
- for (let key in spaces) {
|
|
|
|
- spaces[key] = spaces[key].map(t => {
|
|
|
|
- let temp = t.map(item => {
|
|
|
|
- return {
|
|
|
|
- X: 1 * item.x.toFixed(2),
|
|
|
|
- Y: -item.y.toFixed(2),
|
|
|
|
- Z: 0
|
|
|
|
- }
|
|
|
|
|
|
+ try {
|
|
|
|
+ if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
+ // 如果有划分,求交集
|
|
|
|
+ // 格式为Poly(先与业务空间求差集)
|
|
|
|
+ const obj = this.scene.getZoneDifference(true);
|
|
|
|
+ // 差集与楼层平面图或用户划分区域求交集
|
|
|
|
+ spaces = this.scene.getPloyIntersect(obj)
|
|
|
|
+ } else {
|
|
|
|
+ // 格式为SPoint[]
|
|
|
|
+ spaces = this.scene.getZoneDifference();
|
|
|
|
+ }
|
|
|
|
+ for (let key in spaces) {
|
|
|
|
+ spaces[key] = spaces[key].map(t => {
|
|
|
|
+ let temp = t.map(item => {
|
|
|
|
+ return {
|
|
|
|
+ X: 1 * item.x.toFixed(2),
|
|
|
|
+ Y: -item.y.toFixed(2),
|
|
|
|
+ Z: 0
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ return temp;
|
|
})
|
|
})
|
|
- return temp;
|
|
|
|
|
|
+ let newarr = this.makeMaxAreaFirst(spaces[key])
|
|
|
|
+ zoneObj.Outline.push(newarr);
|
|
|
|
+ let curISP = this.sourceIdToISP[key];
|
|
|
|
+ if (curISP) {
|
|
|
|
+ curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
|
+ zoneObj.Height = this.spaceHeight;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (err) {
|
|
|
|
+ console.log(err)
|
|
|
|
+ let selectSpaces = this.scene.getSelectedSpaces();
|
|
|
|
+ selectSpaces.map(t => {
|
|
|
|
+ zoneObj.Outline.push(t.data.OutLine);
|
|
|
|
+ let key = t.data.SourceId;
|
|
|
|
+ let curISP = this.sourceIdToISP[key];
|
|
|
|
+ if (curISP) {
|
|
|
|
+ IspaceIdList.push(curISP.RoomID);
|
|
|
|
+ zoneObj.Height = this.spaceHeight;
|
|
|
|
+ }
|
|
})
|
|
})
|
|
- let newarr = this.makeMaxAreaFirst(spaces[key])
|
|
|
|
- zoneObj.Outline.push(newarr);
|
|
|
|
- let curISP = this.sourceIdToISP[key];
|
|
|
|
- if (curISP) {
|
|
|
|
- curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
|
- zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
|
|
|
+ // 如果有划分,求交集
|
|
|
|
+ if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
+ zoneObj.Outline = [];
|
|
|
|
+ let arr = this.scene.getIntersect();
|
|
|
|
+ arr.map(t => {
|
|
|
|
+ let temp = t.map(item => {
|
|
|
|
+ return {
|
|
|
|
+ X: 1 * item.x,
|
|
|
|
+ Y: -item.y,
|
|
|
|
+ Z: 0
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ zoneObj.Outline.push([temp]);
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 数据计算导致浏览器奔溃,临时注释(测试计算未崩溃改好)
|
|
|
|
- // let zoneObj = { Outline: [], Height: 0 }, IspaceIdList = [];
|
|
|
|
- // let selectSpaces = this.scene.getSelectedSpaces();
|
|
|
|
- // selectSpaces.map(t => {
|
|
|
|
- // zoneObj.Outline.push(t.data.OutLine);
|
|
|
|
- // let key = t.data.SourceId;
|
|
|
|
- // let curISP = this.sourceIdToISP[key];
|
|
|
|
- // if (curISP) {
|
|
|
|
- // IspaceIdList.push(curISP.RoomID);
|
|
|
|
- // zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
- // // 如果有划分,求交集
|
|
|
|
- // if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
- // zoneObj.Outline = [];
|
|
|
|
- // let arr = this.scene.getIntersect();
|
|
|
|
- // arr.map(t => {
|
|
|
|
- // let temp = t.map(item => {
|
|
|
|
- // return {
|
|
|
|
- // X: 1 * item.x,
|
|
|
|
- // Y: -item.y,
|
|
|
|
- // Z: 0
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
- // zoneObj.Outline.push([temp]);
|
|
|
|
- // })
|
|
|
|
- // }
|
|
|
|
// 至此
|
|
// 至此
|
|
if (!zoneObj.Outline.length) {
|
|
if (!zoneObj.Outline.length) {
|
|
zoneObj.Outline = null;
|
|
zoneObj.Outline = null;
|
|
@@ -661,65 +667,64 @@ export default {
|
|
zoneObj.Outline = [];
|
|
zoneObj.Outline = [];
|
|
zoneObj.Height = 0;
|
|
zoneObj.Height = 0;
|
|
let spaces = {}, IspaceIdList = [];
|
|
let spaces = {}, IspaceIdList = [];
|
|
- if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
- // 如果有划分,求交集
|
|
|
|
- // 格式为Poly(先与业务空间求差集)
|
|
|
|
- const obj = this.scene.getZoneDifference(true);
|
|
|
|
- // 差集与楼层平面图或用户划分区域求交集
|
|
|
|
- spaces = this.scene.getPloyIntersect(obj)
|
|
|
|
- } else {
|
|
|
|
- // 格式为SPoint[]
|
|
|
|
- spaces = this.scene.getZoneDifference();
|
|
|
|
- }
|
|
|
|
- for (let key in spaces) {
|
|
|
|
- spaces[key] = spaces[key].map(t => {
|
|
|
|
- let temp = t.map(item => {
|
|
|
|
- return {
|
|
|
|
- X: 1 * item.x.toFixed(2),
|
|
|
|
- Y: -item.y.toFixed(2),
|
|
|
|
- Z: 0
|
|
|
|
- }
|
|
|
|
|
|
+ try {
|
|
|
|
+ if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
+ // 如果有划分,求交集
|
|
|
|
+ // 格式为Poly(先与业务空间求差集)
|
|
|
|
+ const obj = this.scene.getZoneDifference(true);
|
|
|
|
+ // 差集与楼层平面图或用户划分区域求交集
|
|
|
|
+ spaces = this.scene.getPloyIntersect(obj)
|
|
|
|
+ } else {
|
|
|
|
+ // 格式为SPoint[]
|
|
|
|
+ spaces = this.scene.getZoneDifference();
|
|
|
|
+ }
|
|
|
|
+ for (let key in spaces) {
|
|
|
|
+ spaces[key] = spaces[key].map(t => {
|
|
|
|
+ let temp = t.map(item => {
|
|
|
|
+ return {
|
|
|
|
+ X: 1 * item.x.toFixed(2),
|
|
|
|
+ Y: -item.y.toFixed(2),
|
|
|
|
+ Z: 0
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ return temp;
|
|
})
|
|
})
|
|
- return temp;
|
|
|
|
|
|
+ let newarr = this.makeMaxAreaFirst(spaces[key])
|
|
|
|
+ zoneObj.Outline.push(newarr);
|
|
|
|
+ let curISP = this.sourceIdToISP[key];
|
|
|
|
+ if (curISP) {
|
|
|
|
+ curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
|
+ zoneObj.Height = this.spaceHeight;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (err) {
|
|
|
|
+ console.log(err);
|
|
|
|
+ let selectSpaces = this.scene.getSelectedSpaces();
|
|
|
|
+ selectSpaces.map(t => {
|
|
|
|
+ zoneObj.Outline.push(t.data.OutLine);
|
|
|
|
+ let key = t.data.SourceId;
|
|
|
|
+ let curISP = this.sourceIdToISP[key];
|
|
|
|
+ if (curISP) {
|
|
|
|
+ curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
|
+ zoneObj.Height = this.spaceHeight;
|
|
|
|
+ }
|
|
})
|
|
})
|
|
- let newarr = this.makeMaxAreaFirst(spaces[key])
|
|
|
|
- zoneObj.Outline.push(newarr);
|
|
|
|
- let curISP = this.sourceIdToISP[key];
|
|
|
|
- if (curISP) {
|
|
|
|
- curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
|
- zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
|
|
|
+ // 如果有划分,求交集
|
|
|
|
+ if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
+ zoneObj.Outline = [];
|
|
|
|
+ let arr = this.scene.getIntersect();
|
|
|
|
+ arr.map(t => {
|
|
|
|
+ let temp = t.map(item => {
|
|
|
|
+ return {
|
|
|
|
+ X: 1 * item.x,
|
|
|
|
+ Y: -item.y,
|
|
|
|
+ Z: 0
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ zoneObj.Outline.push([temp]);
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 改回之前逻辑
|
|
|
|
- // zoneObj.Outline = [];
|
|
|
|
- // zoneObj.Height = 0;
|
|
|
|
- // let spaces = {}, IspaceIdList = [];
|
|
|
|
- // let selectSpaces = this.scene.getSelectedSpaces();
|
|
|
|
- // selectSpaces.map(t => {
|
|
|
|
- // zoneObj.Outline.push(t.data.OutLine);
|
|
|
|
- // let key = t.data.SourceId;
|
|
|
|
- // let curISP = this.sourceIdToISP[key];
|
|
|
|
- // if (curISP) {
|
|
|
|
- // curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
|
- // zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
- // // 如果有划分,求交集
|
|
|
|
- // if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
- // zoneObj.Outline = [];
|
|
|
|
- // let arr = this.scene.getIntersect();
|
|
|
|
- // arr.map(t => {
|
|
|
|
- // let temp = t.map(item => {
|
|
|
|
- // return {
|
|
|
|
- // X: 1 * item.x,
|
|
|
|
- // Y: -item.y,
|
|
|
|
- // Z: 0
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
- // zoneObj.Outline.push([temp]);
|
|
|
|
- // })
|
|
|
|
- // }
|
|
|
|
if (!zoneObj.Outline.length) {
|
|
if (!zoneObj.Outline.length) {
|
|
zoneObj.Outline = null;
|
|
zoneObj.Outline = null;
|
|
}
|
|
}
|
|
@@ -788,9 +793,11 @@ export default {
|
|
if (this.BIMIDToSID[t.data.SourceId]) {
|
|
if (this.BIMIDToSID[t.data.SourceId]) {
|
|
IspaceIdList.push(this.BIMIDToSID[t.data.SourceId]);
|
|
IspaceIdList.push(this.BIMIDToSID[t.data.SourceId]);
|
|
}
|
|
}
|
|
- if (t.Height && (zoneObj.Height == 0 || t.Height < zoneObj.Height)) {
|
|
|
|
- zoneObj.Height = t.Height > 100 ? (t.Height / 1000).toFixed(2) : t.Height;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ // if (t.Height && (zoneObj.Height == 0 || t.Height < zoneObj.Height)) {
|
|
|
|
+ // zoneObj.Height = t.Height > 100 ? (t.Height / 1000).toFixed(2) : t.Height;
|
|
|
|
+ zoneObj.Height = this.spaceHeight
|
|
|
|
+ // }
|
|
})
|
|
})
|
|
// 类空间
|
|
// 类空间
|
|
selectLikeSpace.map(t => {
|
|
selectLikeSpace.map(t => {
|
|
@@ -832,133 +839,135 @@ export default {
|
|
groupCreateZone() {
|
|
groupCreateZone() {
|
|
let arr = this.scene.getSelectedSpaces();
|
|
let arr = this.scene.getSelectedSpaces();
|
|
let createSpaces = [], spaces = {};
|
|
let createSpaces = [], spaces = {};
|
|
- if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
|
|
+ try {
|
|
|
|
+ if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
+ // 如果有划分,求交集
|
|
|
|
+ // 格式为Poly(先与业务空间求差集)
|
|
|
|
+ const obj = this.scene.getZoneDifference(true);
|
|
|
|
+ // 差集与楼层平面图或用户划分区域求交集
|
|
|
|
+ spaces = this.scene.getPloyIntersect(obj)
|
|
|
|
+ } else {
|
|
|
|
+ // 格式为SPoint[]
|
|
|
|
+ spaces = this.scene.getZoneDifference();
|
|
|
|
+ }
|
|
|
|
+ for (let key in spaces) {
|
|
|
|
+ let zoneObj = { Outline: [], Height: 0 }
|
|
|
|
+ spaces[key] = spaces[key].map(t => {
|
|
|
|
+ let temp = t.map(item => {
|
|
|
|
+ return {
|
|
|
|
+ X: 1 * item.x.toFixed(2),
|
|
|
|
+ Y: -item.y.toFixed(2),
|
|
|
|
+ Z: 0
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ return temp;
|
|
|
|
+ })
|
|
|
|
+ let newarr = this.makeMaxAreaFirst(spaces[key])
|
|
|
|
+ zoneObj.Outline.push(newarr);
|
|
|
|
+ if (!zoneObj.Outline.length) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ //计算面积
|
|
|
|
+ let area = 0, line = zoneObj.Outline;
|
|
|
|
+ for (let i = 0; i < line.length; i++) {
|
|
|
|
+ for (let j = 0; j < line[i].length; j++) {
|
|
|
|
+ if (j == 0) {
|
|
|
|
+ area += this.getarea(line[i][0]);
|
|
|
|
+ } else {
|
|
|
|
+ area -= this.getarea(line[i][j]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ area = (area / 1000000).toFixed(2);
|
|
|
|
+ if (area < (this.areaValue / 100)) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ //生成空间对象
|
|
|
|
+ let curISP = this.sourceIdToISP[key];
|
|
|
|
+ if (curISP) {
|
|
|
|
+ zoneObj.Height = this.spaceHeight;
|
|
|
|
+ // zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
|
+ zoneObj.IspaceId = curISP.RoomID;
|
|
|
|
+ zoneObj.RoomLocalName = curISP.RoomLocalName;
|
|
|
|
+ }
|
|
|
|
+ zoneObj.BuildingId = this.buildFloor[0];
|
|
|
|
+ zoneObj.FloorId = this.buildFloor[1];
|
|
|
|
+ createSpaces.push(zoneObj);
|
|
|
|
+ }
|
|
|
|
+ } catch (err) {
|
|
|
|
+ console.log(err)
|
|
|
|
+ let createSpaces = [];
|
|
// 如果有划分,求交集
|
|
// 如果有划分,求交集
|
|
- // 格式为Poly(先与业务空间求差集)
|
|
|
|
- const obj = this.scene.getZoneDifference(true);
|
|
|
|
- // 差集与楼层平面图或用户划分区域求交集
|
|
|
|
- spaces = this.scene.getPloyIntersect(obj)
|
|
|
|
- } else {
|
|
|
|
- // 格式为SPoint[]
|
|
|
|
- spaces = this.scene.getZoneDifference();
|
|
|
|
- }
|
|
|
|
- for (let key in spaces) {
|
|
|
|
- let zoneObj = { Outline: [], Height: 0 }
|
|
|
|
- spaces[key] = spaces[key].map(t => {
|
|
|
|
- let temp = t.map(item => {
|
|
|
|
|
|
+ if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
+ let outlines = this.scene.getIntersectInSpace();
|
|
|
|
+ for (let k in outlines) {
|
|
|
|
+ outlines[k] = outlines[k].map(t => {
|
|
|
|
+ t = t.map(item => {
|
|
|
|
+ item = item.map(j => {
|
|
|
|
+ return { X: j.x, Y: -j.y, Z: 0 }
|
|
|
|
+ })
|
|
|
|
+ return item
|
|
|
|
+ })
|
|
|
|
+ return t;
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ createSpaces = arr.map(t => {
|
|
|
|
+ let line = outlines[t.data.SourceId];
|
|
|
|
+ if (!line || !line.length) {
|
|
|
|
+ return undefined
|
|
|
|
+ } else {
|
|
|
|
+ let area = 0;
|
|
|
|
+ for (let i = 0; i < line.length; i++) {
|
|
|
|
+ for (let j = 0; j < line[i].length; j++) {
|
|
|
|
+ if (j == 0) {
|
|
|
|
+ area += this.getarea(line[i][0]);
|
|
|
|
+ } else {
|
|
|
|
+ area -= this.getarea(line[i][j]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ area = (area / 1000000).toFixed(2);
|
|
|
|
+ if (area < (this.areaValue / 100)) {
|
|
|
|
+ return undefined;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return {
|
|
return {
|
|
- X: 1 * item.x.toFixed(2),
|
|
|
|
- Y: -item.y.toFixed(2),
|
|
|
|
- Z: 0
|
|
|
|
|
|
+ IspaceId: this.BIMIDToSID[t.data.SourceId],
|
|
|
|
+ RoomLocalName: this.BIMIDToSIName[t.data.SourceId],
|
|
|
|
+ Outline: line,
|
|
|
|
+ BuildingId: this.buildFloor[0],
|
|
|
|
+ FloorId: this.buildFloor[1],
|
|
|
|
+ Height: this.spaceHeight
|
|
}
|
|
}
|
|
- })
|
|
|
|
- return temp;
|
|
|
|
- })
|
|
|
|
- let newarr = this.makeMaxAreaFirst(spaces[key])
|
|
|
|
- zoneObj.Outline.push(newarr);
|
|
|
|
- if (!zoneObj.Outline.length) {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- //计算面积
|
|
|
|
- let area = 0, line = zoneObj.Outline;
|
|
|
|
- for (let i = 0; i < line.length; i++) {
|
|
|
|
- for (let j = 0; j < line[i].length; j++) {
|
|
|
|
- if (j == 0) {
|
|
|
|
- area += this.getarea(line[i][0]);
|
|
|
|
|
|
+ }).filter(item => item)
|
|
|
|
+ } else {
|
|
|
|
+ createSpaces = arr.map(t => {
|
|
|
|
+ let line = t.data.OutLine;
|
|
|
|
+ if (!line || !line.length) {
|
|
|
|
+ return undefined
|
|
} else {
|
|
} else {
|
|
- area -= this.getarea(line[i][j]);
|
|
|
|
|
|
+ let area = this.getarea(line[0]);
|
|
|
|
+ if (line.length > 1) {
|
|
|
|
+ for (let i = 1; i < line.length; i++) {
|
|
|
|
+ area -= this.getarea(line[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ area = (area / 1000000).toFixed(2);
|
|
|
|
+ if (area < (this.areaValue / 100)) {
|
|
|
|
+ return undefined;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- }
|
|
|
|
- area = (area / 1000000).toFixed(2);
|
|
|
|
- if (area < (this.areaValue / 100)) {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- //生成空间对象
|
|
|
|
- let curISP = this.sourceIdToISP[key];
|
|
|
|
- if (curISP) {
|
|
|
|
- zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
|
- zoneObj.IspaceId = curISP.RoomID;
|
|
|
|
- zoneObj.RoomLocalName = curISP.RoomLocalName;
|
|
|
|
|
|
+ return {
|
|
|
|
+ IspaceId: this.BIMIDToSID[t.data.SourceId],
|
|
|
|
+ RoomLocalName: this.BIMIDToSIName[t.data.SourceId],
|
|
|
|
+ Outline: [line],
|
|
|
|
+ BuildingId: this.buildFloor[0],
|
|
|
|
+ FloorId: this.buildFloor[1],
|
|
|
|
+ Height: this.spaceHeight
|
|
|
|
+ }
|
|
|
|
+ }).filter(item => item);
|
|
}
|
|
}
|
|
- zoneObj.BuildingId = this.buildFloor[0];
|
|
|
|
- zoneObj.FloorId = this.buildFloor[1];
|
|
|
|
- createSpaces.push(zoneObj);
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 改回之前逻辑
|
|
|
|
- // let arr = this.scene.getSelectedSpaces();
|
|
|
|
- // let createSpaces = [];
|
|
|
|
- // // 如果有划分,求交集
|
|
|
|
- // if (this.scene.cutItem || this.scene.sceneMark) {
|
|
|
|
- // let outlines = this.scene.getIntersectInSpace();
|
|
|
|
- // for (let k in outlines) {
|
|
|
|
- // outlines[k] = outlines[k].map(t => {
|
|
|
|
- // t = t.map(item => {
|
|
|
|
- // item = item.map(j => {
|
|
|
|
- // return { X: j.x, Y: -j.y, Z: 0 }
|
|
|
|
- // })
|
|
|
|
- // return item
|
|
|
|
- // })
|
|
|
|
- // return t;
|
|
|
|
- // })
|
|
|
|
- // }
|
|
|
|
- // createSpaces = arr.map(t => {
|
|
|
|
- // let line = outlines[t.data.SourceId];
|
|
|
|
- // if (!line || !line.length) {
|
|
|
|
- // return undefined
|
|
|
|
- // } else {
|
|
|
|
- // let area = 0;
|
|
|
|
- // for (let i = 0; i < line.length; i++) {
|
|
|
|
- // for (let j = 0; j < line[i].length; j++) {
|
|
|
|
- // if (j == 0) {
|
|
|
|
- // area += this.getarea(line[i][0]);
|
|
|
|
- // } else {
|
|
|
|
- // area -= this.getarea(line[i][j]);
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // area = (area / 1000000).toFixed(2);
|
|
|
|
- // if (area < (this.areaValue / 100)) {
|
|
|
|
- // return undefined;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // return {
|
|
|
|
- // IspaceId: this.BIMIDToSID[t.data.SourceId],
|
|
|
|
- // RoomLocalName: this.BIMIDToSIName[t.data.SourceId],
|
|
|
|
- // Outline: line,
|
|
|
|
- // BuildingId: this.buildFloor[0],
|
|
|
|
- // FloorId: this.buildFloor[1],
|
|
|
|
- // Height: t.data.Height > 100 ? (t.data.Height / 1000).toFixed(2) : t.data.Height || 0
|
|
|
|
- // }
|
|
|
|
- // }).filter(item => item)
|
|
|
|
- // } else {
|
|
|
|
- // createSpaces = arr.map(t => {
|
|
|
|
- // let line = t.data.OutLine;
|
|
|
|
- // if (!line || !line.length) {
|
|
|
|
- // return undefined
|
|
|
|
- // } else {
|
|
|
|
- // let area = this.getarea(line[0]);
|
|
|
|
- // if (line.length > 1) {
|
|
|
|
- // for (let i = 1; i < line.length; i++) {
|
|
|
|
- // area -= this.getarea(line[i]);
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // area = (area / 1000000).toFixed(2);
|
|
|
|
- // if (area < (this.areaValue / 100)) {
|
|
|
|
- // return undefined;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // return {
|
|
|
|
- // IspaceId: this.BIMIDToSID[t.data.SourceId],
|
|
|
|
- // RoomLocalName: this.BIMIDToSIName[t.data.SourceId],
|
|
|
|
- // Outline: [line],
|
|
|
|
- // BuildingId: this.buildFloor[0],
|
|
|
|
- // FloorId: this.buildFloor[1],
|
|
|
|
- // Height: t.data.Height > 100 ? (t.data.Height / 1000).toFixed(2) : t.data.Height || 0
|
|
|
|
- // }
|
|
|
|
- // }).filter(item => item);
|
|
|
|
- // }
|
|
|
|
if (createSpaces.length) {
|
|
if (createSpaces.length) {
|
|
this.canvasLoading = true;
|
|
this.canvasLoading = true;
|
|
this.groupCreateBSP(createSpaces)
|
|
this.groupCreateBSP(createSpaces)
|
|
@@ -1201,6 +1210,10 @@ export default {
|
|
},
|
|
},
|
|
// 数组为顺时针or逆时针 顺时针非负 逆时针为 负
|
|
// 数组为顺时针or逆时针 顺时针非负 逆时针为 负
|
|
clockDir(pointList) {
|
|
clockDir(pointList) {
|
|
|
|
+ let l = pointList.length - 1
|
|
|
|
+ if (pointList[0].x == pointList[l].x && pointList[0].y == pointList[l].y) {
|
|
|
|
+ pointList.splice(l, 1);
|
|
|
|
+ }
|
|
if (pointList.length < 3) {
|
|
if (pointList.length < 3) {
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|