Browse Source

建筑内设备获取与清除

dev
刘向辉 3 years ago
parent
commit
0f9b669815
  1. 23
      src/app/babylon/controller/config-manager.ts
  2. 18
      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. 10
      src/app/babylon/model/info/model/model-info-building.ts
  6. 10
      src/app/babylon/model/info/model/model-info-facility.ts
  7. 27
      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. 6
      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 { 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

18
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();
}
}
}

3
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("保存单位成功");
}

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",
/**
*
*/
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",
/**
* 线
*/

10
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);
}

10
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);
}
}

27
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() {

6
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);
}
/**

58
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);
}
}

6
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()
}
}

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