diff --git a/src/Add-on/ClearCDBrHoleModeling.ts b/src/Add-on/ClearCDBrHoleModeling.ts index 29e48f5a2..ff64012f6 100644 --- a/src/Add-on/ClearCDBrHoleModeling.ts +++ b/src/Add-on/ClearCDBrHoleModeling.ts @@ -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(); diff --git a/src/Add-on/CommandFeeding.ts b/src/Add-on/CommandFeeding.ts index 88577b8ca..5510c825b 100644 --- a/src/Add-on/CommandFeeding.ts +++ b/src/Add-on/CommandFeeding.ts @@ -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(); diff --git a/src/Add-on/DrawDrilling/DrawDrillingTool.ts b/src/Add-on/DrawDrilling/DrawDrillingTool.ts index c32e493b5..3e4d3e797 100644 --- a/src/Add-on/DrawDrilling/DrawDrillingTool.ts +++ b/src/Add-on/DrawDrilling/DrawDrillingTool.ts @@ -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[]) diff --git a/src/Add-on/Erp/ErpCommands.ts b/src/Add-on/Erp/ErpCommands.ts index 587e09db3..9285f7434 100644 --- a/src/Add-on/Erp/ErpCommands.ts +++ b/src/Add-on/Erp/ErpCommands.ts @@ -152,6 +152,7 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes) let intSelfBoards = new Set(); 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) { diff --git a/src/Production/Product.ts b/src/Production/Product.ts index ff5ce5743..1f20d7f07 100644 --- a/src/Production/Product.ts +++ b/src/Production/Product.ts @@ -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 = { diff --git a/src/UI/Components/Board/CommonBoardOption.tsx b/src/UI/Components/Board/CommonBoardOption.tsx index 06fef6567..240990058 100644 --- a/src/UI/Components/Board/CommonBoardOption.tsx +++ b/src/UI/Components/Board/CommonBoardOption.tsx @@ -378,32 +378,6 @@ export function AddCommonBoardProps(Com: React.ComponentType } 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(); diff --git a/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx b/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx index eeb44ca35..249b143b4 100644 --- a/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx +++ b/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx @@ -170,7 +170,7 @@ export class ChaiDanPanel extends React.Component /> userConfig.chaidanOption.cancelHoleProcessing = !userConfig.chaidanOption.cancelHoleProcessing} />