diff --git a/__test__/Winerack/winerack.test.ts b/__test__/Winerack/winerack.test.ts index 0eec13d8f..5e6880344 100644 --- a/__test__/Winerack/winerack.test.ts +++ b/__test__/Winerack/winerack.test.ts @@ -36,6 +36,7 @@ const option: IWineRackOption = { isDrawLy: false, isDrawVer: false, brThick2: 18, + followNarrow: false, }; describe("酒格功能测试", () => diff --git a/src/Add-on/DrawWineRack/DrawWinRackTool.ts b/src/Add-on/DrawWineRack/DrawWinRackTool.ts index dd61668aa..f5d189b42 100644 --- a/src/Add-on/DrawWineRack/DrawWinRackTool.ts +++ b/src/Add-on/DrawWineRack/DrawWinRackTool.ts @@ -1,11 +1,11 @@ import { Vector3 } from "three"; +import { EBoardKeyList } from "../../Common/BoardKeyList"; import { safeEval } from "../../Common/eval"; import { Singleton } from "../../Common/Singleton"; import { Board } from "../../DatabaseServices/Entity/Board"; import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; -import { DrillType, FaceDirection, IHighSealedItem, BoardType } from "../../UI/Store/BoardInterface"; +import { BoardType, DrillType, FaceDirection, IHighSealedItem } from "../../UI/Store/BoardInterface"; import { EFullDir, EFullType, EWRackArrayType, IWineRackOption } from "../../UI/Store/WineRackInterface"; -import { EBoardKeyList } from "../../Common/BoardKeyList"; export const SIN45 = Math.sin(Math.PI / 4); @@ -126,6 +126,13 @@ export class DrawWineRackTool extends Singleton length += (config.leftCut + config.rightCut); position.add(new Vector3(actWidth + config.rightCut, -config.frontCut, actHeight + config.topCut)); } + //补板跟随 + if (config.followNarrow) + { + //处理前缩 + position.add(new Vector3(0, config.frontCut)); + width -= config.frontCut; + } let br = Board.CreateBoard(length, width, config.brThick2); this.GetBoardProcessOption(br); br.BoardProcessOption.bigHoleDir = FaceDirection.Back; @@ -150,6 +157,13 @@ export class DrawWineRackTool extends Singleton br.BoardProcessOption.bigHoleDir = FaceDirection.Back; position.x += actWidth; } + //补板跟随 + if (config.followNarrow) + { + br.WriteAllObjectRecord(); + position.y += config.frontCut; + br.Width -= config.frontCut; + } //这里要跟外面平 position.y -= config.frontCut; diff --git a/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts b/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts index d478d9ae9..41ed7c7be 100644 --- a/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts +++ b/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts @@ -113,11 +113,14 @@ export class TemplateWineRackRecord extends TemplateRecord this.option.isDrawLy = file.Read(); this.option.isDrawVer = file.Read(); this.option.brThick2 = file.Read(); + + if (ver > 1) + this.option.followNarrow = file.Read(); } //对象将自身数据写入到文件. WriteFile(file: CADFiler) { - file.Write(1); + file.Write(2); super.WriteFile(file); file.Write(this.option.type); file.Write(this.option.arrayType); @@ -148,6 +151,7 @@ export class TemplateWineRackRecord extends TemplateRecord file.Write(this.option.isDrawLy); file.Write(this.option.isDrawVer); file.Write(this.option.brThick2); + file.Write(this.option.followNarrow); } //#endregion } diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index 7823f94be..640dc19d7 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -73,7 +73,7 @@ export const DefaultBehindBoardConfig: BehindBoardOption = { Object.freeze(DefaultBehindBoardConfig); export const DefaultWineRackConfig: IWineRackOption = { - version: 1, + version: 2, type: EWineRackType.Oblique, arrayType: EWRackArrayType.ByWidth, fullType: EFullType.ByWidth, @@ -100,6 +100,7 @@ export const DefaultWineRackConfig: IWineRackOption = { isDrawLy: false, isDrawVer: false, brThick2: 18, + followNarrow: false, }; Object.freeze(DefaultWineRackConfig); diff --git a/src/UI/Components/Board/UserConfig.tsx b/src/UI/Components/Board/UserConfig.tsx index 80239a512..eed85dca6 100644 --- a/src/UI/Components/Board/UserConfig.tsx +++ b/src/UI/Components/Board/UserConfig.tsx @@ -28,6 +28,7 @@ export interface IConfigOption doorsInfo?: (IDrawerInfo | IDoorInfo)[]; processGroupCategory?: string[];//加工组(工序组)数据 autoCutOption?: IDrawBoardAutoCutOption;//绘制板件时是否自动切割&&关联切割 + followNarrow?: boolean;//酒格补板是否内缩 other?: any; } diff --git a/src/UI/Components/Board/WineRack.tsx b/src/UI/Components/Board/WineRack.tsx index c392bda6e..e1f0e008b 100644 --- a/src/UI/Components/Board/WineRack.tsx +++ b/src/UI/Components/Board/WineRack.tsx @@ -1,22 +1,22 @@ +import { Button, Checkbox, Classes, H5, Intent, Radio, RadioGroup } from '@blueprintjs/core'; +import { IconNames } from '@blueprintjs/icons'; import { observer } from 'mobx-react'; import * as React from 'react'; import * as xaop from 'xaop'; -import { Button, Classes, H5, Checkbox, RadioGroup, Radio, Intent } from '@blueprintjs/core'; -import { WineRackStore } from '../../Store/WineRackStore'; -import { SetBoardDataBlock, SetBoardDataItem, Input5Or4Component } from './BoardCommon'; -import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; -import { EWineRackType, EWRackArrayType, EFullType, EFullDir } from '../../Store/WineRackInterface'; -import { IconNames } from '@blueprintjs/icons'; import { app } from '../../../ApplicationServices/Application'; -import { commandMachine, CommandWrap } from '../../../Editor/CommandMachine'; -import { BoardModalType } from './BoardModal'; -import { AppToaster, ToasterValueError } from '../Toaster'; +import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; +import { safeEval } from '../../../Common/eval'; import { KeyBoard } from '../../../Common/KeyEnum'; import { FixedNotZero } from '../../../Common/Utils'; +import { commandMachine, CommandWrap } from '../../../Editor/CommandMachine'; import { userConfig } from '../../../Editor/UserConfig'; -import { safeEval } from '../../../Common/eval'; -import { CommonModal } from '../Modal/ModalContainer'; +import { EFullDir, EFullType, EWineRackType, EWRackArrayType } from '../../Store/WineRackInterface'; +import { WineRackStore } from '../../Store/WineRackStore'; import { GetCompoentObjectIdString } from '../ComponentObjectId'; +import { CommonModal } from '../Modal/ModalContainer'; +import { AppToaster, ToasterValueError } from '../Toaster'; +import { Input5Or4Component, SetBoardDataBlock, SetBoardDataItem } from './BoardCommon'; +import { BoardModalType } from './BoardModal'; @observer export class WineRackModal extends React.Component<{ store?: WineRackStore; }, {}> @@ -373,6 +373,15 @@ export class WineRackModal extends React.Component<{ store?: WineRackStore; }, { m_Option.isDrawVer = !m_Option.isDrawVer; }} /> + + { + m_Option.followNarrow = !m_Option.followNarrow; + }} + /> } diff --git a/src/UI/Store/WineRackInterface.ts b/src/UI/Store/WineRackInterface.ts index 90fe5f900..7ac4d18e8 100644 --- a/src/UI/Store/WineRackInterface.ts +++ b/src/UI/Store/WineRackInterface.ts @@ -1,5 +1,5 @@ -import { IBaseOption } from "./BoardInterface"; import { EBoardKeyList } from "../../Common/BoardKeyList"; +import { IBaseOption } from "./BoardInterface"; export enum EWineRackType { @@ -57,6 +57,7 @@ export interface IWineRackOption extends IBaseOption isDrawLy: boolean; isDrawVer: boolean; brThick2: number; //补板厚 + followNarrow: boolean;//酒格补板前缩跟随 } export interface IR2WROption diff --git a/src/UI/Store/WineRackStore.ts b/src/UI/Store/WineRackStore.ts index a4cb461da..d5d76187c 100644 --- a/src/UI/Store/WineRackStore.ts +++ b/src/UI/Store/WineRackStore.ts @@ -10,7 +10,7 @@ import { IWineRackOption } from "./WineRackInterface"; export class WineRackStore extends BoardStore { EditorTemplate: TemplateWineRackRecord; - @observable m_Option: IWineRackOption = Object.assign({}, DefaultWineRackConfig); + @observable m_Option: IWineRackOption = Object.assign({ }, DefaultWineRackConfig); HasInvailValue() { return CheckoutValid.HasInvailValue(this.UIOption, CheckObjectType.WR); @@ -23,7 +23,8 @@ export class WineRackStore extends BoardStore SaveConfig() { //新的配置 - let newConfig: IConfigOption = {}; + let newConfig: IConfigOption = { }; + this.m_Option.version = 2; newConfig.option = toJS(this.m_Option); return newConfig; } @@ -32,5 +33,9 @@ export class WineRackStore extends BoardStore Object.assign(this.m_Option, cof.option); if (this.m_UiOption) Object.assign(this.m_UiOption, DataAdapter.ConvertUIData(cof.option)); + if (cof.option.version < 2) + this.m_Option.followNarrow = false; + else + this.m_Option.followNarrow = cof.option.followNarrow; } }