diff --git a/src/Add-on/BoardEditor/UpdateBoardInfos.ts b/src/Add-on/BoardEditor/UpdateBoardInfos.ts index d6b29814c..0e54a2823 100644 --- a/src/Add-on/BoardEditor/UpdateBoardInfos.ts +++ b/src/Add-on/BoardEditor/UpdateBoardInfos.ts @@ -11,6 +11,7 @@ import { UpdateBoardInfoModal } from "../../UI/Components/Board/UpdateBoardInfos import { AppToaster } from "../../UI/Components/Toaster"; import { DRILL_KEYS } from "../../UI/Store/BoardFindInterface"; import { updateBoardInfoStore } from "../../UI/Store/UpdateBoardInfoStore"; +import { CuttingBoardByBoard } from "../BoardCutting/CuttingUtils2"; //根据板件名改属性 export class UpdateBoardInfos implements Command @@ -32,6 +33,8 @@ export class UpdateBoardInfos implements Command const nameOptionMap = toJS(updateBoardInfoStore.nameOptionMap, { exportMapsAsObjects: false }); const currentOption = nameOptionMap.get(updateBoardInfoStore.currentBoardName); + let knifBoards: Board[] = []; + let knifrefBoards: Board[] = []; for (let br of brs) { @@ -39,16 +42,56 @@ export class UpdateBoardInfos implements Command { const option = nameOptionMap.get(br.Name); if (option) + { UpdateBoardInfos.ModifyBr(br, option); + if (option.condition.autoCutOption.isAutoCut) + { + if (option.condition.autoCutOption.isRelevance) + knifrefBoards.push(br); + else + knifBoards.push(br); + } + } } else { if (currentOption && br.Name === updateBoardInfoStore.currentBoardName) + { UpdateBoardInfos.ModifyBr(br, currentOption); + if (currentOption.condition.autoCutOption.isAutoCut) + { + if (currentOption.condition.autoCutOption.isRelevance) + knifrefBoards.push(br); + else + knifBoards.push(br); + } + } } } - }); + if (knifBoards.length > 0) + { + let meatBoards: Board[] = []; + let boards = new Set(knifBoards); + for (let ent of app.Database.ModelSpace.Entitys) + { + if (!ent.IsErase && ent instanceof Board && !boards.has(ent)) + meatBoards.push(ent); + } + CuttingBoardByBoard(meatBoards, knifBoards, false); + } + if (knifrefBoards.length > 0) + { + let meatBoards: Board[] = []; + let boards = new Set(knifrefBoards); + for (let ent of app.Database.ModelSpace.Entitys) + { + if (!ent.IsErase && ent instanceof Board && !boards.has(ent)) + meatBoards.push(ent); + } + CuttingBoardByBoard(meatBoards, knifrefBoards); + } + }); } static ModifyBr(br: Board, option: IUpdateBoardInfosOption) { diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index 8cac6a544..54f602667 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -665,7 +665,7 @@ export const DefaultCurve2RecOption: Curve2RecOption = { Object.freeze(DefaultCurve2RecOption); export const DefaultUpdateInfoOption: IUpdateBoardInfosOption = { - version: 1, + version: 2, [EBoardKeyList.BrName]: "", [EBoardKeyList.RoomName]: "", [EBoardKeyList.CabinetName]: "", @@ -712,6 +712,7 @@ export const DefaultUpdateInfoOption: IUpdateBoardInfosOption = { leftDrill: true, rightDrill: true, isChaiDan: true, + autoCutOption: { isAutoCut: false, isRelevance: false } } }; diff --git a/src/UI/Components/Board/UpdateBoardInfointerface.ts b/src/UI/Components/Board/UpdateBoardInfointerface.ts index 0d205a9e2..0cb962980 100644 --- a/src/UI/Components/Board/UpdateBoardInfointerface.ts +++ b/src/UI/Components/Board/UpdateBoardInfointerface.ts @@ -1,5 +1,5 @@ import { EBoardKeyList } from "../../../Common/BoardKeyList"; -import { ComposingType, FaceDirection, IBaseOption, LinesType } from "../../Store/BoardInterface"; +import { ComposingType, FaceDirection, IBaseOption, IDrawBoardAutoCutOption, LinesType } from "../../Store/BoardInterface"; export interface IUpdateBoardInfosOption extends IBaseOption { @@ -53,4 +53,5 @@ export interface IUpdateInfoCondition leftDrill: boolean; rightDrill: boolean; isChaiDan: boolean; + autoCutOption: IDrawBoardAutoCutOption; } diff --git a/src/UI/Components/Board/UpdateBoardInfos.tsx b/src/UI/Components/Board/UpdateBoardInfos.tsx index ce1093d42..9a66baeb7 100644 --- a/src/UI/Components/Board/UpdateBoardInfos.tsx +++ b/src/UI/Components/Board/UpdateBoardInfos.tsx @@ -18,7 +18,7 @@ import { PopoverButton } from '../Common/PopoverButton'; import { CommonModal } from '../Modal/ModalContainer'; import { ModalState } from '../Modal/ModalInterface'; import { ToasterInput } from '../Toaster'; -import { Notes } from './BoardCommon'; +import { AutoCutCheckbox, Notes } from './BoardCommon'; import { MatColorCom, SealDrillCom } from './BoardFindCommon'; import { BoardModalType } from './BoardModal'; import { InitRectBoardDrillOption } from './CommonBoardOption'; @@ -235,6 +235,7 @@ export class UpdateBoardInfoModal extends React.Component option.isChaiDan = !option.isChaiDan} /> +