|
@@ -541,33 +541,61 @@ export default {
|
|
|
},
|
|
|
// 根据图从未关联平面图的业务空间中选择--按钮返回关联信号
|
|
|
createFromUnrelated(zoneObj) {
|
|
|
+ // zoneObj.Outline = [];
|
|
|
+ // zoneObj.Height = 0;
|
|
|
+ // 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].map(t => {
|
|
|
+ // let temp = t.map(item => {
|
|
|
+ // return {
|
|
|
+ // X: 1 * item.x.toFixed(2),
|
|
|
+ // Y: -item.y.toFixed(2),
|
|
|
+ // Z: 0
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // zoneObj.Outline.push([temp]);
|
|
|
+ // })
|
|
|
+ // let curISP = this.sourceIdToISP[key];
|
|
|
+ // curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
+ // zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 改回之前逻辑
|
|
|
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];
|
|
|
+ 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) {
|
|
|
- // 如果有划分,求交集
|
|
|
- // 格式为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].map(t => {
|
|
|
+ zoneObj.Outline = [];
|
|
|
+ let arr = this.scene.getIntersect();
|
|
|
+ arr.map(t => {
|
|
|
let temp = t.map(item => {
|
|
|
return {
|
|
|
- X: 1 * item.x.toFixed(2),
|
|
|
- Y: -item.y.toFixed(2),
|
|
|
+ X: 1 * item.x,
|
|
|
+ Y: -item.y,
|
|
|
Z: 0
|
|
|
}
|
|
|
})
|
|
|
zoneObj.Outline.push([temp]);
|
|
|
})
|
|
|
- let curISP = this.sourceIdToISP[key];
|
|
|
- curISP && IspaceIdList.push(curISP.RoomID);
|
|
|
- zoneObj.Height = zoneObj.Height == 0 ? curISP.Height : zoneObj.Height > curISP.Height ? curISP.Height : zoneObj.Height;
|
|
|
}
|
|
|
if (!zoneObj.Outline.length) {
|
|
|
zoneObj.Outline = null;
|
|
@@ -656,40 +684,80 @@ export default {
|
|
|
},
|
|
|
// 根据图批量创建所选业务空间
|
|
|
groupCreateZone() {
|
|
|
+ // let arr = this.scene.getSelectedSpaces();
|
|
|
+ // let createSpaces = [], 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) {
|
|
|
+ // let zoneObj = { Outline: [], Height: 0 }
|
|
|
+ // spaces[key].map(t => {
|
|
|
+ // let temp = t.map(item => {
|
|
|
+ // return {
|
|
|
+ // X: 1 * item.x.toFixed(2),
|
|
|
+ // Y: -item.y.toFixed(2),
|
|
|
+ // Z: 0
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // zoneObj.Outline.push([temp]);
|
|
|
+ // })
|
|
|
+ // if (!zoneObj.Outline.length) {
|
|
|
+ // continue
|
|
|
+ // }
|
|
|
+ // let curISP = this.sourceIdToISP[key];
|
|
|
+ // 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);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 改回之前逻辑
|
|
|
let arr = this.scene.getSelectedSpaces();
|
|
|
- let createSpaces = [], spaces = {};
|
|
|
+ let createSpaces = [];
|
|
|
+ // 如果有划分,求交集
|
|
|
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].map(t => {
|
|
|
- let temp = t.map(item => {
|
|
|
- return {
|
|
|
- X: 1 * item.x.toFixed(2),
|
|
|
- Y: -item.y.toFixed(2),
|
|
|
- Z: 0
|
|
|
- }
|
|
|
+ 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;
|
|
|
})
|
|
|
- zoneObj.Outline.push([temp]);
|
|
|
- })
|
|
|
- if (!zoneObj.Outline.length) {
|
|
|
- continue
|
|
|
}
|
|
|
- let curISP = this.sourceIdToISP[key];
|
|
|
- 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);
|
|
|
+ createSpaces = arr.map(t => {
|
|
|
+ return {
|
|
|
+ IspaceId: this.BIMIDToSID[t.data.SourceId],
|
|
|
+ RoomLocalName: this.BIMIDToSIName[t.data.SourceId],
|
|
|
+ Outline: outlines[t.data.SourceId],
|
|
|
+ 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.Outline && item.Outline.length)
|
|
|
+ } else {
|
|
|
+ createSpaces = arr.map(t => {
|
|
|
+ return {
|
|
|
+ IspaceId: this.BIMIDToSID[t.data.SourceId],
|
|
|
+ RoomLocalName: this.BIMIDToSIName[t.data.SourceId],
|
|
|
+ Outline: [t.data.OutLine],
|
|
|
+ BuildingId: this.buildFloor[0],
|
|
|
+ FloorId: this.buildFloor[1],
|
|
|
+ Height: t.data.Height > 100 ? (t.data.Height / 1000).toFixed(2) : t.data.Height || 0
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
if (createSpaces.length) {
|
|
|
this.canvasLoading = true;
|