From af2b76e4a6e11405a2e64639cfa4b54ff37dacf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=AF=97=E6=B4=A5?= <2723065175@qq.com> Date: Thu, 21 Apr 2022 02:24:21 +0000 Subject: [PATCH] =?UTF-8?q?!1830=20=E4=BC=98=E5=8C=96:=E9=85=92=E6=A0=BC?= =?UTF-8?q?=E8=A1=A5=E6=9D=BF=E6=B7=BB=E5=8A=A0=E6=9D=BF=E5=8E=9A=E7=BB=A7?= =?UTF-8?q?=E6=89=BF=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/DrawBoard/BuildBoardTool.ts | 22 ++++++++++ src/Add-on/DrawWineRack/DrawWineRack.ts | 11 +++++ .../ProgramTempate/TemplateWineRackRecord.ts | 12 +++--- src/DatabaseServices/Template/TempateUtils.ts | 7 ++++ src/Editor/DefaultConfig.ts | 3 +- src/UI/Components/Board/WineRack.tsx | 42 +++++++++++++++---- src/UI/Store/WineRackInterface.ts | 1 + src/UI/Store/WineRackStore.ts | 16 ++++--- 8 files changed, 96 insertions(+), 18 deletions(-) diff --git a/src/Add-on/DrawBoard/BuildBoardTool.ts b/src/Add-on/DrawBoard/BuildBoardTool.ts index d22e91346..eb7e7db15 100644 --- a/src/Add-on/DrawBoard/BuildBoardTool.ts +++ b/src/Add-on/DrawBoard/BuildBoardTool.ts @@ -2,6 +2,7 @@ import { Vector3 } from "three"; import { safeEval } from "../../Common/eval"; import { Log } from "../../Common/Log"; import { Board } from "../../DatabaseServices/Entity/Board"; +import { TemplateWineRackRecord } from "../../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord"; import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; import { MoveMatrix } from "../../Geometry/GeUtils"; import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; @@ -258,3 +259,24 @@ export function ExtendsBoardThickness(temp: TemplateRecord, thickness: number) } } } +export function ExtendsbrThick2(temp: TemplateWineRackRecord) +{ + let bh2Par = temp.GetParam("BH2"); + if (bh2Par) + { + let bh2 = temp.Option.brThick2; + bh2Par.value = bh2; + if (temp.Option.isExtendsBH2) + { + if (temp.Parent) + { + let rootBh = safeEval(temp.Root.GetParam("BH")?.value as string); + bh2Par.expr = rootBh === bh2 ? "$BH" : bh2; + } + } + else + { + bh2Par.expr = ""; + } + } +} diff --git a/src/Add-on/DrawWineRack/DrawWineRack.ts b/src/Add-on/DrawWineRack/DrawWineRack.ts index 986ab41e5..8aa882a97 100644 --- a/src/Add-on/DrawWineRack/DrawWineRack.ts +++ b/src/Add-on/DrawWineRack/DrawWineRack.ts @@ -1,4 +1,6 @@ import { app } from "../../ApplicationServices/Application"; +import { TemplateParam } from "../../DatabaseServices/Template/Param/TemplateParam"; +import { TemplateParamType } from "../../DatabaseServices/Template/Param/TemplateParamType"; import { TemplateWineRackRecord } from "../../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord"; import { SetTemplatePositionAndSetParent } from "../../DatabaseServices/Template/TempateUtils"; import { Command } from "../../Editor/CommandMachine"; @@ -19,6 +21,15 @@ export class DrawWineRack implements Command await userConfigStore.InitWinerackConfig(); let wineRack = new TemplateWineRackRecord().InitBaseParams(); + if (!wineRack.GetParam("BH2")) + { + let bh2 = new TemplateParam(); + bh2.name = "BH2"; + bh2.description = "补板厚"; + bh2.type = TemplateParamType.Float; + bh2.value = wineRack.Option.brThick2; + wineRack.Params.push(bh2); + } wineRack.Option = userConfig.winerackConfig; app.Database.TemplateTable.Append(wineRack); diff --git a/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts b/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts index 57074eccb..773b9064d 100644 --- a/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts +++ b/src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts @@ -35,11 +35,13 @@ export class TemplateWineRackRecord extends TemplateRecord { await super.Update(); - let thickness = this.GetParam("BH")?.value as number; - if (thickness) - { - this.option.boardThick = thickness; - } + let bh = this.GetParam("BH")?.value as number; + if (bh) + this.option.boardThick = bh; + + let bh2 = this.GetParam("BH2")?.value as number; + if (bh2) + this.option.brThick2 = bh2; let wineRack: DrawWineRackTool; if (this.option.type === EWineRackType.Oblique) diff --git a/src/DatabaseServices/Template/TempateUtils.ts b/src/DatabaseServices/Template/TempateUtils.ts index a572d8307..44c636974 100644 --- a/src/DatabaseServices/Template/TempateUtils.ts +++ b/src/DatabaseServices/Template/TempateUtils.ts @@ -1,5 +1,6 @@ import { Intent } from "@blueprintjs/core"; import { Box3, Matrix4, Vector3 } from "three"; +import { ExtendsbrThick2 } from "../../Add-on/DrawBoard/BuildBoardTool"; import { app } from "../../ApplicationServices/Application"; import { arrayRemoveOnce } from "../../Common/ArrayExt"; import { safeEval } from "../../Common/eval"; @@ -46,6 +47,7 @@ import { TemplateStretchScaleBoxAction } from "./Action/TemplateStretchScaleBoxA import { PositioningClampSpace } from './Positioning/PositioningClampSpace'; import { PositioningTemporary } from "./Positioning/PositioningTemporary"; import { TemplateVisualSpace } from "./ProgramTempate/TemplateVisualSpace"; +import { TemplateWineRackRecord } from "./ProgramTempate/TemplateWineRackRecord"; import { TemplateRecord } from "./TemplateRecord"; /** @@ -1359,6 +1361,11 @@ export async function SetTemplatePositionAndSetParent(spaceParse: ISpaceParse, t template.GetParam("BH").expr = "_BH"; } + if (template instanceof TemplateWineRackRecord) + { + ExtendsbrThick2(template); + } + await template.UpdateTemplateTree(); //特殊情况 还没预料到的 (我们已经处理了 (抽屉 门板)(虚拟空间) (酒格 左侧版 层板 立板 背板)(自动生成板) 应该都是没有问题的) diff --git a/src/Editor/DefaultConfig.ts b/src/Editor/DefaultConfig.ts index 2f1a05fc4..f54dc6607 100644 --- a/src/Editor/DefaultConfig.ts +++ b/src/Editor/DefaultConfig.ts @@ -74,7 +74,7 @@ export const DefaultBehindBoardConfig: BehindBoardOption = { Object.freeze(DefaultBehindBoardConfig); export const DefaultWineRackConfig: IWineRackOption = { - version: 2, + version: 3, type: EWineRackType.Oblique, arrayType: EWRackArrayType.ByWidth, fullType: EFullType.ByWidth, @@ -101,6 +101,7 @@ export const DefaultWineRackConfig: IWineRackOption = { isDrawLy: false, isDrawVer: false, brThick2: 18, + isExtendsBH2: false, followNarrow: false, }; Object.freeze(DefaultWineRackConfig); diff --git a/src/UI/Components/Board/WineRack.tsx b/src/UI/Components/Board/WineRack.tsx index 1c7f5bb95..d6d1d7cf0 100644 --- a/src/UI/Components/Board/WineRack.tsx +++ b/src/UI/Components/Board/WineRack.tsx @@ -3,11 +3,14 @@ import { IconNames } from '@blueprintjs/icons'; import { observer } from 'mobx-react'; import * as React from 'react'; import * as xaop from 'xaop'; +import { ExtendsbrThick2 } from '../../../Add-on/DrawBoard/BuildBoardTool'; import { app } from '../../../ApplicationServices/Application'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; import { safeEval } from '../../../Common/eval'; import { KeyBoard } from '../../../Common/KeyEnum'; import { FixedNotZero } from '../../../Common/Utils'; +import { TemplateParam } from '../../../DatabaseServices/Template/Param/TemplateParam'; +import { TemplateParamType } from '../../../DatabaseServices/Template/Param/TemplateParamType'; import { commandMachine, CommandWrap } from '../../../Editor/CommandMachine'; import { userConfig } from '../../../Editor/UserConfig'; import { EFullDir, EFullType, EWineRackType, EWRackArrayType } from '../../Store/WineRackInterface'; @@ -18,6 +21,9 @@ import { AppToaster, ToasterValueError } from '../Toaster'; import { Input5Or4Component, SetBoardDataBlock, SetBoardDataItem } from './BoardCommon'; import { BoardModalType } from './BoardModal'; +const titleLenght: React.CSSProperties = { + width: "3.5rem" +}; @observer export class WineRackModal extends React.Component<{ store?: WineRackStore; }, {}> { @@ -49,7 +55,17 @@ export class WineRackModal extends React.Component<{ store?: WineRackStore; }, { await CommandWrap(async () => { let temp = this.props.store.EditorTemplate; + if (!temp.GetParam("BH2")) + { + let bh2 = new TemplateParam(); + bh2.name = "BH2"; + bh2.description = "补板厚"; + bh2.type = TemplateParamType.Float; + bh2.value = 0; + temp.Params.push(bh2); + } temp.Option = opt; + ExtendsbrThick2(temp); await temp.UpdateTemplateTree(); app.Editor.UpdateScreen(); this.props.store.EditorTemplate = undefined; @@ -340,13 +356,25 @@ export class WineRackModal extends React.Component<{ store?: WineRackStore; }, {
补板
- +
+ + + { + m_Option.isExtendsBH2 = !m_Option.isExtendsBH2; + }} /> +
{ //新的配置 let newConfig: IConfigOption = {}; - this.m_Option.version = 2; newConfig.option = toJS(this.m_Option); return newConfig; } UpdateOption(cof: IConfigOption) { + if (cof.option.version < 2) + { + cof.option.version = 2; + cof.option.followNarrow = false; + } + if (cof.option.version < 3) + { + cof.option.version = 3; + cof.option.isInherit = false; + } 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 = Boolean(cof.option.followNarrow); + } }