diff --git a/src/app/babylon/controller/config-manager.ts b/src/app/babylon/controller/config-manager.ts index 6a01cf6..b932819 100644 --- a/src/app/babylon/controller/config-manager.ts +++ b/src/app/babylon/controller/config-manager.ts @@ -1,5 +1,6 @@ import { MarkKindType, MarkType, MarkTagPos } from "../model/data/mark/mark-data"; import { FacilityPosType, FacilityType } from "../model/data/model-data/model-data-facility"; +import { TsTool } from "../tool/ts-tool"; //配置、常量管理器 export class ConfigManager { @@ -31,6 +32,28 @@ export class ConfigManager { return result; } + /** + * 查询设备是否需要展示图标 + * @param type + */ + static getFacilityNeedIcon(type: FacilityType) { + let result = false; + switch (type) { + case FacilityType.PL: + case FacilityType.QY: + case FacilityType.TPBZ: + case FacilityType.DWBZ: + result = true; + break; + + } + if (TsTool.stringContain(type, "XF_")) { + result = true; + } + + return result; + + } /** * 获取设备icon的url diff --git a/src/app/babylon/controller/scene-manager.ts b/src/app/babylon/controller/scene-manager.ts index 5332672..a5c8b67 100644 --- a/src/app/babylon/controller/scene-manager.ts +++ b/src/app/babylon/controller/scene-manager.ts @@ -57,6 +57,7 @@ import { ModelInfo_mark_multiLine } from '../model/info/mark/other/mark-plan-mul import { MarkData_multiArrow_CT, MarkData_multiArrow_JG } from '../model/data/mark/other/mark-data-multi-arrow'; import { ModelInfo_mark_multiArrow } from '../model/info/mark/other/mark-plan-multi-arrow'; import { ModelInfo_mark_particle } from '../model/info/mark/other/mark-plan-particle-info'; +import { FacilityPosType, ModelData_facility } from '../model/data/model-data/model-data-facility'; //场景管理器 export class SceneManager { @@ -784,8 +785,21 @@ export class SceneManager { if (modelInfo == null) { return; } else { - TsTool.arrayRemove(SceneManager.s_allModelInfo, modelInfo); - modelInfo.dispose(); + + console.log(modelInfo.modelData instanceof ModelData_facility, (modelInfo.modelData as ModelData_facility).posType); + + if (modelInfo.modelData instanceof ModelData_facility && modelInfo.modelData.posType == FacilityPosType.In) { + console.log("1111"); + //来自建筑模型中的设备 + modelInfo.dispose(false); + } + else { + console.log("222"); + TsTool.arrayRemove(SceneManager.s_allModelInfo, modelInfo); + modelInfo.dispose(); + } + + } } diff --git a/src/app/babylon/controller/serve-manager.ts b/src/app/babylon/controller/serve-manager.ts index 020deca..92e0415 100644 --- a/src/app/babylon/controller/serve-manager.ts +++ b/src/app/babylon/controller/serve-manager.ts @@ -1,5 +1,6 @@ import { HttpErrorResponse } from "@angular/common/http"; import { classToPlain } from "class-transformer"; +import { PlanComponent } from "src/app/pages/plan/plan.component"; import { BuildingBasicInfosService } from "src/app/service/babylon/building-basic-infos.service"; import { ObjectsService } from "src/app/service/objects.service"; import { InsitutionDataSimple } from "../model/data/institution/institution-data-simple"; @@ -59,7 +60,7 @@ export class ServeManager { onSuccess(key, data.result); } if (key != "InsList") { - //ThreeDimensionalHomeComponent.instance.openSnackBar("保存单位成功"); + PlanComponent.instance.openSnackBar("保存单位成功"); // alert("保存单位成功"); } diff --git a/src/app/babylon/model/data/model-data/model-data-facility.ts b/src/app/babylon/model/data/model-data/model-data-facility.ts index 9106c37..18f62b6 100644 --- a/src/app/babylon/model/data/model-data/model-data-facility.ts +++ b/src/app/babylon/model/data/model-data/model-data-facility.ts @@ -102,6 +102,8 @@ export class ModelData_facility extends ModelData { + + } @@ -203,6 +205,12 @@ export enum FacilityType { * 消防沙 */ XF_XFS = "XF_XFS", + + /** + * 消防的阻挡物 + */ + ZD_XF = "ZD_XF", + /** * 加油机 */ @@ -221,10 +229,20 @@ export enum FacilityType { * 输油管线 */ JY_SYGX = "JY_SYGX", + + /** + * 输油管线阻挡物 + */ + ZD_SYGX = "ZD_SYGX", /** * 油气回收管线 */ JY_YQHSGX = "JY_YQHSGX", + + /** + * 油气回收管线 阻挡物 + */ + ZD_YQHSGX = "ZD_YQHSGX", /** * 逃生路线 */ diff --git a/src/app/babylon/model/info/model/model-info-building.ts b/src/app/babylon/model/info/model/model-info-building.ts index c54124b..2d47b2a 100644 --- a/src/app/babylon/model/info/model/model-info-building.ts +++ b/src/app/babylon/model/info/model/model-info-building.ts @@ -150,9 +150,9 @@ export class ModelInfo_building extends ModelInfo { - dispose() { + dispose(disposeMesh?: boolean) { this.disposeAllFacility(); - super.dispose(); + super.dispose(disposeMesh); } /** @@ -218,9 +218,9 @@ export class ModelInfo_building extends ModelInfo { InfoManager.removeFacilityInfoToTypeList(modelInfo_facility, this.facilityInfos); } Event_ModelInfoChange.dispatch(modelInfo_facility, ModelChangeType.Remove); - if ((modelInfo_facility.modelData as ModelData_facility).posType == FacilityPosType.Out) { - SceneManager.destroyModel(modelInfo_facility); - } + + SceneManager.destroyModel(modelInfo_facility); + } diff --git a/src/app/babylon/model/info/model/model-info-facility.ts b/src/app/babylon/model/info/model/model-info-facility.ts index 490d950..2057ec4 100644 --- a/src/app/babylon/model/info/model/model-info-facility.ts +++ b/src/app/babylon/model/info/model/model-info-facility.ts @@ -38,9 +38,13 @@ export class ModelInfo_facility extends ModelInfo { } onCreateFollowUI() { + let modelData = this.modelData as ModelData_facility; + if (!ConfigManager.getFacilityNeedIcon(modelData.facilityType)) { + return; + } super.onCreateFollowUI(); let instance = this; - let modelData = this.modelData as ModelData_facility; + let posType = ConfigManager.getPosType(modelData.facilityType); let iconPath = ConfigManager.getFacilityIconUrl(modelData.facilityType, posType); BabylonUIStyleTool.setStyle_size(this.uiFollowRoot, ConfigManager.c_size_facilityIconSize + "px", ConfigManager.c_size_facilityIconSize + "px"); @@ -152,12 +156,12 @@ export class ModelInfo_facility extends ModelInfo { } } - dispose() { + dispose(disposeMesh?: boolean) { if (this.areaInfo != null) { this.areaInfo.dispose(); } - super.dispose(); + super.dispose(disposeMesh); } } diff --git a/src/app/babylon/model/info/model/model-info.ts b/src/app/babylon/model/info/model/model-info.ts index 5f3ee40..e9f0235 100644 --- a/src/app/babylon/model/info/model/model-info.ts +++ b/src/app/babylon/model/info/model/model-info.ts @@ -201,18 +201,31 @@ export class ModelInfo { } } - dispose() { + /** + * 释放 + * @param disposeMesh 同时释放模型 + */ + dispose(disposeMesh: boolean = true) { this.isDisposed = true; - this.uiFollowRoot.dispose(); - // console.log("释放model" + this.key); - if (this.modelBox != null) { - this.modelBox.dispose(); - } else { - this.models[0].dispose(); + if (this.uiFollowRoot != null) { + this.uiFollowRoot.dispose(); + } + + console.log("释放model" + this.key, disposeMesh); + if (disposeMesh) { + if (this.modelBox != null) { + this.modelBox.dispose(); + } else { + this.models[0].dispose(); + } + } + else { + console.log("不释放mesh", this.modelBox.name); } } + //设置模型盒子时 onSetModelBox() { diff --git a/src/app/babylon/view/building-window/building-ui-item.ts b/src/app/babylon/view/building-window/building-ui-item.ts index a3b5c47..f38a4f1 100644 --- a/src/app/babylon/view/building-window/building-ui-item.ts +++ b/src/app/babylon/view/building-window/building-ui-item.ts @@ -208,7 +208,7 @@ export class BuildingUIItem { * @param mesh */ createFacilityByMesh(mesh: AbstractMesh) { - FacilityWindow.instance.createFacilityByMesh(mesh, this.buildingInfo); + FacilityWindow.instance.createFacilityByMesh(mesh); } @@ -217,7 +217,7 @@ export class BuildingUIItem { * @param mesh */ createOilingByMesh(mesh: AbstractMesh) { - FacilityWindow.instance.createOilingByMesh(mesh, this.buildingInfo); + FacilityWindow.instance.createOilingByMesh(mesh); } /** @@ -225,7 +225,7 @@ export class BuildingUIItem { * @param mesh */ createStopByMesh(mesh: AbstractMesh) { - FacilityWindow.instance.createStopByMesh(mesh, this.buildingInfo); + FacilityWindow.instance.createStopByMesh(mesh); } /** diff --git a/src/app/babylon/view/facility-window/facility-window.ts b/src/app/babylon/view/facility-window/facility-window.ts index ae5a50d..43fa2e2 100644 --- a/src/app/babylon/view/facility-window/facility-window.ts +++ b/src/app/babylon/view/facility-window/facility-window.ts @@ -554,7 +554,7 @@ export class FacilityWindow extends UIBase { * 从模型中创建消防设备信息 * @param mesh */ - createFacilityByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { + createFacilityByMesh(mesh: AbstractMesh) { if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_4)) { this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_GF_4); @@ -563,43 +563,40 @@ export class FacilityWindow extends UIBase { this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_GF_8); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_35)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_GF_35); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_PT_4)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_PT_4); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_PT_8)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_PT_8); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_PT_35)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_PT_35); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_SSD)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_SSD); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_TSLX)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_TSLX); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFF)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_XFF); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFQ)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_XFQ); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFS)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_XFS); } else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFT)) { - - } - else if (TsTool.stringContain(mesh.name, FacilityType.ZD_YG)) { - + this.createNewFacilityByMesh(mesh, FacilityType.XF_XFT); } } @@ -607,16 +604,39 @@ export class FacilityWindow extends UIBase { * 从模型中创建加油站相关信息 * @param mesh */ - createOilingByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { + createOilingByMesh(mesh: AbstractMesh) { + if (TsTool.stringContain(mesh.name, FacilityType.JY_JYJ)) { + this.createNewFacilityByMesh(mesh, FacilityType.JY_JYJ); + } + else if (TsTool.stringContain(mesh.name, FacilityType.JY_SYGX)) { + this.createNewFacilityByMesh(mesh, FacilityType.JY_SYGX); + } + else if (TsTool.stringContain(mesh.name, FacilityType.JY_YG)) { + this.createNewFacilityByMesh(mesh, FacilityType.JY_YG); + } + else if (TsTool.stringContain(mesh.name, FacilityType.JY_YQHSGX)) { + this.createNewFacilityByMesh(mesh, FacilityType.JY_YQHSGX); + } } /** * 从模型创建阻挡物信息 * @param mesh */ - createStopByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { - + createStopByMesh(mesh: AbstractMesh) { + if (TsTool.stringContain(mesh.name, FacilityType.ZD_YG)) { + this.createNewFacilityByMesh(mesh, FacilityType.ZD_YG); + } + else if (TsTool.stringContain(mesh.name, FacilityType.ZD_SYGX)) { + this.createNewFacilityByMesh(mesh, FacilityType.ZD_SYGX); + } + else if (TsTool.stringContain(mesh.name, FacilityType.ZD_YQHSGX)) { + this.createNewFacilityByMesh(mesh, FacilityType.ZD_SYGX); + } + else if (TsTool.stringContain(mesh.name, FacilityType.ZD_XF)) { + this.createNewFacilityByMesh(mesh, FacilityType.ZD_XF); + } } diff --git a/src/app/pages/plan/plan.component.ts b/src/app/pages/plan/plan.component.ts index 13e1931..ab0d223 100644 --- a/src/app/pages/plan/plan.component.ts +++ b/src/app/pages/plan/plan.component.ts @@ -90,7 +90,7 @@ export class PlanComponent implements OnInit { } //开发模式 选择单位 弹窗 - modelInit(InsList) { } + modelInit(InsList) { } buildingUIItems: BuildingUIItem[] = []; //左侧 建筑list beforeOneBuildingID: string = null; //选中 左侧建筑ID @@ -99,7 +99,7 @@ export class PlanComponent implements OnInit { editBuildingPop: BuildingUIItem = null; //显隐 编辑左侧建筑弹窗 isShowLeftBuilding: boolean = true; //显隐 建筑list toggleLeftBuilding(e) { this.isShowLeftBuilding = e }; //显隐 建筑list - + uploadList: File[] = []; //多选上传文件 //选择文件 selectFile(e) { @@ -217,7 +217,7 @@ export class PlanComponent implements OnInit { clearDevice() { let isClear = confirm('您确定要清空吗?') if (isClear) { - ToolbarWindow.instance.clearHomeLessFacilityData() + ToolbarWindow.instance.clearAllFacilityDataFromMesh() } } diff --git a/src/assets/images/facility/in/FHJL.png b/src/assets/images/facility/in/XF_MHQ_GF_35.png similarity index 100% rename from src/assets/images/facility/in/FHJL.png rename to src/assets/images/facility/in/XF_MHQ_GF_35.png diff --git a/src/assets/images/facility/in/WSXFB.png b/src/assets/images/facility/in/XF_MHQ_GF_4.png similarity index 100% rename from src/assets/images/facility/in/WSXFB.png rename to src/assets/images/facility/in/XF_MHQ_GF_4.png diff --git a/src/assets/images/facility/in/FHFQ.png b/src/assets/images/facility/in/XF_MHQ_PT_35.png similarity index 100% rename from src/assets/images/facility/in/FHFQ.png rename to src/assets/images/facility/in/XF_MHQ_PT_35.png diff --git a/src/assets/images/facility/in/SX.png b/src/assets/images/facility/in/XF_MHQ_PT_4.png similarity index 100% rename from src/assets/images/facility/in/SX.png rename to src/assets/images/facility/in/XF_MHQ_PT_4.png diff --git a/src/assets/images/facility/in/FHM.png b/src/assets/images/facility/in/XF_MHT.png similarity index 100% rename from src/assets/images/facility/in/FHM.png rename to src/assets/images/facility/in/XF_MHT.png diff --git a/src/assets/images/facility/in/XFDT.png b/src/assets/images/facility/in/XF_TSLX.png similarity index 100% rename from src/assets/images/facility/in/XFDT.png rename to src/assets/images/facility/in/XF_TSLX.png diff --git a/src/assets/images/facility/in/PTDT.png b/src/assets/images/facility/in/XF_XFCM.png similarity index 100% rename from src/assets/images/facility/in/PTDT.png rename to src/assets/images/facility/in/XF_XFCM.png diff --git a/src/assets/images/facility/in/SNXHS.png b/src/assets/images/facility/in/XF_XFF.png similarity index 100% rename from src/assets/images/facility/in/SNXHS.png rename to src/assets/images/facility/in/XF_XFF.png diff --git a/src/assets/images/facility/in/HT.png b/src/assets/images/facility/in/XF_XFQ.png similarity index 100% rename from src/assets/images/facility/in/HT.png rename to src/assets/images/facility/in/XF_XFQ.png diff --git a/src/assets/images/facility/in/SSLT.png b/src/assets/images/facility/in/XF_XFS.png similarity index 100% rename from src/assets/images/facility/in/SSLT.png rename to src/assets/images/facility/in/XF_XFS.png diff --git a/src/assets/images/facility/in/LSXFB.png b/src/assets/images/facility/in/XF_XFT.png similarity index 100% rename from src/assets/images/facility/in/LSXFB.png rename to src/assets/images/facility/in/XF_XFT.png