You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
6.3 KiB
280 lines
6.3 KiB
import { ModelData } from "./model-data"; |
|
import { TransformData } from "../transform-data"; |
|
import { PropertyData_Base } from "../institution/facility/property-data/property-data-base"; |
|
|
|
import { classToClass, Type } from "class-transformer"; |
|
import { Vector3 } from "@babylonjs/core"; |
|
import { DataManager } from "src/app/babylon/controller/data-manager"; |
|
|
|
|
|
//设备数据 |
|
export class ModelData_facility extends ModelData { |
|
posType: FacilityPosType = FacilityPosType.Outdoor;//位置类型 |
|
|
|
facilityType: FacilityType = FacilityType.AQCK;//具体设备类别 |
|
@Type(() => PropertyData_Base) |
|
propertyData: PropertyData_Base = null;//属性信息 |
|
@Type(() => Vector3) |
|
areaPoints: Vector3[] = [];//区域位点 |
|
|
|
|
|
constructor(key: string, type: FacilityType, name: string, resName: string, transformData: TransformData, posType: FacilityPosType, isModel: boolean = true) { |
|
|
|
super(key, name, null, resName, transformData, isModel); |
|
|
|
this.facilityType = type; |
|
this.posType = posType; |
|
if (type != undefined) { |
|
|
|
let showType = ModelData_facility.getShowType(type); |
|
switch (showType) { |
|
case FacilityShowType.ModelAndTag: |
|
this.resName = resName; |
|
this.resPath = DataManager.getResPath_facility(this.posType, type); |
|
break; |
|
case FacilityShowType.AreaAndTag: |
|
this.areaPoints = this.newAreapPoints(); |
|
break; |
|
} |
|
// this.resPath = ConfigManager.c_resPath_facilitiesRoot + this.posType.toString() + "/" + type.toLowerCase() + "/"; |
|
this.propertyData = DataManager.createPropertyData(key, type); |
|
} |
|
|
|
|
|
} |
|
|
|
/** |
|
* 获取表现类型 |
|
*/ |
|
getShowtype() { |
|
let showType = ModelData_facility.getShowType(this.facilityType); |
|
return showType |
|
} |
|
|
|
clone(key: string): ModelData_facility { |
|
let result = new ModelData_facility(key, this.facilityType, this.name, this.resName, this.transformData.clone(), this.posType); |
|
result.propertyData = this.propertyData.clone(key); |
|
result.areaPoints = classToClass(this.areaPoints); |
|
return result; |
|
} |
|
|
|
//新建区域位点 |
|
newAreapPoints(): Vector3[] { |
|
let size = 10; |
|
let x = 0.75 * size; |
|
let z = 0.5 * size; |
|
let result: Vector3[] = []; |
|
result.push(new Vector3(0, 0, 1 * size)); |
|
result.push(new Vector3(x, 0, z)); |
|
result.push(new Vector3(x, 0, -z)); |
|
result.push(new Vector3(0, 0, -1 * size)); |
|
result.push(new Vector3(-x, 0, -z)); |
|
result.push(new Vector3(-x, 0, z)); |
|
|
|
return result; |
|
} |
|
|
|
/** |
|
* 查询展示方式 |
|
* @param facilityType 设备具体类型 |
|
*/ |
|
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;//展示高度和标签 |
|
} |
|
|
|
return result; |
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//设备位置类型(室内还是室外) |
|
export enum FacilityPosType { |
|
Indoor = "indoor", //室内 |
|
Outdoor = "outdoor", //室外 |
|
Public = "public",//共有 |
|
} |
|
|
|
//设备展示类型 |
|
export enum FacilityShowType { |
|
Tag,//标签 |
|
ModelAndTag,//模型和标签 |
|
AreaAndTag,//区域和标签 |
|
GdAndTag,//高度和标签 |
|
} |
|
|
|
|
|
/** |
|
* 设备具体类型 |
|
*/ |
|
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", |
|
/** |
|
* 防火卷帘 |
|
*/ |
|
FHJL = "FHJL", |
|
|
|
/** |
|
* 疏散楼梯 |
|
*/ |
|
SSLT = "SSLT", |
|
/** |
|
* 消防电梯 |
|
*/ |
|
XFDT = "XFDT", |
|
/** |
|
* 普通电梯 |
|
*/ |
|
PTDT = "PTDT", |
|
/** |
|
* 货梯 |
|
*/ |
|
HT = "HT", |
|
/** |
|
* 避难层 |
|
*/ |
|
BNC = "BNC", |
|
/** |
|
* 危险源 |
|
*/ |
|
WXY = "WXY", |
|
/** |
|
* 重点区域 |
|
*/ |
|
ZDQY = "ZDQY", |
|
/** |
|
* 点位标注 |
|
*/ |
|
DWBZ = "DWBZ", |
|
|
|
/** |
|
* 防火分区 |
|
*/ |
|
FHFQ = "FHFQ", |
|
} |