|
|
|
@ -138,20 +138,21 @@ export class Command_OpenCabinet implements Command
|
|
|
|
|
{
|
|
|
|
|
for (let i = 0; i < drawerEns.length; i++)
|
|
|
|
|
{
|
|
|
|
|
let ens = drawerEns[i].Template.Object as TemplateRecord;
|
|
|
|
|
while (ens.Name !== "抽屉空间" && ens.Name !== "格子抽")
|
|
|
|
|
let drawerTemp = drawerEns[i].Template?.Object as TemplateRecord;
|
|
|
|
|
if (!drawerTemp) continue;
|
|
|
|
|
while (drawerTemp.Name !== "抽屉空间" && drawerTemp.Name !== "格子抽")
|
|
|
|
|
{
|
|
|
|
|
if (ens.Parent)
|
|
|
|
|
ens = ens.Parent.Object as TemplateRecord;
|
|
|
|
|
if (drawerTemp.Parent)
|
|
|
|
|
drawerTemp = drawerTemp.Parent.Object as TemplateRecord;
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (!ens.Parent) continue;
|
|
|
|
|
if (!drawerTemp.Parent) continue;
|
|
|
|
|
let brBox = new Box3;
|
|
|
|
|
let ocsInv = ens.AllEntitys[0].SpaceOCSInv;
|
|
|
|
|
let drawGroup: Entity[] = ens.AllEntitys;
|
|
|
|
|
let ocsInv = drawerTemp.AllEntitys[0].SpaceOCSInv;
|
|
|
|
|
let drawGroup: Entity[] = drawerTemp.AllEntitys;
|
|
|
|
|
|
|
|
|
|
for (let en of ens.AllEntitys)
|
|
|
|
|
for (let en of drawerTemp.AllEntitys)
|
|
|
|
|
{
|
|
|
|
|
//删除重复节省资源
|
|
|
|
|
if (drawerEns.includes(en) && drawerEns[i] !== en)
|
|
|
|
@ -200,9 +201,10 @@ export class Command_OpenCabinet implements Command
|
|
|
|
|
{
|
|
|
|
|
for (let i = 0; i < doorEns.length; i++)
|
|
|
|
|
{
|
|
|
|
|
let ens = doorEns[i].Template.Object as TemplateRecord;
|
|
|
|
|
let doorGroup: Entity[] = ens.Entitys;
|
|
|
|
|
for (let en of ens.Entitys)
|
|
|
|
|
let doorTemp = doorEns[i].Template?.Object as TemplateRecord;
|
|
|
|
|
if (!doorTemp) continue;
|
|
|
|
|
let doorGroup: Entity[] = doorTemp.Entitys;
|
|
|
|
|
for (let en of doorTemp.Entitys)
|
|
|
|
|
{
|
|
|
|
|
//删除重复节省资源
|
|
|
|
|
if (doorEns.includes(en) && doorEns[i] !== en)
|
|
|
|
@ -211,7 +213,7 @@ export class Command_OpenCabinet implements Command
|
|
|
|
|
handles.splice(handles.indexOf(en), 1);
|
|
|
|
|
else if (holes.includes(en))
|
|
|
|
|
holes.splice(holes.indexOf(en), 1);
|
|
|
|
|
let ocsInv = ens.Entitys[0].SpaceOCSInv;
|
|
|
|
|
let ocsInv = doorTemp.Entitys[0].SpaceOCSInv;
|
|
|
|
|
let enBox = en.GetBoundingBoxInMtx(ocsInv);
|
|
|
|
|
//排钻跟随门板
|
|
|
|
|
arrayRemoveIf(holes, (hole) => IsEntityBelongToDoor(enBox, ocsInv, doorGroup, hole));
|
|
|
|
|