|
|
@ -4,7 +4,7 @@ import { arrayRemoveIf } from '../Common/ArrayExt';
|
|
|
|
import { UpdateDraw } from '../Common/Status';
|
|
|
|
import { UpdateDraw } from '../Common/Status';
|
|
|
|
import { ObjectSnapMode } from '../Editor/ObjectSnapMode';
|
|
|
|
import { ObjectSnapMode } from '../Editor/ObjectSnapMode';
|
|
|
|
import { Box3Ext } from '../Geometry/Box';
|
|
|
|
import { Box3Ext } from '../Geometry/Box';
|
|
|
|
import { equaln, equalv3, MoveMatrix, rotatePoint, cZeroVec } from '../Geometry/GeUtils';
|
|
|
|
import { equaln, equalv3, MoveMatrix, rotatePoint, cZeroVec, isParallelTo } from '../Geometry/GeUtils';
|
|
|
|
import ThreeBSP from '../Geometry/ThreeCSG';
|
|
|
|
import ThreeBSP from '../Geometry/ThreeCSG';
|
|
|
|
import { RenderType } from '../GraphicsSystem/RenderType';
|
|
|
|
import { RenderType } from '../GraphicsSystem/RenderType';
|
|
|
|
import { BoardProcessOption, ComposingType, DrillType, LinesType, PXLFaceType } from '../UI/Store/BoardInterface';
|
|
|
|
import { BoardProcessOption, ComposingType, DrillType, LinesType, PXLFaceType } from '../UI/Store/BoardInterface';
|
|
|
@ -414,7 +414,33 @@ export class Board extends Entity
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return this.m_Shape.Explode().map(cu => cu.ApplyMatrix(this.OCS));
|
|
|
|
return this.m_Shape.Explode().map(cu => cu.ApplyMatrix(this.OCS));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Join(target: this): boolean
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (equaln(this.m_Thickness, target.m_Thickness)
|
|
|
|
|
|
|
|
&& isParallelTo(this.Normal, target.Normal)
|
|
|
|
|
|
|
|
&& this.IsCoplaneTo(target))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
this.WriteAllObjectRecord();
|
|
|
|
|
|
|
|
let cloneTar = target.Clone();
|
|
|
|
|
|
|
|
let mat = this.OCSInv.multiply(target.OCS)
|
|
|
|
|
|
|
|
cloneTar.m_Shape.ApplyMatrix(mat);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let shapes = this.m_Shape.UnionBoolOperation(cloneTar.m_Shape);
|
|
|
|
|
|
|
|
if (shapes.length === 1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cloneTar.m_BoardModeling.forEach(m =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
m.shape.ApplyMatrix(mat);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.m_BoardModeling.push(...cloneTar.m_BoardModeling);
|
|
|
|
|
|
|
|
this.Shape = shapes[0];
|
|
|
|
|
|
|
|
this.UpdateOutlineShape();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
RotateBoard(rox: number, roy: number, roz: number)
|
|
|
|
RotateBoard(rox: number, roy: number, roz: number)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
this.WriteAllObjectRecord();
|
|
|
|
this.WriteAllObjectRecord();
|
|
|
@ -689,7 +715,6 @@ export class Board extends Entity
|
|
|
|
private UpdateBoardShape()
|
|
|
|
private UpdateBoardShape()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let deleteModel: Set<IModeling> = new Set();
|
|
|
|
let deleteModel: Set<IModeling> = new Set();
|
|
|
|
|
|
|
|
|
|
|
|
for (let m of this.m_BoardModeling)
|
|
|
|
for (let m of this.m_BoardModeling)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let shapeZ = m.shape.Outline.Curve.Position.z;
|
|
|
|
let shapeZ = m.shape.Outline.Curve.Position.z;
|
|
|
@ -733,6 +758,10 @@ export class Board extends Entity
|
|
|
|
|
|
|
|
|
|
|
|
arrayRemoveIf(this.m_BoardModeling, m => deleteModel.has(m));
|
|
|
|
arrayRemoveIf(this.m_BoardModeling, m => deleteModel.has(m));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.UpdateOutlineShape();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private UpdateOutlineShape()
|
|
|
|
|
|
|
|
{
|
|
|
|
//源形状min应在0点
|
|
|
|
//源形状min应在0点
|
|
|
|
let min = this.m_Shape.BoundingBox.min;
|
|
|
|
let min = this.m_Shape.BoundingBox.min;
|
|
|
|
if (!equalv3(min, new Vector3()))
|
|
|
|
if (!equalv3(min, new Vector3()))
|
|
|
@ -746,8 +775,8 @@ export class Board extends Entity
|
|
|
|
|
|
|
|
|
|
|
|
this.ApplyMatrix(
|
|
|
|
this.ApplyMatrix(
|
|
|
|
MoveMatrix(min.applyMatrix4(new Matrix4().extractRotation(this.OCS))));
|
|
|
|
MoveMatrix(min.applyMatrix4(new Matrix4().extractRotation(this.OCS))));
|
|
|
|
|
|
|
|
this.Update(UpdateDraw.Geometry);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D
|
|
|
|
InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D
|
|
|
|
{
|
|
|
|
{
|
|
|
|