Browse Source

建筑内设备获取与清除

dev
刘向辉 3 years ago
parent
commit
0f9b669815
  1. 23
      src/app/babylon/controller/config-manager.ts
  2. 14
      src/app/babylon/controller/scene-manager.ts
  3. 3
      src/app/babylon/controller/serve-manager.ts
  4. 18
      src/app/babylon/model/data/model-data/model-data-facility.ts
  5. 8
      src/app/babylon/model/info/model/model-info-building.ts
  6. 10
      src/app/babylon/model/info/model/model-info-facility.ts
  7. 17
      src/app/babylon/model/info/model/model-info.ts
  8. 6
      src/app/babylon/view/building-window/building-ui-item.ts
  9. 58
      src/app/babylon/view/facility-window/facility-window.ts
  10. 2
      src/app/pages/plan/plan.component.ts
  11. 0
      src/assets/images/facility/in/XF_MHQ_GF_35.png
  12. 0
      src/assets/images/facility/in/XF_MHQ_GF_4.png
  13. 0
      src/assets/images/facility/in/XF_MHQ_PT_35.png
  14. 0
      src/assets/images/facility/in/XF_MHQ_PT_4.png
  15. 0
      src/assets/images/facility/in/XF_MHT.png
  16. 0
      src/assets/images/facility/in/XF_TSLX.png
  17. 0
      src/assets/images/facility/in/XF_XFCM.png
  18. 0
      src/assets/images/facility/in/XF_XFF.png
  19. 0
      src/assets/images/facility/in/XF_XFQ.png
  20. 0
      src/assets/images/facility/in/XF_XFS.png
  21. 0
      src/assets/images/facility/in/XF_XFT.png

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

@ -1,5 +1,6 @@
import { MarkKindType, MarkType, MarkTagPos } from "../model/data/mark/mark-data"; import { MarkKindType, MarkType, MarkTagPos } from "../model/data/mark/mark-data";
import { FacilityPosType, FacilityType } from "../model/data/model-data/model-data-facility"; import { FacilityPosType, FacilityType } from "../model/data/model-data/model-data-facility";
import { TsTool } from "../tool/ts-tool";
//配置、常量管理器 //配置、常量管理器
export class ConfigManager { export class ConfigManager {
@ -31,6 +32,28 @@ export class ConfigManager {
return result; 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 * icon的url

14
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 { 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_multiArrow } from '../model/info/mark/other/mark-plan-multi-arrow';
import { ModelInfo_mark_particle } from '../model/info/mark/other/mark-plan-particle-info'; 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 { export class SceneManager {
@ -784,10 +785,23 @@ export class SceneManager {
if (modelInfo == null) { if (modelInfo == null) {
return; return;
} else { } else {
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); TsTool.arrayRemove(SceneManager.s_allModelInfo, modelInfo);
modelInfo.dispose(); modelInfo.dispose();
} }
}
} }
//添加模型 //添加模型

3
src/app/babylon/controller/serve-manager.ts

@ -1,5 +1,6 @@
import { HttpErrorResponse } from "@angular/common/http"; import { HttpErrorResponse } from "@angular/common/http";
import { classToPlain } from "class-transformer"; 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 { BuildingBasicInfosService } from "src/app/service/babylon/building-basic-infos.service";
import { ObjectsService } from "src/app/service/objects.service"; import { ObjectsService } from "src/app/service/objects.service";
import { InsitutionDataSimple } from "../model/data/institution/institution-data-simple"; import { InsitutionDataSimple } from "../model/data/institution/institution-data-simple";
@ -59,7 +60,7 @@ export class ServeManager {
onSuccess(key, data.result); onSuccess(key, data.result);
} }
if (key != "InsList") { if (key != "InsList") {
//ThreeDimensionalHomeComponent.instance.openSnackBar("保存单位成功"); PlanComponent.instance.openSnackBar("保存单位成功");
// alert("保存单位成功"); // alert("保存单位成功");
} }

18
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", XF_XFS = "XF_XFS",
/**
*
*/
ZD_XF = "ZD_XF",
/** /**
* *
*/ */
@ -221,10 +229,20 @@ export enum FacilityType {
* 线 * 线
*/ */
JY_SYGX = "JY_SYGX", JY_SYGX = "JY_SYGX",
/**
* 线
*/
ZD_SYGX = "ZD_SYGX",
/** /**
* 线 * 线
*/ */
JY_YQHSGX = "JY_YQHSGX", JY_YQHSGX = "JY_YQHSGX",
/**
* 线
*/
ZD_YQHSGX = "ZD_YQHSGX",
/** /**
* 线 * 线
*/ */

8
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(); this.disposeAllFacility();
super.dispose(); super.dispose(disposeMesh);
} }
/** /**
@ -218,9 +218,9 @@ export class ModelInfo_building extends ModelInfo {
InfoManager.removeFacilityInfoToTypeList(modelInfo_facility, this.facilityInfos); InfoManager.removeFacilityInfoToTypeList(modelInfo_facility, this.facilityInfos);
} }
Event_ModelInfoChange.dispatch(modelInfo_facility, ModelChangeType.Remove); 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);
}
} }

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

@ -38,9 +38,13 @@ export class ModelInfo_facility extends ModelInfo {
} }
onCreateFollowUI() { onCreateFollowUI() {
let modelData = this.modelData as ModelData_facility;
if (!ConfigManager.getFacilityNeedIcon(modelData.facilityType)) {
return;
}
super.onCreateFollowUI(); super.onCreateFollowUI();
let instance = this; let instance = this;
let modelData = this.modelData as ModelData_facility;
let posType = ConfigManager.getPosType(modelData.facilityType); let posType = ConfigManager.getPosType(modelData.facilityType);
let iconPath = ConfigManager.getFacilityIconUrl(modelData.facilityType, posType); let iconPath = ConfigManager.getFacilityIconUrl(modelData.facilityType, posType);
BabylonUIStyleTool.setStyle_size(this.uiFollowRoot, ConfigManager.c_size_facilityIconSize + "px", ConfigManager.c_size_facilityIconSize + "px"); 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) { if (this.areaInfo != null) {
this.areaInfo.dispose(); this.areaInfo.dispose();
} }
super.dispose(); super.dispose(disposeMesh);
} }
} }

17
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.isDisposed = true;
if (this.uiFollowRoot != null) {
this.uiFollowRoot.dispose(); this.uiFollowRoot.dispose();
// console.log("释放model" + this.key); }
console.log("释放model" + this.key, disposeMesh);
if (disposeMesh) {
if (this.modelBox != null) { if (this.modelBox != null) {
this.modelBox.dispose(); this.modelBox.dispose();
} else { } else {
this.models[0].dispose(); this.models[0].dispose();
} }
}
else {
console.log("不释放mesh", this.modelBox.name);
}
} }
//设置模型盒子时 //设置模型盒子时
onSetModelBox() { onSetModelBox() {

6
src/app/babylon/view/building-window/building-ui-item.ts

@ -208,7 +208,7 @@ export class BuildingUIItem {
* @param mesh * @param mesh
*/ */
createFacilityByMesh(mesh: AbstractMesh) { createFacilityByMesh(mesh: AbstractMesh) {
FacilityWindow.instance.createFacilityByMesh(mesh, this.buildingInfo); FacilityWindow.instance.createFacilityByMesh(mesh);
} }
@ -217,7 +217,7 @@ export class BuildingUIItem {
* @param mesh * @param mesh
*/ */
createOilingByMesh(mesh: AbstractMesh) { createOilingByMesh(mesh: AbstractMesh) {
FacilityWindow.instance.createOilingByMesh(mesh, this.buildingInfo); FacilityWindow.instance.createOilingByMesh(mesh);
} }
/** /**
@ -225,7 +225,7 @@ export class BuildingUIItem {
* @param mesh * @param mesh
*/ */
createStopByMesh(mesh: AbstractMesh) { createStopByMesh(mesh: AbstractMesh) {
FacilityWindow.instance.createStopByMesh(mesh, this.buildingInfo); FacilityWindow.instance.createStopByMesh(mesh);
} }
/** /**

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

@ -554,7 +554,7 @@ export class FacilityWindow extends UIBase {
* *
* @param mesh * @param mesh
*/ */
createFacilityByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { createFacilityByMesh(mesh: AbstractMesh) {
if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_4)) { if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_4)) {
this.createNewFacilityByMesh(mesh, 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); this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_GF_8);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_35)) { 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)) { 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)) { 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)) { 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)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_SSD)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_SSD)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_SSD);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_TSLX)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_TSLX)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_TSLX);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFF)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFF)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFF);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFQ)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFQ)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFQ);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFS)) { 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.XF_XFT)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFT);
}
else if (TsTool.stringContain(mesh.name, FacilityType.ZD_YG)) {
} }
} }
@ -607,16 +604,39 @@ export class FacilityWindow extends UIBase {
* *
* @param mesh * @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 * @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);
}
} }

