From a174183564d66a80eec122f4d60e2187d00b7797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=89?= <940119273@qq.com> Date: Mon, 20 Feb 2023 09:24:51 +0000 Subject: [PATCH] =?UTF-8?q?!2095=20=E6=96=B0=E5=A2=9E:=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=9D=BF=E6=9D=90=E8=B4=A8=E5=8F=AF=E4=BB=A5=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=20=20=20=20#368?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DatabaseServices/BlockTableRecord.ts | 6 ++++++ src/DatabaseServices/Database.ts | 6 +++++- src/DatabaseServices/Entity/Entity.ts | 2 ++ src/DatabaseServices/MaterialTable.ts | 23 +++++++++++++++++++++++ src/DatabaseServices/SymbolTable.ts | 2 +- src/UI/Components/Asset.tsx | 6 ++++++ 6 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/DatabaseServices/BlockTableRecord.ts b/src/DatabaseServices/BlockTableRecord.ts index d2436d372..d356b3afd 100644 --- a/src/DatabaseServices/BlockTableRecord.ts +++ b/src/DatabaseServices/BlockTableRecord.ts @@ -4,6 +4,7 @@ import { Factory } from './CADFactory'; import { CADFiler } from './CADFiler'; import { Database } from './Database'; import { Dimension } from './Dimension/Dimension'; +import { Board } from './Entity/Board'; import { Entity } from './Entity/Entity'; import { ObjectCollection } from './ObjectCollection'; import { RoomFlatFloor } from './Room/Entity/Flat/RoomFlatFloor'; @@ -57,6 +58,11 @@ export class BlockTableRecord extends SymbolTableRecord if (!entity.Material) entity.Material = this._db.MaterialTable.CurFloorMtl; } + else if (entity instanceof Board) + { + if (!entity.Material) + entity.Material = this._db.MaterialTable.CurBoardMtl; + } } this.EntityCol.Append(entity, isCheckObjectCleanly); diff --git a/src/DatabaseServices/Database.ts b/src/DatabaseServices/Database.ts index 3f580f2fb..6047d8389 100644 --- a/src/DatabaseServices/Database.ts +++ b/src/DatabaseServices/Database.ts @@ -122,6 +122,7 @@ export class Database this.DefaultMaterial.bumpMap = texture.Id; this.MaterialTable.Add(this.DefaultMaterial); + this.MaterialTable.CurBoardMtl = this.DefaultMaterial.Id; texture.Update(); } @@ -148,7 +149,10 @@ export class Database this.DefaultMaterial = this.GetObjectId(71)?.Object as PhysicalMaterialRecord ?? this.DefaultMaterial; this.DefaultMaterial.Update(); - HostApplicationServices.DefaultMeshMaterial = this.DefaultMaterial.Material; + + HostApplicationServices.DefaultMeshMaterial = (this.MaterialTable.CurBoardMtl?.Object as PhysicalMaterialRecord)?.Material ?? this.DefaultMaterial.Material; + HostApplicationServices.DefaultWallMaterial = (this.MaterialTable.CurWallMtl?.Object as PhysicalMaterialRecord)?.Material ?? this.DefaultMaterial.Material; + HostApplicationServices.DefaultFloorMaterial = (this.MaterialTable.CurFloorMtl?.Object as PhysicalMaterialRecord)?.Material ?? this.DefaultMaterial.Material; HostApplicationServices.CurrentDimStyle = this.DimStyleTable.Current; } diff --git a/src/DatabaseServices/Entity/Entity.ts b/src/DatabaseServices/Entity/Entity.ts index 1656abe2e..3d306f315 100644 --- a/src/DatabaseServices/Entity/Entity.ts +++ b/src/DatabaseServices/Entity/Entity.ts @@ -734,6 +734,8 @@ export class Entity extends CADObject super.ReadFile(file); this._Color = file.Read(); this._MaterialId = file.ReadHardObjectId(); + if (!this._MaterialId) + this._MaterialId = file.database?.DefaultMaterial?.Id; this._Matrix.fromArray(file.Read()); if (ver === 2) diff --git a/src/DatabaseServices/MaterialTable.ts b/src/DatabaseServices/MaterialTable.ts index d5e2bd4a7..9fa4cd36f 100644 --- a/src/DatabaseServices/MaterialTable.ts +++ b/src/DatabaseServices/MaterialTable.ts @@ -8,9 +8,11 @@ export class MaterialTable extends SymbolTable { protected _CurFloorMtl: ObjectId;//默认地板材质 protected _CurWallMtl: ObjectId;//默认墙体材质 + protected _CurDrawMtl: ObjectId;//默认实体材质 get CurFloorMtl() { return this._CurFloorMtl; } get CurWallMtl() { return this._CurWallMtl; } + get CurBoardMtl() { return this._CurDrawMtl; } set CurFloorMtl(id) @@ -32,6 +34,15 @@ export class MaterialTable extends SymbolTable if (this._db && this._db.IsDefaultDatabase) HostApplicationServices.DefaultWallMaterial = (id.Object as PhysicalMaterialRecord).Material; } + set CurBoardMtl(id) + { + if (id === this._CurDrawMtl) return; + this.WriteAllObjectRecord(); + this._CurDrawMtl = id; + + if (this._db && this._db.IsDefaultDatabase) + HostApplicationServices.DefaultMeshMaterial = (id.Object as PhysicalMaterialRecord).Material; + } get Materials() { @@ -58,6 +69,13 @@ export class MaterialTable extends SymbolTable return super.AllocateName(name); } + Destroy(): void + { + super.Destroy(); + this._CurDrawMtl = undefined; + this._CurFloorMtl = undefined; + this._CurWallMtl = undefined; + } //#region -------------------------File------------------------- //对象从文件中读取数据,初始化自身 override ReadFile(file: CADFiler) @@ -69,6 +87,9 @@ export class MaterialTable extends SymbolTable this._CurFloorMtl = file.ReadObjectId(); this._CurWallMtl = file.ReadObjectId(); } + + if (this._FileVer > 3) + this._CurDrawMtl = file.ReadHardObjectId(); } //对象将自身数据写入到文件. @@ -78,6 +99,8 @@ export class MaterialTable extends SymbolTable file.WriteObjectId(this._CurFloorMtl); file.WriteObjectId(this._CurWallMtl); + + file.WriteObjectId(this._CurDrawMtl); } //#endregion } diff --git a/src/DatabaseServices/SymbolTable.ts b/src/DatabaseServices/SymbolTable.ts index 549d59523..359d19123 100644 --- a/src/DatabaseServices/SymbolTable.ts +++ b/src/DatabaseServices/SymbolTable.ts @@ -106,7 +106,7 @@ export class SymbolTable extends CADObject WriteFile(file: CADFiler) { super.WriteFile(file); - file.Write(3); + file.Write(4); file.Write(this.Symbols.size); for (let [key, record] of this.Symbols) { diff --git a/src/UI/Components/Asset.tsx b/src/UI/Components/Asset.tsx index 4d3f43396..be16c9d19 100644 --- a/src/UI/Components/Asset.tsx +++ b/src/UI/Components/Asset.tsx @@ -290,6 +290,11 @@ export class Asset extends React.Component<{ app.Database.MaterialTable.CurWallMtl = material.Id; break; } + case CurDefMtlType.Draw: + { + app.Database.MaterialTable.CurBoardMtl = material.Id; + break; + } } }, "设置默认材质"); }; @@ -366,6 +371,7 @@ export class Asset extends React.Component<{ React.createElement(MenuItem, { onClick: this.handleApply, text: "应用到当前选择实体" }), React.createElement(MenuItem, { onClick: this.highLightEntity, text: "显示应用当前材质的实体" }), React.createElement(MenuItem, { onClick: this.ApplyUseCurBrsGoodInfo, text: "一键更新板件板材" }), + React.createElement(MenuItem, { onClick: () => this.SetCurDefMtl(CurDefMtlType.Draw), text: "设置为默认板块材质" }), React.createElement(MenuItem, { onClick: () => this.SetCurDefMtl(CurDefMtlType.Wall), text: "设置为默认墙体材质" }), React.createElement(MenuItem, { onClick: () => this.SetCurDefMtl(CurDefMtlType.Floor), text: "设置为默认地面材质" }), React.createElement(MenuItem, { onClick: this.handleCollection, text: "收藏" }),