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

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

Loading…
Cancel
Save