!1860 修复:部分门板隐藏错误问题

pull/1869/MERGE
林三 3 years ago committed by ChenX
parent b8418ec017
commit 5d76303aac

@ -0,0 +1,26 @@
import { IsDoor } from "../../src/Add-on/HideSelect/HideSelectUtils";
import { CADFiler } from "../../src/DatabaseServices/CADFiler";
import { Database } from "../../src/DatabaseServices/Database";
import { Board } from "../../src/DatabaseServices/Entity/Board";
import { BoardOpenDir } from "../../src/UI/Store/BoardInterface";
import { LoadBoardsFromFileData } from "../Utils/LoadEntity.util";
LoadBoardsFromFileData;
test('校验门板类型', () =>
{
let data = require("./door_test.json");
let file = new CADFiler(data);
let db = new Database();
db.FileRead(file);
let ents = db.ModelSpace.Entitys;
for (let ent of ents)
{
expect(IsDoor(ent)).toBe(true);
}
//根据开门方向判断是门板
let br = new Board;
expect(IsDoor(br)).toBe(false);
br.OpenDir = BoardOpenDir.Left;
expect(IsDoor(br)).toBe(true);
});

@ -0,0 +1 @@
[8,108,1,2,1,false,0,1,"",2,2,false,0,1,"Board",8,2,107,false,1,6,103,[1,0,0,0,0,0,1,0,0,-1,0,0,2308.521748878178,18,1866.1599253723398,1],106,0,true,[1,0,0,0,0,1,0,0,0,0,1,0,2308.521748878178,18,1901.1599253723398,1],0,3,1720,433,18,true,"Polyline",8,2,0,false,0,7,0,[1,0,0,0,0,1,0,0,0,0,1,0,0,35,0,1],0,0,true,[1,0,0,0,0,1,0,0,0,0,1,0,0,35,0,1],0,2,4,[0,-35],0,[433,-35],0,[433,1685],0,[0,1685],0,true,0,3,0,0,0,0,0,10,2,"左开门板","","①主卧衣柜","18厘 =欧松板= 星空灰","=欧松板=","星空灰",0,0,"不排",2,0,"1","1","1","1","","","",4,"不排","不排","不排","不排",true,true,1,"jl-无盖铰链","X:0 Y:100,600,1155,1655",0,0,0,0,0,0,1,true,0,0,2,4,false,0,2,4,"TextureTableRecord",2,70,false,4,1,"",2,1002,1002,1,1,0,"",0,0,"TextureTableRecord",2,100,false,4,1,"4B7F9FCF-9404-4A6E-83D6-63C361B0F99C",2,1002,1002,1,1,0,"CAD/images/a2/a2bcece667cc062484723db4a41c98e4.jpg",0,0,"TextureTableRecord",2,101,false,4,1,"FFAF5616-0199-46D2-8A6D-7601E4137C21",2,1002,1002,1,1,0,"CAD/images/35/35c5bfc1f3cb4fbec9d958669bd6be3e.png",0,0,"TextureTableRecord",2,102,false,4,1,"A1E1264A-5920-482D-A4D2-905522C1B8E9",2,1002,1002,1,1,0,"CAD/images/35/35c5bfc1f3cb4fbec9d958669bd6be3e.png",0,0,2,3,false,0,2,2,"PhysicalMaterialRecord",2,71,false,3,1,"默认",9,"#ffffff",false,0,1,true,70,70,0,70,0.2,true,true,true,"","","",false,0,0.5,0.5,0.5,0,0,0,1,1,1,1,0.3,1,0,1,1,1,1,1,1,1,1,1,1,0,"木纹","",1,1,0,0,0,"PhysicalMaterialRecord",2,103,false,3,1,"【墙】莫兰迪灰",9,"#ffffff",false,0,1,true,100,101,0.1,102,1,true,true,true,"【墙】莫兰迪灰","【墙】莫兰迪灰","【墙】莫兰迪灰",false,0,0.5,0.5,0.5,0,0,0,1,1,1,1,0.3,1,0,1,1,1,1,1,1,1,1,1,1,0,"木纹","",1,1,0,0,0,1,0,1,"CommandHistoryRecord",1,"TT",0,2,5,false,0,1,"TemplateSizeBoard",3,2,106,false,5,1,"门板",0,0,0,10,"TemplateParam",2,"L","_L+_ZG+_YG",433,null,"宽",1,null,null,null,0,false,"TemplateParam",2,"W","_W",18,null,"深",1,null,null,null,0,false,"TemplateParam",2,"H","_H+_SG+_XG",1720,null,"高",1,null,null,null,0,false,"TemplateParam",2,"PX","",0,null,null,1,null,null,null,0,false,"TemplateParam",2,"PY","",0,null,null,1,null,null,null,0,false,"TemplateParam",2,"PZ","",0,null,null,1,null,null,null,0,false,"TemplateParam",2,"RX","",0,null,null,1,null,null,null,0,false,"TemplateParam",2,"RY","",0,null,null,1,null,null,null,0,false,"TemplateParam",2,"RZ","",0,null,null,1,null,null,null,0,false,"TemplateParam",2,"BH","",18,null,"板厚",1,null,null,null,0,false,1,107,"",-1,1,2,6,false,0,0,1,2,7,false,0,1,"",2,8,false,0,3,"AmbientLight",8,2,80,false,7,7,0,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0,0,true,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0,2,"rgb(255,255,255)",0.9,true,1,1,1,6500,1,1,false,"DirectionalLight",8,2,81,false,7,7,0,[1,0,0,0,0,1,0,0,0,0,1,0,4000,-4000,4000,1],0,0,true,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0,2,"rgb(255,255,255)",50,false,1,1,1,6500,1,0,true,2,[0,0,0],0.5357,0,"HemisphereLight",8,2,82,false,7,7,0,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0,0,true,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0,2,"rgb(255,255,255)",1,true,1,1,1,6500,1,1,true,2,[1,1,1],false,1,2,9,false,0,0,1,2,10,false,0,1,"",2,11,false,0,0,0]

