陈鹏飞 3 years ago
parent
commit
b77b554a0a
  1. 73
      src/app/babylon/controller/config-manager.ts
  2. 135
      src/app/babylon/controller/data-manager.ts
  3. 2
      src/app/babylon/controller/status/building-status.ts
  4. 2
      src/app/babylon/controller/status/indoor-status.ts
  5. 45
      src/app/babylon/model/data/institution/facility/all-facility-data.ts
  6. 31
      src/app/babylon/model/data/institution/facility/property-data/outdoor/property-data-aqck.ts
  7. 26
      src/app/babylon/model/data/institution/facility/property-data/outdoor/property-data-gd.ts
  8. 6
      src/app/babylon/model/data/institution/facility/property-data/outdoor/property-data-q.ts
  9. 170
      src/app/babylon/model/data/model-data/model-data-facility.ts
  10. 8
      src/app/babylon/model/info/model/facilityinfo-tool/facility-area.ts
  11. 267
      src/app/babylon/model/info/model/facilityinfo-tool/facility-gd.ts
  12. 23
      src/app/babylon/model/info/model/model-info-facility.ts
  13. 87
      src/app/babylon/view/building-window/building-window.ts
  14. 14
      src/app/babylon/view/facility-window/facility-window.ts
  15. 71
      src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts
  16. 14
      src/app/babylon/view/mark-window/mark-window.ts
  17. 0
      src/assets/images/facility/out/DWBZ.png
  18. 0
      src/assets/images/facility/out/PL.png
  19. 0
      src/assets/images/facility/out/QY.png
  20. 0
      src/assets/images/facility/out/TPBZ.png

73
src/app/babylon/controller/config-manager.ts

