|
|
@ -1,36 +1,38 @@
|
|
|
|
|
|
|
|
import { Intent } from "@blueprintjs/core";
|
|
|
|
|
|
|
|
import { observable } from "mobx";
|
|
|
|
import { Box3, Matrix4, Vector3 } from "three";
|
|
|
|
import { Box3, Matrix4, Vector3 } from "three";
|
|
|
|
import { begin } from "xaop";
|
|
|
|
import { begin } from "xaop";
|
|
|
|
import { app } from "../../ApplicationServices/Application";
|
|
|
|
import { app } from "../../ApplicationServices/Application";
|
|
|
|
|
|
|
|
import { appCache } from "../../Common/AppCache";
|
|
|
|
import { arrayLast, arrayRemoveIf } from "../../Common/ArrayExt";
|
|
|
|
import { arrayLast, arrayRemoveIf } from "../../Common/ArrayExt";
|
|
|
|
import { EBoardKeyList } from "../../Common/BoardKeyList";
|
|
|
|
import { EBoardKeyList } from "../../Common/BoardKeyList";
|
|
|
|
import { safeEval } from "../../Common/eval";
|
|
|
|
import { safeEval } from "../../Common/eval";
|
|
|
|
|
|
|
|
import { Log } from "../../Common/Log";
|
|
|
|
import { Singleton } from "../../Common/Singleton";
|
|
|
|
import { Singleton } from "../../Common/Singleton";
|
|
|
|
|
|
|
|
import { Sleep } from "../../Common/Sleep";
|
|
|
|
|
|
|
|
import { StoreageKeys } from "../../Common/StoreageKeys";
|
|
|
|
import { FixedNotZero } from "../../Common/Utils";
|
|
|
|
import { FixedNotZero } from "../../Common/Utils";
|
|
|
|
import { CylinderHole, GangDrillType } from "../../DatabaseServices/3DSolid/CylinderHole";
|
|
|
|
import { CylinderHole, GangDrillType } from "../../DatabaseServices/3DSolid/CylinderHole";
|
|
|
|
|
|
|
|
import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
|
|
|
|
|
|
|
|
import { Hole } from "../../DatabaseServices/3DSolid/Hole";
|
|
|
|
|
|
|
|
import { Contour } from "../../DatabaseServices/Contour";
|
|
|
|
import { Board } from "../../DatabaseServices/Entity/Board";
|
|
|
|
import { Board } from "../../DatabaseServices/Entity/Board";
|
|
|
|
|
|
|
|
import { Entity } from "../../DatabaseServices/Entity/Entity";
|
|
|
|
|
|
|
|
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
|
|
|
|
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
|
|
|
|
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
|
|
|
|
import { GroupRecord } from "../../DatabaseServices/GroupTableRecord";
|
|
|
|
import { GroupRecord } from "../../DatabaseServices/GroupTableRecord";
|
|
|
|
import { ObjectId } from "../../DatabaseServices/ObjectId";
|
|
|
|
import { ObjectId } from "../../DatabaseServices/ObjectId";
|
|
|
|
import { IsPointInPolyLine } from "../../DatabaseServices/PointInPolyline";
|
|
|
|
import { IsPointInPolyLine } from "../../DatabaseServices/PointInPolyline";
|
|
|
|
|
|
|
|
import { Shape } from "../../DatabaseServices/Shape";
|
|
|
|
import { userConfig } from "../../Editor/UserConfig";
|
|
|
|
import { userConfig } from "../../Editor/UserConfig";
|
|
|
|
|
|
|
|
import { Box3Ext } from "../../Geometry/Box";
|
|
|
|
import { CollisionDetection } from "../../Geometry/DrillParse/CollisionDetection";
|
|
|
|
import { CollisionDetection } from "../../Geometry/DrillParse/CollisionDetection";
|
|
|
|
import { Face } from "../../Geometry/DrillParse/Face";
|
|
|
|
import { Face } from "../../Geometry/DrillParse/Face";
|
|
|
|
import { equaln, MoveMatrix, ZAxis, isParallelTo, YAxis } from "../../Geometry/GeUtils";
|
|
|
|
import { equaln, isParallelTo, MoveMatrix, YAxis, ZAxis } from "../../Geometry/GeUtils";
|
|
|
|
|
|
|
|
import { AppToaster } from "../../UI/Components/Toaster";
|
|
|
|
import { FaceDirection } from "../../UI/Store/BoardInterface";
|
|
|
|
import { FaceDirection } from "../../UI/Store/BoardInterface";
|
|
|
|
|
|
|
|
import { DownPanelStore } from "../../UI/Store/DownPanelStore";
|
|
|
|
import { DrillingOption, SpacingType } from "../../UI/Store/drillInterface";
|
|
|
|
import { DrillingOption, SpacingType } from "../../UI/Store/drillInterface";
|
|
|
|
import { appCache } from "../../Common/AppCache";
|
|
|
|
|
|
|
|
import { StoreageKeys } from "../../Common/StoreageKeys";
|
|
|
|
|
|
|
|
import { Entity } from "../../DatabaseServices/Entity/Entity";
|
|
|
|
|
|
|
|
import { Box3Ext } from "../../Geometry/Box";
|
|
|
|
|
|
|
|
import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
|
|
|
|
|
|
|
|
import { Hole } from "../../DatabaseServices/3DSolid/Hole";
|
|
|
|
|
|
|
|
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
|
|
|
|
|
|
|
|
import { Shape } from "../../DatabaseServices/Shape";
|
|
|
|
|
|
|
|
import { Contour } from "../../DatabaseServices/Contour";
|
|
|
|
|
|
|
|
import { observable } from "mobx";
|
|
|
|
|
|
|
|
import { Log } from "../../Common/Log";
|
|
|
|
|
|
|
|
import { AppToaster } from "../../UI/Components/Toaster";
|
|
|
|
|
|
|
|
import { Intent } from "@blueprintjs/core";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export class DrawDrillingTool extends Singleton
|
|
|
|
export class DrawDrillingTool extends Singleton
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -764,9 +766,9 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private StartGangDrill(brs: Board[])
|
|
|
|
private async StartGangDrill(brs: Board[]): Promise<void>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let checkRes = new CollisionDetection(this.GetSpliteBoards(brs));
|
|
|
|
let checkRes = new CollisionDetection(await this.GetSpliteBoards(brs));
|
|
|
|
|
|
|
|
|
|
|
|
//清理掉已经存在的排钻
|
|
|
|
//清理掉已经存在的排钻
|
|
|
|
this.ClearExitDrilling(brs);
|
|
|
|
this.ClearExitDrilling(brs);
|
|
|
@ -826,7 +828,7 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**分类并排钻 */
|
|
|
|
/**分类并排钻 */
|
|
|
|
ClassifyAndDrilling(brList: Board[] | Set<Board>)
|
|
|
|
async ClassifyAndDrilling(brList: Board[] | Set<Board>): Promise<void>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (brList instanceof Set)
|
|
|
|
if (brList instanceof Set)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -839,7 +841,9 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
for (let [, bs] of brMap)
|
|
|
|
for (let [, bs] of brMap)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (bs.length > 1)
|
|
|
|
if (bs.length > 1)
|
|
|
|
this.StartGangDrill(bs);
|
|
|
|
await this.StartGangDrill(bs);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await Sleep(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// if (this._collsionFaces.length > 0)
|
|
|
|
// if (this._collsionFaces.length > 0)
|
|
|
@ -851,15 +855,28 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
intent: Intent.WARNING,
|
|
|
|
intent: Intent.WARNING,
|
|
|
|
}, "holecollsion");
|
|
|
|
}, "holecollsion");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private GetSpliteBoards(brs: Board[])
|
|
|
|
private async GetSpliteBoards(brs: Board[])
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
//进度条
|
|
|
|
|
|
|
|
let down = DownPanelStore.GetInstance() as DownPanelStore;
|
|
|
|
|
|
|
|
down.StartProgress("分裂:");
|
|
|
|
|
|
|
|
|
|
|
|
let brList: Board[] = [];
|
|
|
|
let brList: Board[] = [];
|
|
|
|
|
|
|
|
let i = 0;
|
|
|
|
for (let e of brs)
|
|
|
|
for (let e of brs)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let bs = e.SplitBoards;
|
|
|
|
let bs = e.SplitBoards;
|
|
|
|
bs.forEach(b => b.TempData = e.TempData);
|
|
|
|
bs.forEach(b => b.TempData = e.TempData);
|
|
|
|
brList.push(...bs);
|
|
|
|
brList.push(...bs);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i++;
|
|
|
|
|
|
|
|
if (i % 30 === 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
down.progress = Math.max(0.1, i / brs.length);
|
|
|
|
|
|
|
|
await Sleep(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
down.EndProgress();
|
|
|
|
return brList;
|
|
|
|
return brList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
DrillIsCollsion(b1: Box3Ext, b2: Box3Ext)
|
|
|
|
DrillIsCollsion(b1: Box3Ext, b2: Box3Ext)
|
|
|
|