!2638 开发:回退复合实体侧面挖孔

pull/2639/head
林三 6 months ago committed by ChenX
parent 410513157b
commit 6cdf6a7020

@ -1,7 +1,6 @@
import { app } from "../../ApplicationServices/Application";
import { CommandNames } from "../../Common/CommandNames";
import { LogType } from "../../Common/Log";
import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
import { Board } from "../../DatabaseServices/Entity/Board";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
import { userConfig } from "../../Editor/UserConfig";
@ -50,9 +49,7 @@ export class AutoCuttingReactor
export async function AutoCutting(isRelevance: boolean, needRelevanceHardware = false)
{
let knifBoards = app.CommandReactor._createObejcts.filter(o => !o.IsErase && o instanceof Board) as Board[];
let hardwareBoardsKnife = app.CommandReactor._createObejcts.filter(o =>
!o.IsErase && (o instanceof HardwareCompositeEntity || o instanceof ExtrudeHole)
) as (HardwareCompositeEntity | ExtrudeHole)[];
let hardwareBoardsKnife = app.CommandReactor._createObejcts.filter(o => !o.IsErase && o instanceof HardwareCompositeEntity) as HardwareCompositeEntity[];
let knifBoardsSet = new Set(knifBoards);//使用set搜索性能更高

@ -67,17 +67,14 @@ export function CuttingBoardByBoard(meats: Board[], knifs: Board[], isRelevance
// down.EndProgress();
}
export async function CuttingBoardByHardware(meats: Board[], hardwares: (HardwareCompositeEntity | ExtrudeHole)[]): Promise<void>
export async function CuttingBoardByHardware(meats: Board[], hardwares: HardwareCompositeEntity[]): Promise<void>
{
let knifeIdMap = new WeakMap<ExtrudeSolid, HardwareCompositeEntity | ExtrudeHole>();
let knifeIdMap = new WeakMap<ExtrudeSolid, HardwareCompositeEntity>();
let hardwareEnts: ExtrudeSolid[] = [];
for (let hardware of hardwares)
{
let es: (ExtrudeHole | ExtrudeSolid)[] = [];
if (hardware instanceof HardwareCompositeEntity)
es = hardware.GetAllEntity(true, e => e instanceof ExtrudeHole || e instanceof ExtrudeSolid) as (ExtrudeHole | ExtrudeSolid)[];
else
es = [hardware];
let es = hardware.GetAllEntity(true, e => e instanceof ExtrudeHole || e instanceof ExtrudeSolid) as (ExtrudeHole | ExtrudeSolid)[];
for (let e of es)
{
let kf: ExtrudeSolid;

@ -1,6 +1,5 @@
import { app } from "../../ApplicationServices/Application";
import { CommandNames } from "../../Common/CommandNames";
import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
import { Board } from "../../DatabaseServices/Entity/Board";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
import { CuttingBoardByHardware } from "./CuttingUtils2";
@ -18,7 +17,7 @@ export class HardwareCuttingReactor
if (!this.EnableHardware && !hardwareCmds.has(cmdName)) return;
let brs = new Set<Board>();
let hardwaresAndExtrudeHoles: (HardwareCompositeEntity | ExtrudeHole)[] = [];
let hardwares: HardwareCompositeEntity[] = [];
for (let e of createObjects)
{
@ -27,18 +26,16 @@ export class HardwareCuttingReactor
if (e instanceof Board)
brs.add(e);
else if (e instanceof HardwareCompositeEntity && e.HardwareOption.isHole)
hardwaresAndExtrudeHoles.push(e);
else if (e instanceof ExtrudeHole && e.isHole)
hardwaresAndExtrudeHoles.push(e);
hardwares.push(e);
}
}
if (hardwaresAndExtrudeHoles.length > 0)
await this.StartReactor(hardwaresAndExtrudeHoles, brs);
if (hardwares.length > 0)
await this.StartReactor(hardwares, brs);
});
}
async StartReactor(hardwares: (HardwareCompositeEntity | ExtrudeHole)[], ents: Set<Board>)
async StartReactor(hardwares: HardwareCompositeEntity[], ents: Set<Board>)
{
let brs: Board[] = [];
for (let ent of app.Database.ModelSpace.Entitys)

@ -20,7 +20,6 @@ import { DragPointType } from "../Entity/DragPointType";
import { ExtrudeContourCurve, ExtrudeSolid } from "../Entity/Extrude";
import { GenUVForWorld } from "../Entity/GenUVForWorld";
import { Polyline } from "../Entity/Polyline";
import { ObjectId } from "../ObjectId";
import { PhysicalMaterialRecord } from "../PhysicalMaterialRecord";
import { Shape } from "../Shape";
import { OBB } from './../../Geometry/OBB/obb';
@ -35,7 +34,6 @@ export class ExtrudeHole extends Hole
protected _knifeRadius: number = 3;
@AutoRecord isHole = true;
@AutoRecord isThrough = false;
@AutoRecord RelevanceBoards: ObjectId[] = [];
get KnifeRadius()
{
@ -490,16 +488,12 @@ export class ExtrudeHole extends Hole
else
this.type = GangDrillType.Ljg;
//回退版本5弃用
if (ver > 4)
{
let count = file.Read();
this.RelevanceBoards.length = 0;
for (let i = 0; i < count; i++)
{
let id = file.ReadSoftObjectId();
if (id)
this.RelevanceBoards.push(id);
}
file.ReadSoftObjectId();
}
this.Update();
@ -515,8 +509,7 @@ export class ExtrudeHole extends Hole
file.Write(this.isThrough);
file.Write(this.type);
file.Write(this.RelevanceBoards.length);
for (let id of this.RelevanceBoards)
file.WriteSoftObjectId(id);
//ver= 5 弃用
file.Write(0);
}
}

@ -433,15 +433,6 @@ export class Board extends ExtrudeSolid
}
}
}
else if (ent instanceof ExtrudeHole)
{
if (ent.isHole)
{
let g = ent.Convert2ExtrudeSolid();
g.__TempIndexVersion__ = { Index: ent.Id.Index, Version: ent.__UpdateVersion__ };
knifs.push(g);
}
}
}
}

@ -2,7 +2,6 @@ import { end } from "xaop";
import { app, ApplicationService } from "../ApplicationServices/Application";
import { CommandNames } from "../Common/CommandNames";
import { Sleep } from "../Common/Sleep";
import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole";
import { CADObject } from "../DatabaseServices/CADObject";
import { CommandHistoryRecord } from "../DatabaseServices/CommandHistoryRecord";
import { CreateObjectData } from "../DatabaseServices/CreateObjectData";
@ -34,7 +33,7 @@ async function UpdateRelevanceGroove(ents: CADObject[])
needUpdateBoardSet.add(id);
needUpdateBoardSet.add(e.Id);//修改逻辑,该实体可能被添加新的关联切割,所以没有更新槽
}
else if (e instanceof HardwareCompositeEntity || e instanceof ExtrudeHole)
else if (e instanceof HardwareCompositeEntity)
{
for (let id of e.RelevanceBoards)
needUpdateBoardSet.add(id);

Loading…
Cancel
Save