!2095 新增:默认板材质可以自定义 #368

pull/2112/head
林三 2 years ago committed by ChenX
parent 2fc4bed8cd
commit a174183564

@ -4,6 +4,7 @@ import { Factory } from './CADFactory';
import { CADFiler } from './CADFiler'; import { CADFiler } from './CADFiler';
import { Database } from './Database'; import { Database } from './Database';
import { Dimension } from './Dimension/Dimension'; import { Dimension } from './Dimension/Dimension';
import { Board } from './Entity/Board';
import { Entity } from './Entity/Entity'; import { Entity } from './Entity/Entity';
import { ObjectCollection } from './ObjectCollection'; import { ObjectCollection } from './ObjectCollection';
import { RoomFlatFloor } from './Room/Entity/Flat/RoomFlatFloor'; import { RoomFlatFloor } from './Room/Entity/Flat/RoomFlatFloor';
@ -57,6 +58,11 @@ export class BlockTableRecord extends SymbolTableRecord
if (!entity.Material) if (!entity.Material)
entity.Material = this._db.MaterialTable.CurFloorMtl; 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); this.EntityCol.Append(entity, isCheckObjectCleanly);

@ -122,6 +122,7 @@ export class Database
this.DefaultMaterial.bumpMap = texture.Id; this.DefaultMaterial.bumpMap = texture.Id;
this.MaterialTable.Add(this.DefaultMaterial); this.MaterialTable.Add(this.DefaultMaterial);
this.MaterialTable.CurBoardMtl = this.DefaultMaterial.Id;
texture.Update(); texture.Update();
} }
@ -148,7 +149,10 @@ export class Database
this.DefaultMaterial = this.GetObjectId(71)?.Object as PhysicalMaterialRecord ?? this.DefaultMaterial; this.DefaultMaterial = this.GetObjectId(71)?.Object as PhysicalMaterialRecord ?? this.DefaultMaterial;
this.DefaultMaterial.Update(); 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; HostApplicationServices.CurrentDimStyle = this.DimStyleTable.Current;
} }

@ -734,6 +734,8 @@ export class Entity extends CADObject
super.ReadFile(file); super.ReadFile(file);
this._Color = file.Read(); this._Color = file.Read();
this._MaterialId = file.ReadHardObjectId(); this._MaterialId = file.ReadHardObjectId();
if (!this._MaterialId)
this._MaterialId = file.database?.DefaultMaterial?.Id;
this._Matrix.fromArray(file.Read()); this._Matrix.fromArray(file.Read());
if (ver === 2) if (ver === 2)

@ -8,9 +8,11 @@ export class MaterialTable extends SymbolTable
{ {
protected _CurFloorMtl: ObjectId;//默认地板材质 protected _CurFloorMtl: ObjectId;//默认地板材质
protected _CurWallMtl: ObjectId;//默认墙体材质 protected _CurWallMtl: ObjectId;//默认墙体材质
protected _CurDrawMtl: ObjectId;//默认实体材质
get CurFloorMtl() { return this._CurFloorMtl; } get CurFloorMtl() { return this._CurFloorMtl; }
get CurWallMtl() { return this._CurWallMtl; } get CurWallMtl() { return this._CurWallMtl; }
get CurBoardMtl() { return this._CurDrawMtl; }
set CurFloorMtl(id) set CurFloorMtl(id)
@ -32,6 +34,15 @@ export class MaterialTable extends SymbolTable
if (this._db && this._db.IsDefaultDatabase) if (this._db && this._db.IsDefaultDatabase)
HostApplicationServices.DefaultWallMaterial = (id.Object as PhysicalMaterialRecord).Material; 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() get Materials()
{ {
@ -58,6 +69,13 @@ export class MaterialTable extends SymbolTable
return super.AllocateName(name); return super.AllocateName(name);
} }
Destroy(): void
{
super.Destroy();
this._CurDrawMtl = undefined;
this._CurFloorMtl = undefined;
this._CurWallMtl = undefined;
}
//#region -------------------------File------------------------- //#region -------------------------File-------------------------
//对象从文件中读取数据,初始化自身 //对象从文件中读取数据,初始化自身
override ReadFile(file: CADFiler) override ReadFile(file: CADFiler)
@ -69,6 +87,9 @@ export class MaterialTable extends SymbolTable
this._CurFloorMtl = file.ReadObjectId(); this._CurFloorMtl = file.ReadObjectId();
this._CurWallMtl = 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._CurFloorMtl);
file.WriteObjectId(this._CurWallMtl); file.WriteObjectId(this._CurWallMtl);
file.WriteObjectId(this._CurDrawMtl);
} }
//#endregion //#endregion
} }

@ -106,7 +106,7 @@ export class SymbolTable extends CADObject
WriteFile(file: CADFiler) WriteFile(file: CADFiler)
{ {
super.WriteFile(file); super.WriteFile(file);
file.Write(3); file.Write(4);
file.Write(this.Symbols.size); file.Write(this.Symbols.size);
for (let [key, record] of this.Symbols) for (let [key, record] of this.Symbols)
{ {

@ -290,6 +290,11 @@ export class Asset extends React.Component<{
app.Database.MaterialTable.CurWallMtl = material.Id; app.Database.MaterialTable.CurWallMtl = material.Id;
break; 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.handleApply, text: "应用到当前选择实体" }),
React.createElement(MenuItem, { onClick: this.highLightEntity, text: "显示应用当前材质的实体" }), React.createElement(MenuItem, { onClick: this.highLightEntity, text: "显示应用当前材质的实体" }),
React.createElement(MenuItem, { onClick: this.ApplyUseCurBrsGoodInfo, 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.Wall), text: "设置为默认墙体材质" }),
React.createElement(MenuItem, { onClick: () => this.SetCurDefMtl(CurDefMtlType.Floor), text: "设置为默认地面材质" }), React.createElement(MenuItem, { onClick: () => this.SetCurDefMtl(CurDefMtlType.Floor), text: "设置为默认地面材质" }),
React.createElement(MenuItem, { onClick: this.handleCollection, text: "收藏" }), React.createElement(MenuItem, { onClick: this.handleCollection, text: "收藏" }),

Loading…
Cancel
Save