2
src/app/pages/plan/plan.component.ts

@ -217,7 +217,7 @@ export class PlanComponent implements OnInit {
clearDevice() { clearDevice() {
let isClear = confirm('您确定要清空吗?') let isClear = confirm('您确定要清空吗?')
if (isClear) { if (isClear) {
ToolbarWindow.instance.clearHomeLessFacilityData() ToolbarWindow.instance.clearAllFacilityDataFromMesh()
} }
} }

0
src/assets/images/facility/in/FHJL.png → src/assets/images/facility/in/XF_MHQ_GF_35.png

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

0
src/assets/images/facility/in/WSXFB.png → src/assets/images/facility/in/XF_MHQ_GF_4.png

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

0
src/assets/images/facility/in/FHFQ.png → src/assets/images/facility/in/XF_MHQ_PT_35.png

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

0
src/assets/images/facility/in/SX.png → src/assets/images/facility/in/XF_MHQ_PT_4.png

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

0
src/assets/images/facility/in/FHM.png → src/assets/images/facility/in/XF_MHT.png

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

0
src/assets/images/facility/in/XFDT.png → src/assets/images/facility/in/XF_TSLX.png

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
src/assets/images/facility/in/PTDT.png → src/assets/images/facility/in/XF_XFCM.png

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

0
src/assets/images/facility/in/SNXHS.png → src/assets/images/facility/in/XF_XFF.png

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
src/assets/images/facility/in/HT.png → src/assets/images/facility/in/XF_XFQ.png

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

0
src/assets/images/facility/in/SSLT.png → src/assets/images/facility/in/XF_XFS.png

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

0
src/assets/images/facility/in/LSXFB.png → src/assets/images/facility/in/XF_XFT.png

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Loading…
Cancel
Save