@ -16,6 +16,22 @@ export class ConfigManager {
static readonly c_time_longPress = 500;//长按时间(毫秒)
/**
* (assets子目录开始)
* @param facilityPosType
* @param type
*/
static getResPath_facility(facilityPosType: FacilityPosType, type: FacilityType): string {
let result = "mesh/facilities/";
// result += facilityPosType.toString() + "/";
result += (type).toLocaleLowerCase();
result += "/";
return result;
}
/**
* icon的url
* @param type
@ -23,7 +39,7 @@ export class ConfigManager {
*/
static getFacilityIconUrl(type: FacilityType, pos: FacilityPosType): string {
let result = ConfigManager.c_resPath_assetsRoot + "images/facility/" + type + ".png";
let result = ConfigManager.c_resPath_assetsRoot + "images/facility/" + pos + '/' + type + ".png";
return result;
}
@ -34,40 +50,11 @@ export class ConfigManager {
static getFacilityTypeName(type: FacilityType): string {
let result = "未知";
switch (type) {
case FacilityType.AQCK: result = "安全出口"; break;
case FacilityType.DSXHS: result = "地上消火栓"; break;
case FacilityType.DXXHS: result = "地下消火栓"; break;
case FacilityType.SZDSXHS: result = "市政地上消火栓"; break;
case FacilityType.SZDXXHS: result = "市政地下消火栓"; break;
case FacilityType.DSSBJHQ: result = "地上水泵接合器"; break;
case FacilityType.DXSBJHQ: result = "地下水泵接合器"; break;
case FacilityType.QBSBJHQ: result = "墙壁式接合器"; break;
case FacilityType.DGNSBJHQ: result = "多功能接合器"; break;
case FacilityType.GD: result = "高度"; break;
case FacilityType.PL: result = "毗邻"; break;
case FacilityType.JTQ: result = "禁停区"; break;
case FacilityType.JJQ: result = "集结区"; break;
case FacilityType.QY: result = "区域"; break;
case FacilityType.TPBZ: result = "图片标注"; break;
case FacilityType.XKS: result = "消控室"; break;
case FacilityType.BF: result = "泵房"; break;
case FacilityType.SX: result = "水箱"; break;
case FacilityType.LSXFB: result = "立式消防泵"; break;
case FacilityType.WSXFB: result = "卧式消防泵"; break;
case FacilityType.CYXFB: result = "柴油消防泵"; break;
case FacilityType.FHFQ: result = "防火分区"; break;
case FacilityType.SNXHS: result = "室内消火栓"; break;
case FacilityType.FHM: result = "防火门"; break;
case FacilityType.FHJL: result = "防火卷帘"; break;
case FacilityType.SSLT: result = "疏散楼梯"; break;
case FacilityType.XFDT: result = "消防电梯"; break;
case FacilityType.PTDT: result = "普通电梯"; break;
case FacilityType.WXY: result = "危险源"; break;
case FacilityType.ZDQY: result = "重点区域"; break;
case FacilityType.DWBZ: result = "点位标注"; break;
case FacilityType.HT: result = "货梯"; break;
case FacilityType.BNC: result = "避难层"; break;//特殊
}
return result;
}
@ -77,26 +64,14 @@ export class ConfigManager {
* @param facilityType
*/
static getPosType(facilityType: FacilityType): FacilityPosType {
let result = FacilityPosType.Indoor;
let result = FacilityPosType.In;
switch (facilityType) {
case FacilityType.AQCK:
case FacilityType.DSXHS:
case FacilityType.DXXHS:
case FacilityType.SZDXXHS:
case FacilityType.SZDSXHS:
case FacilityType.DSSBJHQ:
case FacilityType.DXSBJHQ:
case FacilityType.QBSBJHQ:
case FacilityType.DGNSBJHQ:
case FacilityType.GD:
case FacilityType.PL:
case FacilityType.JTQ:
case FacilityType.JJQ:
case FacilityType.TPBZ: result = FacilityPosType.Outdoor; break;
case FacilityType.DWBZ:
case FacilityType.ZDQY:
case FacilityType.WXY: result = FacilityPosType.Public; break;
case FacilityType.QY:
case FacilityType.TPBZ:
case FacilityType.DWBZ: result = FacilityPosType.Out; break;
}
return result;
}

135
src/app/babylon/controller/data-manager.ts

@ -1,58 +1,42 @@
import { HttpErrorResponse } from '@angular/common/http';
import { Quaternion, Vector3 } from '@babylonjs/core';
import { plainToClass } from 'class-transformer';
import {
BuildingData,
BuildingData_ChemicalPlant,
BuildingData_Environment,
BuildingData_Normal,
BuildingType,
BuildingType
} from '../model/data/institution/building/building-data';
import {
FacilityPosType,
FacilityType,
ModelData_facility,
} from '../model/data/model-data/model-data-facility';
import { AllFacilityData } from '../model/data/institution/facility/all-facility-data';
import { PropertyData_DWBZ } from '../model/data/institution/facility/property-data/indoor/property-data-dwbz';
import { PropertyData_PL } from '../model/data/institution/facility/property-data/outdoor/property-data-pl';
import { PropertyData_Q } from '../model/data/institution/facility/property-data/outdoor/property-data-q';
import { PropertyData_Base } from '../model/data/institution/facility/property-data/property-data-base';
import { PropertyData_public } from '../model/data/institution/facility/property-data/property-data-public';
import {
InstitutionData,
NormalData,
NormalData
} from '../model/data/institution/institution-data';
import { InsitutionDataSimple } from '../model/data/institution/institution-data-simple';
import { AllMarkData } from '../model/data/mark/all-mark-data';
import { AllMarkPlanData } from '../model/data/mark/mark-plan-data';
import {
BuildingPosType,
ModelData,
ModelData
} from '../model/data/model-data/model-data';
import { ModelData_building } from '../model/data/model-data/model-data-building';
import {
FacilityPosType,
FacilityType
} from '../model/data/model-data/model-data-facility';
import { ModelEditData } from '../model/data/model-data/model-edit-data';
import { TransformData } from '../model/data/transform-data';
import { BabylonTool } from '../tool/babylon-tool';
import { AllFacilityData } from '../model/data/institution/facility/all-facility-data';
import { plainToClass } from 'class-transformer';
import { TsTool } from '../tool/ts-tool';
import { ConfigManager } from './config-manager';
import { ModelEditData } from '../model/data/model-data/model-edit-data';
import { ModeManager } from './mode-manager';
import { ServeManager } from './serve-manager';
import { InsitutionDataSimple } from '../model/data/institution/institution-data-simple';
import { PropertyData_Base } from '../model/data/institution/facility/property-data/property-data-base';
import { PropertyData_AQCK } from '../model/data/institution/facility/property-data/outdoor/property-data-aqck';
import { PropertyData_public } from '../model/data/institution/facility/property-data/property-data-public';
import { TsTool } from '../tool/ts-tool';
import { PropertyData_Base_XHS } from '../model/data/institution/facility/property-data/base/property-data-base-xhs';
import { PropertyData_Base_SBJHQ } from '../model/data/institution/facility/property-data/base/property-data-base-sbjhq';
import { PropertyData_PL } from '../model/data/institution/facility/property-data/outdoor/property-data-pl';
import { PropertyData_Base_IMG } from '../model/data/institution/facility/property-data/base/property-data-base-img';
import { PropertyData_Base_XFB } from '../model/data/institution/facility/property-data/base/property-data-base-xfb';
import { PropertyData_FHFQ } from '../model/data/institution/facility/property-data/indoor/property-data-fhfq';
import { PropertyData_SSLT } from '../model/data/institution/facility/property-data/indoor/property-data-sslt';
import { PropertyData_XFDT } from '../model/data/institution/facility/property-data/indoor/property-data-xfdt';
import { PropertyData_ZDQY } from '../model/data/institution/facility/property-data/indoor/property-data-zdqy';
import { PropertyData_DWBZ } from '../model/data/institution/facility/property-data/indoor/property-data-dwbz';
import { PropertyData_GD } from '../model/data/institution/facility/property-data/outdoor/property-data-gd';
import { ModeManager, ModeType } from './mode-manager';
import { AllMarkData } from '../model/data/mark/all-mark-data';
import { AllMarkPlanData } from '../model/data/mark/mark-plan-data';
import { HttpErrorResponse } from '@angular/common/http';
import { PropertyData_Q } from '../model/data/institution/facility/property-data/outdoor/property-data-q';
class Test {
id: string;
}
//数据管理器
export class DataManager {
@ -313,35 +297,18 @@ export class DataManager {
return result;
}
//获取设备资源完整路径
static getResPath_facility(facilityPosType: FacilityPosType, type: FacilityType): string {
let result = "mesh/facilities/";
// //获取设备资源完整路径
// static getResPath_facility(facilityPosType: FacilityPosType, type: FacilityType): string {
// let result = "mesh/facilities/";
// result += facilityPosType.toString() + "/";
// result += facilityPosType.toString() + "/";
result += DataManager.getResName_facility(type).toLocaleLowerCase();
result += "/";
return result;
}
// result += (type).toLocaleLowerCase();
// result += "/";
// return result;
// }
//获取设备的资源名(有些是公用的)
static getResName_facility(type: FacilityType): string {
let result = type.toString();
switch (type) {
case FacilityType.XKS:
case FacilityType.BF:
case FacilityType.SX:
case FacilityType.FHM:
case FacilityType.FHJL:
case FacilityType.SSLT:
case FacilityType.XFDT:
case FacilityType.PTDT:
case FacilityType.HT:
case FacilityType.WXY: result = "Location"; break;
}
return result;
}
//初始化设备信息
static initDebugData_facility() {
@ -456,31 +423,10 @@ export class DataManager {
static createPropertyData(key: string, facilityType: FacilityType): PropertyData_Base {
let result: PropertyData_Base = null;
switch (facilityType) {
case FacilityType.AQCK: result = new PropertyData_AQCK(key, "", false, "安全出口", ""); break; //安全出口
case FacilityType.DSXHS:
case FacilityType.DXXHS:
case FacilityType.SZDSXHS:
case FacilityType.SZDXXHS: result = new PropertyData_Base_XHS(key, "", false, "", "", "", facilityType); break;
case FacilityType.DSSBJHQ:
case FacilityType.DXSBJHQ:
case FacilityType.QBSBJHQ:
case FacilityType.DGNSBJHQ: result = new PropertyData_Base_SBJHQ(key, "", "", "", "", facilityType); break;
case FacilityType.GD: result = new PropertyData_GD(key, "-"); break;
case FacilityType.PL: result = new PropertyData_PL(key, 0, "", []); break;
case FacilityType.JTQ:
case FacilityType.JJQ: result = new PropertyData_Q(key, "", "", "", null, facilityType); break;
case FacilityType.QY: result = new PropertyData_Q(key, "", "", "", null, facilityType); break;
case FacilityType.TPBZ:
case FacilityType.XKS:
case FacilityType.BF:
case FacilityType.SX: result = new PropertyData_Base_IMG(key, "", "", "", facilityType); break;
case FacilityType.LSXFB:
case FacilityType.WSXFB:
case FacilityType.CYXFB: result = new PropertyData_Base_XFB(key, "", "", "", "", "", "", facilityType); break;
case FacilityType.FHFQ: result = new PropertyData_FHFQ(key, "", ""); break;
case FacilityType.SSLT: result = new PropertyData_SSLT(key, "", "", ""); break;
case FacilityType.XFDT: result = new PropertyData_XFDT(key, "", "", ""); break;
case FacilityType.WXY: result = new PropertyData_Base_IMG(key, "", "", "", facilityType); break;
case FacilityType.ZDQY: result = new PropertyData_ZDQY(key, "", "", "", "", "", []); break;
case FacilityType.DWBZ: result = new PropertyData_DWBZ(key, "", ""); break;
//其他在表格中显示无
}
@ -491,25 +437,6 @@ export class DataManager {
return result;
}
/**
*
* @param name
*/
static createMarkPlane(name: string) {
if (DataManager.allMarkPlanData == null) {
console.error("当前单位没有标绘方案,无法新建");
return;
}
let index = 0;
}

2
src/app/babylon/controller/status/building-status.ts

@ -95,7 +95,7 @@ export class BuildingStatus extends StatusBase {
}
}
SceneManager.s_facilityWindow.updateAllFacilities(FacilityPosType.Outdoor);
SceneManager.s_facilityWindow.updateAllFacilities(FacilityPosType.Out);
let instance = this;
this.onChangeFacilityObserver = EventManager.addListener<Event_ChangeFacility>(Event_ChangeFacility, ((eventInfo) => {

2
src/app/babylon/controller/status/indoor-status.ts

@ -51,7 +51,7 @@ export class IndoorStatus extends StatusBase {
GizmoTool.onPickMeshInfoObservable.notifyObservers(null);//取消之前的选中
SceneManager.s_facilityInfoInSceneWindow.clearFacilityInfoUIItemes();//先清空
SceneManager.s_facilityWindow.updateAllFacilities(FacilityPosType.Indoor);
SceneManager.s_facilityWindow.updateAllFacilities(FacilityPosType.In);
SceneManager.Instance.sunLight.intensity = 1;
}
//退出状态

45
src/app/babylon/model/data/institution/facility/all-facility-data.ts

@ -17,37 +17,10 @@ export class AllFacilityData {
static CreateAllFacilityData(): AllFacilityData {
let result = new AllFacilityData();
// AllFacilityData.newFacilityData(FacilityType.AQCK, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.DSXHS, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.DXXHS, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.SZDSXHS, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.SZDXXHS, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.DSSBJHQ, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.DXSBJHQ, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.QBSBJHQ, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.DGNSBJHQ, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.GD, FacilityPosType.Outdoor, result, false);
AllFacilityData.newFacilityData(FacilityType.PL, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.JTQ, FacilityPosType.Outdoor, result, false);
AllFacilityData.newFacilityData(FacilityType.JJQ, FacilityPosType.Outdoor, result, false);
AllFacilityData.newFacilityData(FacilityType.TPBZ, FacilityPosType.Outdoor, result, true);
AllFacilityData.newFacilityData(FacilityType.DWBZ, FacilityPosType.Outdoor, result);
// AllFacilityData.newFacilityData(FacilityType.XKS, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.BF, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.SX, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.LSXFB, FacilityPosType.Indoor, result);
// AllFacilityData.newFacilityData(FacilityType.WSXFB, FacilityPosType.Indoor, result);
// AllFacilityData.newFacilityData(FacilityType.CYXFB, FacilityPosType.Indoor, result);
// AllFacilityData.newFacilityData(FacilityType.FHFQ, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.SNXHS, FacilityPosType.Indoor, result);
// AllFacilityData.newFacilityData(FacilityType.FHM, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.FHJL, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.SSLT, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.XFDT, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.PTDT, FacilityPosType.Indoor, result, false);
// AllFacilityData.newFacilityData(FacilityType.HT, FacilityPosType.Indoor, result, false);
/// AllFacilityData.newFacilityData(FacilityType.WXY, FacilityPosType.Public, result);
// AllFacilityData.newFacilityData(FacilityType.ZDQY, FacilityPosType.Public, result);
AllFacilityData.newFacilityData(FacilityType.PL, FacilityPosType.Out, result);
AllFacilityData.newFacilityData(FacilityType.QY, FacilityPosType.Out, result, false);
AllFacilityData.newFacilityData(FacilityType.TPBZ, FacilityPosType.Out, result, true);
AllFacilityData.newFacilityData(FacilityType.DWBZ, FacilityPosType.Out, result);
return result;
@ -56,16 +29,12 @@ export class AllFacilityData {
//新建设备信息
static newFacilityData(type: FacilityType, posType: FacilityPosType, allFacilityData: AllFacilityData, isModel: boolean = true): ModelData_facility {
let name = ConfigManager.getFacilityTypeName(type);
let result = new ModelData_facility(type.toString(), type, name, DataManager.getResName_facility(type) + ".gltf", new TransformData(), posType, isModel);
let result = new ModelData_facility(type.toString(), type, name, type + ".gltf", new TransformData(), posType, isModel);
switch (posType) {
case FacilityPosType.Outdoor:
case FacilityPosType.Out:
allFacilityData.outdoor.push(result);
break;
case FacilityPosType.Indoor:
allFacilityData.indoor.push(result);
break;
case FacilityPosType.Public:
allFacilityData.outdoor.push(result);
case FacilityPosType.In:
allFacilityData.indoor.push(result);
break;
}

31
src/app/babylon/model/data/institution/facility/property-data/outdoor/property-data-aqck.ts

@ -1,31 +0,0 @@
import { FacilityType } from "../../../../model-data/model-data-facility";
import { PropertyData_Base } from "../property-data-base";
/**
*
*/
export class PropertyData_AQCK extends PropertyData_Base {
img: string = "";
is360: boolean;//全景图片
name: string = "安全出口";
width: string = "";
constructor(key: string, img: string, is360: boolean, name: string, width: string) {
super(key, FacilityType.AQCK);
this.img = img;
this.is360 = is360;
this.name = name;
this.width = width;
}
clone(key: string) {
let result = new PropertyData_AQCK(key, this.img, this.is360, "安全出口", "1");
return result;
}
}

26
src/app/babylon/model/data/institution/facility/property-data/outdoor/property-data-gd.ts

@ -1,26 +0,0 @@
import { FacilityType } from "../../../../model-data/model-data-facility";
import { PropertyData_Base } from "../property-data-base";
/**
*
*/
export class PropertyData_GD extends PropertyData_Base {
info: string = "";
constructor(key: string, info: string) {
super(key, FacilityType.GD);
this.info = info;
}
clone(key: string) {
let result = new PropertyData_GD(key, this.info);
return result;
}
}

6
src/app/babylon/model/data/institution/facility/property-data/outdoor/property-data-q.ts

@ -17,10 +17,8 @@ export class PropertyData_Q extends PropertyData_Base_IMG {
this.color = color;
if (color == null) {
switch (type) {
case FacilityType.JTQ:
this.color = Color3.Yellow();
break;
case FacilityType.JJQ:
case FacilityType.QY:
this.color = Color3.Green();
break;
}

170
src/app/babylon/model/data/model-data/model-data-facility.ts

@ -5,13 +5,14 @@ import { PropertyData_Base } from "../institution/facility/property-data/propert
import { classToClass, Type } from "class-transformer";
import { Vector3 } from "@babylonjs/core";
import { DataManager } from "src/app/babylon/controller/data-manager";
import { ConfigManager } from "src/app/babylon/controller/config-manager";
//设备数据
export class ModelData_facility extends ModelData {
posType: FacilityPosType = FacilityPosType.Outdoor;//位置类型
posType: FacilityPosType = FacilityPosType.Out;//位置类型
facilityType: FacilityType = FacilityType.AQCK;//具体设备类别
facilityType: FacilityType = FacilityType.PL;//具体设备类别
@Type(() => PropertyData_Base)
propertyData: PropertyData_Base = null;//属性信息
@Type(() => Vector3)
@ -30,7 +31,7 @@ export class ModelData_facility extends ModelData {
switch (showType) {
case FacilityShowType.ModelAndTag:
this.resName = resName;
this.resPath = DataManager.getResPath_facility(this.posType, type);
this.resPath = ConfigManager.getResPath_facility(this.posType, type);
break;
case FacilityShowType.AreaAndTag:
this.areaPoints = this.newAreapPoints();
@ -81,37 +82,13 @@ export class ModelData_facility extends ModelData {
static getShowType(facilityType: FacilityType): FacilityShowType {
let result = FacilityShowType.ModelAndTag;
switch (facilityType) {
case FacilityType.AQCK:
case FacilityType.DSXHS:
case FacilityType.DXXHS:
case FacilityType.SZDXXHS:
case FacilityType.SZDSXHS:
case FacilityType.DSSBJHQ:
case FacilityType.DXSBJHQ:
case FacilityType.QBSBJHQ:
case FacilityType.DGNSBJHQ:
case FacilityType.PL:
case FacilityType.TPBZ:
case FacilityType.XKS:
case FacilityType.BF:
case FacilityType.SX:
case FacilityType.LSXFB:
case FacilityType.WSXFB:
case FacilityType.CYXFB:
case FacilityType.SNXHS:
case FacilityType.FHM:
case FacilityType.HT:
case FacilityType.PTDT:
case FacilityType.XFDT:
case FacilityType.SSLT:
case FacilityType.FHJL: result = FacilityShowType.ModelAndTag; break;//展示模型和标签
case FacilityType.JTQ:
case FacilityType.JJQ:
case FacilityType.FHFQ: result = FacilityShowType.AreaAndTag; break;//展示可编辑多边形
case FacilityType.GD: result = FacilityShowType.GdAndTag; break;//展示高度和标签
case FacilityType.DWBZ:
case FacilityType.TPBZ: result = FacilityShowType.ModelAndTag; break;//展示模型和标签
case FacilityType.QY: result = FacilityShowType.AreaAndTag; break;//展示可编辑多边形
}
return result;
@ -125,9 +102,8 @@ export class ModelData_facility extends ModelData {
//设备位置类型(室内还是室外)
export enum FacilityPosType {
Indoor = "indoor", //室内
Outdoor = "outdoor", //室外
Public = "public",//共有
In = "in", //内置在建筑模型中
Out = "out", //在编辑时单独放置
}
//设备展示类型
@ -143,138 +119,24 @@ export enum FacilityShowType {
*
*/
export enum FacilityType {
//室外
/**
*
*/
AQCK = "AQCK",
/**
*
*/
DSXHS = "DSXHS",
/**
*
*/
DXXHS = "DXXHS",
/**
*
*/
SZDSXHS = "SZDSXHS",
/**
*
*/
SZDXXHS = "SZDXXHS",
/**
*
*/
DSSBJHQ = "DSSBJHQ",
/**
*
*/
DXSBJHQ = "DXSBJHQ",
/**
*
*/
QBSBJHQ = "QBSBJHQ",
/**
*
*/
DGNSBJHQ = "DGNSBJHQ",
/**
*
*/
GD = "GD",
/**
*
*/
PL = "PL",
/**
*
*/
JTQ = "JTQ",
/**
*
*/
JJQ = "JJQ",
/**
*
*/
TPBZ = "TPBZ",//
//室内
/**
*
*/
XKS = "XKS",
/**
*
*/
BF = "BF",
/**
*
*/
SX = "SX",
/**
*
*/
LSXFB = "LSXFB",
/**
*
*/
WSXFB = "WSXFB",
/**
*
*/
CYXFB = "CYXFB",
/**
*
*/
SNXHS = "SNXHS",
/**
*
*
*/
FHM = "FHM",
QY = "QY",
/**
*
*
*/
FHJL = "FHJL",
TPBZ = "TPBZ",
/**
*
*/
SSLT = "SSLT",
/**
*
*/
XFDT = "XFDT",
/**
*
*/
PTDT = "PTDT",
/**
*
*/
HT = "HT",
/**
*
*/
BNC = "BNC",
/**
*
*/
WXY = "WXY",
/**
*
*/
ZDQY = "ZDQY",
/**
*
*/
DWBZ = "DWBZ",
/**
*
*/
FHFQ = "FHFQ",
}

8
src/app/babylon/model/info/model/facilityinfo-tool/facility-area.ts

@ -42,13 +42,7 @@ export class AreaInfo {
static getAreaColor(facilityType: FacilityType): Color3 {
let result = Color3.Red();
switch (facilityType) {
case FacilityType.FHFQ:
result = Color3.Red();
break;
case FacilityType.JTQ:
result = Color3.Yellow();
break;
case FacilityType.JJQ:
case FacilityType.QY:
result = Color3.Green();
break;
}

267
src/app/babylon/model/info/model/facilityinfo-tool/facility-gd.ts

@ -1,267 +0,0 @@
//#region 高度
import { AbstractMesh, MeshBuilder, Color3, Vector3, Mesh, Observer, Scene, Vector2 } from "@babylonjs/core";
import { Control, Button } from "@babylonjs/gui";
import { GridMaterial } from "@babylonjs/materials";
import { ModeManager, ModeType } from "src/app/babylon/controller/mode-manager";
import { SceneManager } from "src/app/babylon/controller/scene-manager";
import { UIManager } from "src/app/babylon/controller/ui-manager";
import { BabylonUIStyleTool, UI_LineInfo } from "src/app/babylon/tool/babylon-ui-style-tool";
import { GizmoTool, TransformUIType } from "src/app/babylon/tool/gizmo-tool";
import { PropertyData_GD } from "../../../data/institution/facility/property-data/outdoor/property-data-gd";
import { ModelData_facility } from "../../../data/model-data/model-data-facility";
import { ModelInfo_facility } from "../model-info-facility";
/**
*
*/
export class GdInfo {
pointData_start: Vector3;//起位
pointData_end: Vector3;//终点
material: GridMaterial;
belongToFacility: ModelInfo_facility;
myPath: Vector3[] = [];
myTube: Mesh;
gdMeshPoints: GdMeshPoint[] = [];
isShow: boolean;
onGizmoAimMeshObserver: Observer<AbstractMesh>;
updateObserver: Observer<Scene>;
constructor(startPoint: Vector3, endPoint: Vector3, belongToFacility: ModelInfo_facility) {
let instance = this;
this.belongToFacility = belongToFacility;
this.pointData_start = startPoint;
let point_start = new GdMeshPoint(this, this.pointData_start, false);
this.gdMeshPoints.push(point_start);
this.pointData_end = endPoint;
let point_end = new GdMeshPoint(this, this.pointData_end, true);
this.gdMeshPoints.push(point_end);
this.myPath.push(point_start.pos);
this.myPath.push(point_end.pos);
this.updateObserver = SceneManager.Instance.scene.onBeforeRenderObservable.add(() => {
instance.update();
});
this.onGizmoAimMeshObserver = GizmoTool.onGizmoAimMeshObservable.add((mesh) => {
instance.onChangeGizmo(mesh);
})
this.createMesh();
}
createMesh() {
this.myTube = MeshBuilder.CreateTube("tube", { path: this.myPath, radius: 2, sideOrientation: Mesh.DOUBLESIDE, updatable: true }, SceneManager.Instance.scene);
this.myTube.parent = this.belongToFacility.modelBox;
this.myTube.position = Vector3.Zero();
this.material = new GridMaterial("mat_myTube", SceneManager.Instance.scene);
this.material.mainColor = Color3.FromHexString(BabylonUIStyleTool.c_color_3d_blue); // new Color3(0, 0.5, 1)
this.material.lineColor = new Color3(0, 0, 0);
this.myTube.material = this.material;
}
update() {
this.gdMeshPoints[1].mesh.position.x = 0;
this.gdMeshPoints[1].mesh.position.z = 0;
this.myPath[1] = this.gdMeshPoints[1].mesh.position;
this.myTube = MeshBuilder.CreateTube("tube", { path: this.myPath, radius: 2, sideOrientation: Mesh.DOUBLESIDE, updatable: true, instance: this.myTube }, SceneManager.Instance.scene);
let facilityData = this.belongToFacility.modelData as ModelData_facility;
let property = facilityData.propertyData as PropertyData_GD;
this.gdMeshPoints[1].updateInfo(property.info);
}
//释放
dispose() {
SceneManager.Instance.scene.onBeforeRenderObservable.remove(this.updateObserver);
GizmoTool.onGizmoAimMeshObservable.remove(this.onGizmoAimMeshObserver);
this.updateObserver = null;
for (let i = 0; i < this.gdMeshPoints.length; i++) {
this.gdMeshPoints[i].dispose();
}
this.material.dispose();
this.myTube.dispose();
}
onChangeGizmo(mesh: AbstractMesh) {
// if (mesh != null) {
// this.isShow = mesh == this.belongToFacility.modelBox || this.isPosPointMesh(mesh);
// this.setEnable(this.isShow);
// }
// else {
// this.setEnable(false);
// }
}
//是否是位点mesh
isPosPointMesh(mesh: AbstractMesh): boolean {
if (mesh == null) {
return false;
}
for (let i = 0; i < this.gdMeshPoints.length; i++) {
if (mesh == this.gdMeshPoints[i].mesh) {
return true;
}
}
return false;
}
setEnable(show: boolean) {
for (let i = 0; i < this.gdMeshPoints.length; i++) {
this.gdMeshPoints[i].setEnable(show);
}
}
setUIEnable(show: boolean) {
for (let i = 0; i < this.gdMeshPoints.length; i++) {
this.gdMeshPoints[i].showEditUI(show);
}
}
}
/**
* mesh
*/
export class GdMeshPoint {
pos: Vector3;
canSet: boolean;
gdInfo: GdInfo;
uiRoot: Button;
lineInfo: UI_LineInfo;
mesh: Mesh;
constructor(gdInfo: GdInfo, pos: Vector3, canSet: boolean) {
this.pos = pos;
this.canSet = canSet;
if (canSet) {
this.gdInfo = gdInfo;
this.mesh = MeshBuilder.CreateBox(gdInfo.belongToFacility.modelBox.name + "_point", { size: 1 });
this.mesh.setParent(gdInfo.belongToFacility.modelBox);
this.mesh.position = pos;
this.mesh.isVisible = false;
this.initEditUI();
this.lineInfo = BabylonUIStyleTool.createLineInfo(gdInfo.belongToFacility.modelBox.name, this.mesh);
this.showEditUI(false);
}
}
//初始化 编辑UI
initEditUI() {
if (ModeManager.currentMode == ModeType.Edit) {
let instance = this;
this.uiRoot = Button.CreateImageButton("ui_editPoint_" + this.gdInfo.belongToFacility.modelBox.name, "", "assets/images/ui/edit.png");
UIManager.Instance.uiRoot.addControl(this.uiRoot);
this.uiRoot.linkWithMesh(this.mesh);
this.uiRoot.linkOffsetYInPixels = 20;
this.uiRoot.linkOffsetXInPixels = -40;
BabylonUIStyleTool.setStyle_size(this.uiRoot, "20px", "20px");
this.uiRoot.image.width = 0.8;
this.uiRoot.image.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;
this.uiRoot.image.verticalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;
// this.uiRoot.thickness = 0;
this.uiRoot.background = BabylonUIStyleTool.c_color_3d_blueBg;
this.uiRoot.color = BabylonUIStyleTool.c_color_3d_blue;
// this.uiRoot.alpha = 0.7;
this.uiRoot.onPointerClickObservable.add(() => {
instance.changeAim();
});
}
}
//显示或隐藏 编辑UI
showEditUI(show: boolean) {
if (this.uiRoot != null) {
this.uiRoot.isVisible = show && this.canSet;
}
}
//显示、隐藏标识UI
setEnable(show: boolean) {
if (this.lineInfo != null) {
this.lineInfo.setEnable(show);
}
this.showEditUI(show && ModeManager.currentMode == ModeType.Edit);
}
//改变选中的目标
changeAim() {
let instance = this;
GizmoTool.onTransformUITypeChange(TransformUIType.Position);//强行变为position
GizmoTool.changeGizmoAim(instance.mesh, false, true, false);
// PosPointTool.attachMesh(instance.mesh as Mesh, instance.pos,
// () => {
// instance.addPoint();
// },
// () => {
// instance.reducePoint();
// }
// );
//如果需要增加节点,在此拓展
}
dispose() {
if (this.canSet) {
if (this.uiRoot != null) {
this.uiRoot.dispose();
}
GizmoTool.leaveTheGizmoAimMesh(this.mesh);
this.mesh.dispose();
this.lineInfo.dispose();
}
}
/**
*
* @param text
*/
updateInfo(text: string) {
if (this.lineInfo.info != null) {
this.lineInfo.info.text = "高度:" + text;
this.lineInfo.info.resizeToFit = true;
this.lineInfo.infoBg.height = (this.lineInfo.info.heightInPixels + 5) + "px";
}
}
}
//#endregion

23
src/app/babylon/model/info/model/model-info-facility.ts

@ -10,7 +10,7 @@ import { ModelData } from "../../data/model-data/model-data";
import { FacilityShowType, FacilityType, ModelData_facility } from "../../data/model-data/model-data-facility";
import { BuildingInfo } from "../building/building-info";
import { AreaInfo } from "./facilityinfo-tool/facility-area";
import { GdInfo } from "./facilityinfo-tool/facility-gd";
import { ModelInfo } from "./model-info";
//设施数据
@ -20,7 +20,6 @@ export class ModelInfo_facility extends ModelInfo {
facilityShowType: FacilityShowType;//设备展示状态
ui_select: Ellipse | Rectangle;
areaInfo: AreaInfo;//区域信息
gdInfo: GdInfo;//高度信息
isNew: boolean;//是否是新建
@ -47,12 +46,9 @@ export class ModelInfo_facility extends ModelInfo {
BabylonUIStyleTool.setStyle_size(this.uiFollowRoot, ConfigManager.c_size_facilityIconSize + "px", ConfigManager.c_size_facilityIconSize + "px");
this.uiFollowRoot.thickness = 0;
if (modelData.facilityType == FacilityType.AQCK) {
this.ui_select = new Rectangle("select");
}
else {
this.ui_select = new Ellipse("select");
}
this.ui_select = new Ellipse("select");
this.uiFollowRoot.addControl(this.ui_select);
this.ui_select.background = BabylonUIStyleTool.c_color_3d_blue;
@ -131,9 +127,7 @@ export class ModelInfo_facility extends ModelInfo {
this.areaInfo.setEnable(enable);
}
if (this.gdInfo != null) {
this.gdInfo.setEnable(enable);
}
}
/**
@ -150,9 +144,7 @@ export class ModelInfo_facility extends ModelInfo {
*/
setIconEnable(enable: boolean) {
this.showFollowUI(enable);
if (this.gdInfo != null) {
this.gdInfo.setUIEnable(enable);
}
if (!enable)//还原选中状态
{
@ -165,9 +157,6 @@ export class ModelInfo_facility extends ModelInfo {
this.areaInfo.dispose();
}
if (this.gdInfo != null) {
this.gdInfo.dispose();
}
super.dispose();
}
}

87
src/app/babylon/view/building-window/building-window.ts

@ -351,36 +351,6 @@ export class BuildingWindow extends UIBase {
});
}
/**
*
*/
public clearHomeLessFacilityData() {
}
/**
*
*/
public getModelAndCreateFacilityData() {
if (this.currentBuidngItem != null) {
//获取所有transformNodes
let allNode = this.currentBuidngItem.buildingInfo.ModelInfo.modelBox.getChildTransformNodes(false);
for (let i = 0; i < allNode.length; i++) {
let nodeName = allNode[i].name;
// switch (nodeName) {
// case "消火栓":
// break;
// case "消火栓1": break;
// }
}
}
}
//#endregion
@ -529,5 +499,62 @@ export class BuildingWindow extends UIBase {
}
//#endregion
//#region 寻找建筑内已有设备相关
/**
*
*/
readonly c_xiaoFang = "XF_";
/**
*
*/
readonly c_jiaYou = "JY_";
/**
*
*/
readonly c_zheDang = "ZD";
/**
*
*/
public clearHomeLessFacilityData() {
}
/**
*
*/
public getModelAndCreateFacilityData() {
if (this.currentBuidngItem != null) {
//获取所有transformNodes
let allNode = this.currentBuidngItem.buildingInfo.ModelInfo.modelBox.getChildTransformNodes(false);
for (let i = 0; i < allNode.length; i++) {
let nodeName = allNode[i].name;
if (TsTool.stringContain(nodeName, this.c_xiaoFang)) //消防
{
}
else if (TsTool.stringContain(nodeName, this.c_xiaoFang))//加油站
{
}
else if (TsTool.stringContain(nodeName, this.c_zheDang))//遮挡
{
}
}
}
}
//#endregion
}

14
src/app/babylon/view/facility-window/facility-window.ts

@ -25,7 +25,6 @@ import { UIManager } from '../../controller/ui-manager';
import { FacilityPosType, ModelData_facility, FacilityShowType } from '../../model/data/model-data/model-data-facility';
import { BuildingInfo } from '../../model/info/building/building-info';
import { AreaInfo } from '../../model/info/model/facilityinfo-tool/facility-area';
import { GdInfo } from '../../model/info/model/facilityinfo-tool/facility-gd';
import { ModelInfo_facility } from '../../model/info/model/model-info-facility';
import { BabylonTool } from '../../tool/babylon-tool';
import { BabylonUIStyleTool } from '../../tool/babylon-ui-style-tool';
@ -145,7 +144,7 @@ export class FacilityWindow extends UIBase {
let facilities: ModelData_facility[];
if (facilityPosType == FacilityPosType.Indoor) {
if (facilityPosType == FacilityPosType.In) {
facilities = DataManager.allFacilityData.indoor;
} else {
// console.log("=====updateAllFacilities=====");
@ -436,17 +435,6 @@ export class FacilityWindow extends UIBase {
}
}
else if (facilityInfo.facilityShowType == FacilityShowType.GdAndTag) {
if (facilityData.areaPoints.length == 0) {
facilityData.areaPoints = [];
facilityData.areaPoints.push(new Vector3(0, 0, 0));
facilityData.areaPoints.push(new Vector3(0, 10, 0));
}
facilityInfo.gdInfo = new GdInfo(facilityData.areaPoints[0], facilityData.areaPoints[1], facilityInfo);
if (onSuccess) {
onSuccess(facilityInfo);
}
}
// if (select) {
// GizmoTool.onPickMeshInfoObservable.notifyObservers(facilityInfo);

71
src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts

@ -1,18 +1,5 @@
import { SceneManager } from "../../controller/scene-manager";
import { PropertyData_Base_IMG } from "../../model/data/institution/facility/property-data/base/property-data-base-img";
import { PropertyData_Base_SBJHQ } from "../../model/data/institution/facility/property-data/base/property-data-base-sbjhq";
import { PropertyData_Base_XFB } from "../../model/data/institution/facility/property-data/base/property-data-base-xfb";
import { PropertyData_Base_XHS } from "../../model/data/institution/facility/property-data/base/property-data-base-xhs";
import { PropertyData_DWBZ } from "../../model/data/institution/facility/property-data/indoor/property-data-dwbz";
import { PropertyData_FHFQ } from "../../model/data/institution/facility/property-data/indoor/property-data-fhfq";
import { PropertyData_SSLT } from "../../model/data/institution/facility/property-data/indoor/property-data-sslt";
import { PropertyData_XFDT } from "../../model/data/institution/facility/property-data/indoor/property-data-xfdt";
import { PropertyData_ZDQY } from "../../model/data/institution/facility/property-data/indoor/property-data-zdqy";
import { PropertyData_AQCK } from "../../model/data/institution/facility/property-data/outdoor/property-data-aqck";
import { PropertyData_GD } from "../../model/data/institution/facility/property-data/outdoor/property-data-gd";
import { PropertyData_PL } from "../../model/data/institution/facility/property-data/outdoor/property-data-pl";
import { PropertyData_Q } from "../../model/data/institution/facility/property-data/outdoor/property-data-q";
import { PropertyData_Base } from "../../model/data/institution/facility/property-data/property-data-base";
import { FacilityType, ModelData_facility } from "../../model/data/model-data/model-data-facility";
import { ModelInfo_facility } from "../../model/info/model/model-info-facility";
@ -63,59 +50,8 @@ export class FacilityInfoUIItem {
*
*/
getPropertyData() {
let facilityData
// = (this.modelInfo.modelData as ModelData_facility).propertyData as any;
if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.AQCK) {
//安全出口
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_AQCK;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DSXHS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DXXHS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SZDSXHS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SZDXXHS) {
//消火栓
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_XHS;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DSSBJHQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DXSBJHQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.QBSBJHQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DGNSBJHQ) {
//水泵接合器
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_SBJHQ;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.GD) {
//高度
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_GD;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.PL) {
//毗邻
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_PL;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.TPBZ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.XKS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.BF || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SX) {
//图片标注,消控室,泵房,水箱
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_IMG;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.JJQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.JTQ) {
//集结区,禁停区
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Q;
}
else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.LSXFB || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.WSXFB || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.CYXFB) {
//消防泵
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_XFB;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.FHFQ) {
//防火分区
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_FHFQ;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.FHM) {
//防火门
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.FHJL) {
//防火卷帘
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SSLT) {
//疏散楼梯
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_SSLT;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.XFDT) {
//消防电梯
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_XFDT;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.PTDT) {
//普通电梯
facilityData = null
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.ZDQY) {
//重点区域
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_ZDQY;
} else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.WXY || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DWBZ) {
//危险源,点位标注
facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_DWBZ;
} else {
//未匹配到的
facilityData = null
}
let facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as any;
return facilityData
}
@ -177,9 +113,6 @@ export class FacilityInfoUIItem {
}
let size = null;
if (this.modelInfo.gdInfo != null) {
size = this.modelInfo.gdInfo.myPath[1].y * 3;
}
if (this.modelInfo.areaInfo != null) {
//计算多边形size

14
src/app/babylon/view/mark-window/mark-window.ts

@ -1356,19 +1356,7 @@ export class MarkWindow extends UIBase {
*/
isWaterSouce(type: FacilityType) {
let result = false;
switch (type) {
case FacilityType.DXXHS:
case FacilityType.DSXHS:
case FacilityType.SZDSXHS:
case FacilityType.SZDXXHS:
case FacilityType.DSSBJHQ:
case FacilityType.DXSBJHQ:
case FacilityType.DGNSBJHQ:
case FacilityType.QBSBJHQ:
case FacilityType.SNXHS:
result = true;
break;
}
return result;
}

0
src/assets/images/facility/DWBZ.png → src/assets/images/facility/out/DWBZ.png

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

0
src/assets/images/facility/PL.png → src/assets/images/facility/out/PL.png

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
src/assets/images/facility/JJQ.png → src/assets/images/facility/out/QY.png

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

0
src/assets/images/facility/TPBZ.png → src/assets/images/facility/out/TPBZ.png

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Loading…
Cancel
Save