diff --git a/src/Add-on/ClearCDBrHoleModeling.ts b/src/Add-on/ClearCDBrHoleModeling.ts new file mode 100644 index 000000000..dc3d58010 --- /dev/null +++ b/src/Add-on/ClearCDBrHoleModeling.ts @@ -0,0 +1,41 @@ +import { app } from "../ApplicationServices/Application"; +import { HostApplicationServices } from "../ApplicationServices/HostApplicationServices"; +import { Board } from "../DatabaseServices/Entity/Board"; +import { Command } from "../Editor/CommandMachine"; +import { PromptStatus } from "../Editor/PromptResult"; + +export class Command_ClearCDBrHoleModeling implements Command +{ + async exec() + { + let ssRes = await app.Editor.GetSelection({ Msg: "选择具有拆单尺寸的板,清除它的孔槽:", UseSelect: true }); + if (ssRes.Status !== PromptStatus.OK) return; + + const ents = ssRes.SelectSet.SelectEntityList.filter(e => !e.IsErase && e instanceof Board) as Board[]; + const { partialSplitValueCanTakesEffect } = HostApplicationServices.chaidanOption; + for (let br of ents) + { + if (partialSplitValueCanTakesEffect) + { + if (br.BoardProcessOption.spliteHeight || br.BoardProcessOption.spliteWidth || br.BoardProcessOption.spliteThickness) + { + br.Modeling2D = []; + br.ClearBoardModeling(); + br.ClearAllDrillList(); + br.ClearLayerNails(); + br.ClearRelevance(); + } + } + else + { + if (br.BoardProcessOption.spliteHeight && br.BoardProcessOption.spliteWidth && br.BoardProcessOption.spliteThickness) + { + br.Modeling2D = []; + br.ClearBoardModeling(); + br.ClearLayerNails(); + br.ClearRelevance(); + } + } + } + } +} diff --git a/src/Add-on/DrawDrilling/DrawDrillingTool.ts b/src/Add-on/DrawDrilling/DrawDrillingTool.ts index 25800f17d..f45fa0ee3 100644 --- a/src/Add-on/DrawDrilling/DrawDrillingTool.ts +++ b/src/Add-on/DrawDrilling/DrawDrillingTool.ts @@ -3,6 +3,7 @@ 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"; @@ -1455,9 +1456,19 @@ export class DrawDrillingTool extends Singleton } private IsSplitBoard(board: Board) { - if (board.BoardProcessOption.spliteHeight && board.BoardProcessOption.spliteWidth && board.BoardProcessOption.spliteThickness) - return true; - else false; + 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; + } } private async GetSpliteBoards(brs: Board[]) diff --git a/src/Add-on/DrawDrilling/DrillingReactor.ts b/src/Add-on/DrawDrilling/DrillingReactor.ts index 9b26827b4..88b692d0e 100644 --- a/src/Add-on/DrawDrilling/DrillingReactor.ts +++ b/src/Add-on/DrawDrilling/DrillingReactor.ts @@ -43,6 +43,8 @@ const ForbidReactorCmd = new Set([ //封边 CommandNames.封边属性编辑, + // 板件取消孔槽加工 + CommandNames.ClearCDBrHoleModeling, //对纹组 CommandNames.AlignLineGroup, diff --git a/src/ApplicationServices/HostApplicationServices.ts b/src/ApplicationServices/HostApplicationServices.ts index 02d8c8116..434c904e8 100644 --- a/src/ApplicationServices/HostApplicationServices.ts +++ b/src/ApplicationServices/HostApplicationServices.ts @@ -97,6 +97,7 @@ export class IHostApplicationServices sealValues: '',//封边值列表 hardwareExpressionFormattingAccuracy: 2,//复合实体表达式值格式化精度 partialSplitValueCanTakesEffect: false, + cancelHoleProcessing: false,//填写拆单尺寸板件取消孔槽加工 }; @ProxyValue viewSize = { diff --git a/src/Common/CommandNames.ts b/src/Common/CommandNames.ts index eebe81029..d099a2d5a 100644 --- a/src/Common/CommandNames.ts +++ b/src/Common/CommandNames.ts @@ -399,4 +399,5 @@ export enum CommandNames DeleteAlignLineGroup = "DELETEALIGNLINEGROUP",//删除对纹组 HighlightNode = "HIGHLIGHTNODE",//高亮本节点 HighlightNodeAndChilds = "HIGHLIGHTNODEANDCHILDS",//亮显本节点及子节点 + ClearCDBrHoleModeling = "CLEARCDBRHOLEMODELING",//板件取消孔槽加工 } diff --git a/src/Editor/CommandRegister.ts b/src/Editor/CommandRegister.ts index b58523bb8..e0c35e01a 100644 --- a/src/Editor/CommandRegister.ts +++ b/src/Editor/CommandRegister.ts @@ -216,6 +216,7 @@ import { Command_DrawArcBoard } from "../Add-on/ArcBoard/DrawArcBoard"; import { OneClickInspection } from "../Add-on/BoardInspection/OneClickInspection"; import { ImportCFData } from "../Add-on/CF/Import/CFImport"; import { ChangeColorByRoomCabinet } from "../Add-on/ChangeColorByRoomOrCabinet/ChangeColorByRoomOrCabinet"; +import { Command_ClearCDBrHoleModeling } from "../Add-on/ClearCDBrHoleModeling"; import { Command_RemovePolylineRepeatPos } from "../Add-on/Cmd_RemovePolylineRepeatPos"; import { Command_Modeling } from "../Add-on/Command_Modeling"; import { Command_PickUp2DModelCsgs } from "../Add-on/Command_PickUp2DModelCsgs"; @@ -923,6 +924,9 @@ export function registerCommand() commandMachine.RegisterCommand(CommandNames.Attach, new TemplateAttach()); commandMachine.RegisterCommand(CommandNames.Attach2, new TemplateAttach2()); commandMachine.RegisterCommand(CommandNames.TemplateArray, new TemplateArray()); + + // 填写拆单尺寸板件取消孔槽加工 + commandMachine.RegisterCommand(CommandNames.ClearCDBrHoleModeling, new Command_ClearCDBrHoleModeling()); } export async function LimitCommand() diff --git a/src/Editor/UserConfig.ts b/src/Editor/UserConfig.ts index 838f398f5..0817be4f8 100644 --- a/src/Editor/UserConfig.ts +++ b/src/Editor/UserConfig.ts @@ -128,6 +128,7 @@ export class UserConfig implements IConfigStore hardwareExpressionFormattingAccuracy: 2,//复合实体表达式值格式化精度 partialSplitValueCanTakesEffect: false,//板件属性中填写局部拆单值可生效 xlineLength: 20000, //构造线长度默认使用20000 + cancelHoleProcessing: false,//填写拆单尺寸板件取消孔槽加工 }; @observable viewSize = { minViewHeight: 1e-3, @@ -244,6 +245,7 @@ export class UserConfig implements IConfigStore hardwareExpressionFormattingAccuracy: 2, partialSplitValueCanTakesEffect: false, xlineLength: 20000, + cancelHoleProcessing: false, }); Object.assign(this.textStyleOption, { appointTextHight: false, diff --git a/src/UI/Components/Board/CommonBoardOption.tsx b/src/UI/Components/Board/CommonBoardOption.tsx index f04f35206..071f8b4d8 100644 --- a/src/UI/Components/Board/CommonBoardOption.tsx +++ b/src/UI/Components/Board/CommonBoardOption.tsx @@ -370,6 +370,32 @@ 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(); + } + } + } + app.Editor.ModalManage.Destory(); board.AutoUpdate = oldAutoUpdate; diff --git a/src/UI/Components/CommandPanel/CommandList.ts b/src/UI/Components/CommandPanel/CommandList.ts index 3d9e25f37..b5e0eb13b 100644 --- a/src/UI/Components/CommandPanel/CommandList.ts +++ b/src/UI/Components/CommandPanel/CommandList.ts @@ -3011,7 +3011,15 @@ export const CommandList: ICommand[] = [ chName: "对纹组", chDes: "查看或编辑对纹组", }, - + { + typeId: "cd", + link: "#", + defaultCustom: "CLEARCDBRHOLEMODELING", + command: CommandNames.ClearCDBrHoleModeling, + type: "拆单", + chName: "板件取消孔槽加工", + chDes: "板件取消孔槽加工", + }, // 共享命令 { icon: IconEnum.CommodityManage, diff --git a/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx b/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx index e838c7155..eeb44ca35 100644 --- a/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx +++ b/src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx @@ -1,4 +1,4 @@ -import { Card, Checkbox, Classes, Label, Radio, RadioGroup } from "@blueprintjs/core"; +import { Card, Checkbox, Classes, Label, Radio, RadioGroup, Tooltip } from "@blueprintjs/core"; import { observer } from "mobx-react"; import * as React from 'react'; import { CheckObjectType } from '../../../../Common/CheckoutVaildValue'; @@ -168,6 +168,13 @@ export class ChaiDanPanel extends React.Component checked={userConfig.chaidanOption.partialSplitValueCanTakesEffect} onChange={() => userConfig.chaidanOption.partialSplitValueCanTakesEffect = !userConfig.chaidanOption.partialSplitValueCanTakesEffect} /> + + userConfig.chaidanOption.cancelHoleProcessing = !userConfig.chaidanOption.cancelHoleProcessing} + /> + ); }