!2825 优化:拆单时提示取消孔槽加工

pull/2838/MERGE
钱若寒 3 months ago committed by ChenX
parent 5510d50034
commit d1bbaa85c6

@ -20,6 +20,7 @@ export class Command_ClearCDBrHoleModeling implements Command
if (br.BoardProcessOption.spliteHeight || br.BoardProcessOption.spliteWidth || br.BoardProcessOption.spliteThickness)
{
br.Modeling2D = [];
br.Modeling3D = [];
br.ClearBoardModeling();
br.ClearAllDrillList();
br.ClearLayerNails();
@ -32,7 +33,9 @@ export class Command_ClearCDBrHoleModeling implements Command
if (br.BoardProcessOption.spliteHeight && br.BoardProcessOption.spliteWidth && br.BoardProcessOption.spliteThickness)
{
br.Modeling2D = [];
br.Modeling3D = [];
br.ClearBoardModeling();
br.ClearAllDrillList();
br.ClearLayerNails();
br.ClearRelevance();
br.ClearSideModeling();

@ -1,5 +1,6 @@
import { Box3, Matrix4, Vector3 } from "three";
import { app } from "../ApplicationServices/Application";
import { HostApplicationServices } from "../ApplicationServices/HostApplicationServices";
import { Draw } from "../Common/Draw";
import { Intent } from "../Common/Toaster";
import { DimStyleKeyCode } from "../DatabaseServices/DimStyle/DimstyleKeyCodeEnum";
@ -265,7 +266,14 @@ export class FeedingCommand implements Command
{
const { offsetTanslation: offset, curveBoardModeling } = info;
const modeling = [...br.BoardModeling, ...curveBoardModeling];
const [L, W, H] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
if ((HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (HostApplicationServices.chaidanOption.cancelHoleProcessing)
{
return;
}
}
for (let m of modeling)
{
let c = m.shape.Outline.Curve.Clone();

@ -3,7 +3,6 @@ import { observable } from "mobx";
import { Box3, Matrix4, Vector3 } from "three";
import { begin } from "xaop";
import { app } from "../../ApplicationServices/Application";
import { HostApplicationServices } from "../../ApplicationServices/HostApplicationServices";
import { appCache } from "../../Common/AppCache";
import { arrayLast, arrayRemoveIf } from "../../Common/ArrayExt";
import { EBoardKeyList } from "../../Common/BoardKeyList";
@ -1467,19 +1466,9 @@ export class DrawDrillingTool extends Singleton
}
private IsSplitBoard(board: Board)
{
const { partialSplitValueCanTakesEffect, cancelHoleProcessing } = HostApplicationServices.chaidanOption;
if (partialSplitValueCanTakesEffect && cancelHoleProcessing)
{
if (board.BoardProcessOption.spliteHeight || board.BoardProcessOption.spliteWidth || board.BoardProcessOption.spliteThickness)
return true;
else false;
}
else
{
if (board.BoardProcessOption.spliteHeight && board.BoardProcessOption.spliteWidth && board.BoardProcessOption.spliteThickness)
return true;
else false;
}
if (board.BoardProcessOption.spliteHeight && board.BoardProcessOption.spliteWidth && board.BoardProcessOption.spliteThickness)
return true;
else false;
}
private async GetSpliteBoards(brs: Board[])

@ -152,6 +152,7 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
let intSelfBoards = new Set<Board>();
let minBoardCount = 0;
let chaidanCount = 0;
let cancelHoleProcessing: boolean = false;
const boardList = GetSelectionBoards(selction.selectEntityList);
const interference = await InterferenceCheck(boardList);
@ -177,6 +178,7 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
{
chaidanCount++;
}
if (!intSelfBoards.has(b))
{
if (BoardIsShort(b))
@ -192,6 +194,14 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
intSelfBoards.add(br);
}
}
// 拆单值有效的板件勾选取消孔槽加工
if (HostApplicationServices.chaidanOption.cancelHoleProcessing)
{
if ((HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
cancelHoleProcessing = true;
}
}
}
if (chaidanCount)
{
@ -205,6 +215,17 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
return;
}
}
if (cancelHoleProcessing)
{
let res = await AppConfirm.show({
intent: Intent.WARNING,
message: `选择的拆单板件有填写拆单尺寸,将取消加工相关板件的孔、槽、异形,是否继续提交操作?`,
});
if (!res)
{
return;
}
}
if (minBoardCount)
{
@ -284,6 +305,7 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
});
return;
}
let parseData = await new ErpParseData().GetCadData(boardList, [...metalsList]);
if (!parseData)
{

@ -468,7 +468,16 @@ export namespace Production
let allModeling = GetModelingFromCustomDrill(br);
let modeling = getModelings([...br.BoardModeling, ...allModeling.modeling, ...curveBoardModeling]).filter(f => f.feeding.length > 0);
// 拆单值有效的板件勾选取消孔槽加工
const [L, W, H] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
if ((HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (HostApplicationServices.chaidanOption.cancelHoleProcessing)
{
modeling.length = 0;
allModeling.sideModeling.length = 0;
}
}
return { modeling, sideModeling: allModeling.sideModeling };
}
@ -598,6 +607,16 @@ export namespace Production
frontBackHoles: [],
sideHoles: []
};
const { partialSplitValueCanTakesEffect, cancelHoleProcessing } = HostApplicationServices.chaidanOption;
// 拆单值有效的板件勾选取消孔槽加工
const [L, W, H] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
if ((partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (cancelHoleProcessing)
{
return data;
}
}
let brNormal = br.Normal;
// 性能优化的解析板件网洞类
@ -609,8 +628,17 @@ export namespace Production
offsetTanslation = ParseArcBoardHoles(br, offsetTanslation);
}
for (let [, driss] of br.DrillList)
for (let [key, driss] of br.DrillList)
{
let linkBoard = key.Object as Board;
const [L, W, H] = [linkBoard.BoardProcessOption.spliteHeight, linkBoard.BoardProcessOption.spliteWidth, linkBoard.BoardProcessOption.spliteThickness];
if ((partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (cancelHoleProcessing)
{
continue;
}
}
for (let dris of driss)
{
for (let dId of dris)
@ -653,6 +681,15 @@ export namespace Production
if (!nid || !nid.Object || nid.IsErase)
continue;
let nail = nid.Object as CylinderHole;
let linkBoard = nail.MId.Object as Board;
const [L, W, H] = [linkBoard.BoardProcessOption.spliteHeight, linkBoard.BoardProcessOption.spliteWidth, linkBoard.BoardProcessOption.spliteThickness];
if ((partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (cancelHoleProcessing)
{
continue;
}
}
if (!isParallelTo(nail.Normal, brNormal, CanDrawHoleFuzz)) continue;
let sp = nail.Position.applyMatrix4(br.OCSInv);
@ -1301,6 +1338,15 @@ export namespace Production
export function Get2DModeing(br: Board, offset: Vector3)
{
let res: I2DModeling[] = [];
// 拆单值有效的板件勾选取消孔槽加工
const [L, W, H] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
if ((HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (HostApplicationServices.chaidanOption.cancelHoleProcessing)
{
return res;
}
}
let tmtx = MoveMatrix(offset.clone().negate());
for (let m of br.Modeling2D)
{
@ -1317,6 +1363,15 @@ export namespace Production
export function Get3DModeing(br: Board, offset: Vector3)
{
let res: I3DModeling[] = [];
// 拆单值有效的板件勾选取消孔槽加工
const [L, W, H] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
if ((HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect && (L || W || H)) || (L && W && H))
{
if (HostApplicationServices.chaidanOption.cancelHoleProcessing)
{
return res;
}
}
for (let m of br.Modeling3D)
{
let d: I3DModeling = {

@ -378,32 +378,6 @@ export function AddCommonBoardProps(Com: React.ComponentType<ICommonOptionProps>
}
board.Clear2DPathCache();
// 填写拆单尺寸板件取消孔槽加工
const { partialSplitValueCanTakesEffect, cancelHoleProcessing } = HostApplicationServices.chaidanOption;
if (partialSplitValueCanTakesEffect && cancelHoleProcessing)
{
if (board.BoardProcessOption.spliteHeight || board.BoardProcessOption.spliteWidth || board.BoardProcessOption.spliteThickness)
{
board.Modeling2D = [];
board.ClearBoardModeling();
board.ClearLayerNails();
board.ClearRelevance();
}
}
else
{
if (board.BoardProcessOption.spliteHeight && board.BoardProcessOption.spliteWidth && board.BoardProcessOption.spliteThickness)
{
if (cancelHoleProcessing)
{
board.Modeling2D = [];
board.ClearBoardModeling();
board.ClearLayerNails();
board.ClearRelevance();
}
}
}
//有拆单尺寸都清除侧面造型
if (board.BoardProcessOption.spliteHeight || board.BoardProcessOption.spliteWidth || board.BoardProcessOption.spliteThickness)
board.ClearSideModeling();

@ -170,7 +170,7 @@ export class ChaiDanPanel extends React.Component
/>
<Tooltip content={"请检查填写了拆单尺寸且有孔槽的板件"}>
<Checkbox
label="填写拆单尺寸板件取消孔槽加工"
label="填写拆单尺寸板件拆单时取消孔槽加工"
checked={userConfig.chaidanOption.cancelHoleProcessing}
onChange={() => userConfig.chaidanOption.cancelHoleProcessing = !userConfig.chaidanOption.cancelHoleProcessing}
/>

Loading…
Cancel
Save