@ -13,18 +13,17 @@ export function IsDoor(en: Entity)
if (en.Template)
{
let temp = en.Template.Object as TemplateRecord;
return ((temp?.Parent?.Object as TemplateRecord)?.Name === "门板空间");
if (((temp?.Parent?.Object as TemplateRecord)?.Name === "门板空间"))
return true;
}
else
// else //有时候 模块会被破坏,所以模块检测不是唯一标准
if (en instanceof Board)
{
if (en instanceof Board)
{
return en.OpenDir !== BoardOpenDir.None;
}
else if (en instanceof HardwareCompositeEntity)
{
return en.HardwareOption.model.includes("开门");
}
return en.OpenDir !== BoardOpenDir.None;
}
else if (en instanceof HardwareCompositeEntity)
{
return en.HardwareOption.model.includes("开门");
}
return false;
}
@ -63,9 +62,10 @@ export function IsHandle(en: Entity)
if (en.Template)
{
let temp = en.Template.Object as TemplateRecord;
return ((temp?.Parent?.Object as TemplateRecord)?.Name === "拉手空间");
if ((temp?.Parent?.Object as TemplateRecord)?.Name === "拉手空间")
return true;
}
else
// else //有时候 模块会被破坏,所以模块检测不是唯一标准
{
return en.HardwareOption.name.includes("拉手");
}
@ -78,9 +78,10 @@ export function IsHinge(en: Entity)
if (en.Template)
{
let temp = en.Template.Object as TemplateRecord;
return ((temp?.Parent?.Object as TemplateRecord)?.Name === "铰链空间");
if ((temp?.Parent?.Object as TemplateRecord)?.Name === "铰链空间")
return true;
}
else
// else //有时候 模块会被破坏,所以模块检测不是唯一标准
{
return en.HardwareOption.name.includes("铰链");
}

@ -10,8 +10,8 @@ import { PromptStatus } from "../Editor/PromptResult";
import { SelectSetBase } from "../Editor/SelectBase";
import { CheckFilter } from "../Editor/SelectFilter";
import { HideSelectModal } from "../UI/Components/Modal/HideSelectModal";
import { BoardOpenDir } from "../UI/Store/BoardInterface";
import { hideSelectStore } from "../UI/Store/HideSelectStore";
import { IsDoor, IsHinge } from "./HideSelect/HideSelectUtils";
export class Command_HideSelected implements Command
{
@ -133,56 +133,63 @@ export class Command_SwitchDoor implements Command
{
if (!en || DoorCache.has(en.Id.Index)) continue;
if (en.IsErase) continue;
if (!en.Template)
if (IsDoor(en))
{
if (en instanceof Board)
ens.push(en);
let temp = en.Template?.Object as TemplateRecord;
if (!temp) continue;
let doorSpaceTemp = temp.Parent?.Object as TemplateRecord;;
if (doorSpaceTemp)
{
if (en.OpenDir !== BoardOpenDir.None)
for (let id of doorSpaceTemp.Children)
{
ens.push(en);
if (!id || id.IsErase) continue;
let temp = id.Object as TemplateRecord;
if (temp.Name === "铰链空间")
{
ToggleChildren(temp);
}
else
{
ToggleObject(temp);
for (let cid of temp.Children)
{
let temp = cid?.Object as TemplateRecord;
if (temp?.Name === "拉手空间")
{
ToggleChildren(temp);
}
}
}
}
}
else if (en instanceof HardwareCompositeEntity)
else
{
if (en.HardwareOption.model.endsWith("开门板")
|| en.HardwareOption.name.includes("铰链")
|| en.HardwareOption.name.includes("拉手"))
for (let id of temp.Children)
{
ens.push(en);
}
}
continue;
}
let temp = en.Template.Object as TemplateRecord;
if ((temp?.Parent?.Object as TemplateRecord)?.Name === "门板空间")
{
DoorCache.add(en.Id.Index);
ens.push(en);
let doorSpaceTemp = temp.Parent.Object as TemplateRecord;;
for (let id of doorSpaceTemp.Children)
{
if (!id || id.IsErase) continue;
let temp = id.Object as TemplateRecord;
if (temp.Name === "铰链空间")
{
ToggleChildren(temp);
if (!id || id.IsErase) continue;
let childrenTemp = id.Object as TemplateRecord;
if (childrenTemp.Name === "拉手空间")
{
ToggleChildren(childrenTemp);
}
}
else
if (en instanceof Board)
{
ToggleObject(temp);
for (let cid of temp.Children)
for (let hinge of en.RelativeHardware)
{
let temp = cid?.Object as TemplateRecord;
if (temp?.Name === "拉手空间")
{
ToggleChildren(temp);
}
let hardWare = hinge.Object as HardwareCompositeEntity;
if (IsHinge(hardWare))
ens.push(hardWare);
}
}
else if (en instanceof HardwareCompositeEntity)
{
//复合门板待开发
}
}
}
}

Loading…
Cancel
Save