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

@ -1,5 +1,6 @@
import { Box3, Matrix4, Vector3 } from "three"; import { Box3, Matrix4, Vector3 } from "three";
import { app } from "../ApplicationServices/Application"; import { app } from "../ApplicationServices/Application";
import { HostApplicationServices } from "../ApplicationServices/HostApplicationServices";
import { Draw } from "../Common/Draw"; import { Draw } from "../Common/Draw";
import { Intent } from "../Common/Toaster"; import { Intent } from "../Common/Toaster";
import { DimStyleKeyCode } from "../DatabaseServices/DimStyle/DimstyleKeyCodeEnum"; import { DimStyleKeyCode } from "../DatabaseServices/DimStyle/DimstyleKeyCodeEnum";
@ -265,7 +266,14 @@ export class FeedingCommand implements Command
{ {
const { offsetTanslation: offset, curveBoardModeling } = info; const { offsetTanslation: offset, curveBoardModeling } = info;
const modeling = [...br.BoardModeling, ...curveBoardModeling]; 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) for (let m of modeling)
{ {
let c = m.shape.Outline.Curve.Clone(); let c = m.shape.Outline.Curve.Clone();

@ -3,7 +3,6 @@ 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 { HostApplicationServices } from "../../ApplicationServices/HostApplicationServices";
import { appCache } from "../../Common/AppCache"; 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";
@ -1467,19 +1466,9 @@ export class DrawDrillingTool extends Singleton
} }
private IsSplitBoard(board: Board) private IsSplitBoard(board: Board)
{ {
const { partialSplitValueCanTakesEffect, cancelHoleProcessing } = HostApplicationServices.chaidanOption; if (board.BoardProcessOption.spliteHeight && board.BoardProcessOption.spliteWidth && board.BoardProcessOption.spliteThickness)
if (partialSplitValueCanTakesEffect && cancelHoleProcessing) return true;
{ else false;
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;
}
} }
private async GetSpliteBoards(brs: Board[]) private async GetSpliteBoards(brs: Board[])

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

@ -468,7 +468,16 @@ export namespace Production
let allModeling = GetModelingFromCustomDrill(br); let allModeling = GetModelingFromCustomDrill(br);
let modeling = getModelings([...br.BoardModeling, ...allModeling.modeling, ...curveBoardModeling]).filter(f => f.feeding.length > 0); 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 }; return { modeling, sideModeling: allModeling.sideModeling };
} }
@ -598,6 +607,16 @@ export namespace Production
frontBackHoles: [], frontBackHoles: [],
sideHoles: [] 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; let brNormal = br.Normal;
// 性能优化的解析板件网洞类 // 性能优化的解析板件网洞类
@ -609,8 +628,17 @@ export namespace Production
offsetTanslation = ParseArcBoardHoles(br, offsetTanslation); 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 dris of driss)
{ {
for (let dId of dris) for (let dId of dris)
@ -653,6 +681,15 @@ export namespace Production
if (!nid || !nid.Object || nid.IsErase) if (!nid || !nid.Object || nid.IsErase)
continue; continue;
let nail = nid.Object as CylinderHole; 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; if (!isParallelTo(nail.Normal, brNormal, CanDrawHoleFuzz)) continue;
let sp = nail.Position.applyMatrix4(br.OCSInv); let sp = nail.Position.applyMatrix4(br.OCSInv);
@ -1301,6 +1338,15 @@ export namespace Production
export function Get2DModeing(br: Board, offset: Vector3) export function Get2DModeing(br: Board, offset: Vector3)
{ {
let res: I2DModeling[] = []; 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()); let tmtx = MoveMatrix(offset.clone().negate());
for (let m of br.Modeling2D) for (let m of br.Modeling2D)
{ {
@ -1317,6 +1363,15 @@ export namespace Production
export function Get3DModeing(br: Board, offset: Vector3) export function Get3DModeing(br: Board, offset: Vector3)
{ {
let res: I3DModeling[] = []; 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) for (let m of br.Modeling3D)
{ {
let d: I3DModeling = { let d: I3DModeling = {

@ -378,32 +378,6 @@ export function AddCommonBoardProps(Com: React.ComponentType<ICommonOptionProps>
} }
board.Clear2DPathCache(); 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) if (board.BoardProcessOption.spliteHeight || board.BoardProcessOption.spliteWidth || board.BoardProcessOption.spliteThickness)
board.ClearSideModeling(); board.ClearSideModeling();

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

Loading…
Cancel
Save