!1263 修复:酒格格子抽干涉问题

pull/1263/MERGE
ZoeLeeFZ 4 years ago committed by ChenX
parent 56f2da8aaf
commit 17690f487a

File diff suppressed because one or more lines are too long

@ -10,9 +10,9 @@ import { HardwareCompositeEntity } from "../DatabaseServices/Hardware/HardwareCo
import { ObjectId } from "../DatabaseServices/ObjectId"; import { ObjectId } from "../DatabaseServices/ObjectId";
import { TemplateLatticeRecord } from "../DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord"; import { TemplateLatticeRecord } from "../DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord";
import { TemplateWineRackRecord } from "../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord"; import { TemplateWineRackRecord } from "../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord";
import { Box3Ext } from "../Geometry/Box"; import { equaln, equalv3 } from "../Geometry/GeUtils";
import { equalv3 } from "../Geometry/GeUtils";
import { OBB } from "../Geometry/OBB/obb"; import { OBB } from "../Geometry/OBB/obb";
import { PlaneExt } from "../Geometry/Plane";
import { ColorMaterial } from "./ColorPalette"; import { ColorMaterial } from "./ColorPalette";
import { Log } from "./Log"; import { Log } from "./Log";
import { Sleep } from "./Sleep"; import { Sleep } from "./Sleep";
@ -54,8 +54,7 @@ export class CheckInterfereTool
for (let i = 0; i < ens.length; i++) for (let i = 0; i < ens.length; i++)
{ {
let e1 = ens[i]; let e1 = ens[i];
if (e1.Template && (e1.Template.Object instanceof TemplateWineRackRecord || e1.Template.Object instanceof TemplateLatticeRecord)) let IsSkipEntity = e1.Template && (e1.Template.Object instanceof TemplateWineRackRecord || e1.Template.Object instanceof TemplateLatticeRecord);
continue;
if (i % 50 === 0) if (i % 50 === 0)
{ {
@ -101,7 +100,7 @@ export class CheckInterfereTool
if (RelevanceBoards && RelevanceBoards.has(e2.Id)) if (RelevanceBoards && RelevanceBoards.has(e2.Id))
continue; continue;
if (e2.Template && (e2.Template.Object instanceof TemplateWineRackRecord || e2.Template.Object instanceof TemplateLatticeRecord)) if (IsSkipEntity && e2.Template && (e2.Template.Object instanceof TemplateWineRackRecord || e2.Template.Object instanceof TemplateLatticeRecord))
continue; continue;
if (!box1.intersectsBox(this.GetBox(e2))) if (!box1.intersectsBox(this.GetBox(e2)))
@ -177,14 +176,27 @@ export class CheckInterfereTool
} }
let hasSolid = false; let hasSolid = false;
let count = 0; let count = 0;
let plane = new PlaneExt();
for (let [k, pts] of ptsMap) for (let [k, pts] of ptsMap)
{ {
let box = new Box3Ext().setFromPoints(pts); let nor = new Vector3().fromArray(k.split(",").map(s => parseFloat(s)));
if (box.isSolid(1e-3)) plane.setFromNormalAndCoplanarPoint(nor, pts[0]);
//超过3点不在一个面上,一般可以围城实体
let outCount = 0;
for (let p of pts)
{ {
count++; let dist = plane.distanceToPoint(p);
hasSolid = true; if (!equaln(dist, 0, 1e-3))
ptsMap.delete(k); {
outCount++;
if (outCount >= 3)
{
count++;
hasSolid = true;
ptsMap.delete(k);
break;
}
}
} }
} }
if (hasSolid) if (hasSolid)

@ -55,6 +55,12 @@ export class TemplateLeftRightBoardRecord extends TemplateRecord
lBr.Thickness = thickness; lBr.Thickness = thickness;
rBr.Thickness = thickness; rBr.Thickness = thickness;
if (!this._CacheSpaceSize)
{
console.warn("左右侧板模板数据错误无法更新");
return;
}
lBr.Height = this._CacheSpaceSize.z; lBr.Height = this._CacheSpaceSize.z;
rBr.Height = this._CacheSpaceSize.z; rBr.Height = this._CacheSpaceSize.z;

Loading…
Cancel
Save