!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 { 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);

@ -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;
}

@ -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)

@ -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
}

@ -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)
{

@ -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: "收藏" }),

Loading…
Cancel
Save