diff --git a/src/Add-on/DrawWineRack/DrawWineRack.ts b/src/Add-on/DrawWineRack/DrawWineRack.ts index 2124aa8af..36b361c2b 100644 --- a/src/Add-on/DrawWineRack/DrawWineRack.ts +++ b/src/Add-on/DrawWineRack/DrawWineRack.ts @@ -1,9 +1,12 @@ -import { Command } from "../../Editor/CommandMachine"; -import { PointSelectSpaceClamp } from "../../Geometry/SpaceParse/PointSelectSpaceClamp"; -import { DrawObliqueWineRackTool } from "./DrawObliqueWineRackTool"; -import { DrawUprightWineRackTool } from "./DrawUprightWineRackTool"; import { app } from "../../ApplicationServices/Application"; +import { PositioningClampSpace } from "../../DatabaseServices/Template/Positioning/PositioningClampSpace"; +import { GetDeepestTemplate } from "../../DatabaseServices/Template/TempateUtils"; +import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; +import { TemplateWineRackRecord } from "../../DatabaseServices/Template/TemplateWineRackRecord"; +import { Command } from "../../Editor/CommandMachine"; import { userConfig } from "../../Editor/UserConfig"; +import { ClampSpaceParse } from "../../Geometry/SpaceParse/ClampSpaceParse"; +import { PointSelectSpaceClamp } from "../../Geometry/SpaceParse/PointSelectSpaceClamp"; import { userConfigStore } from "../../UI/Store/UserConfigStore"; export class DrawWineRack implements Command @@ -17,25 +20,31 @@ export class DrawWineRack implements Command if (!userConfig.winerackConfig) await userConfigStore.InitWinerackConfig(); + + let wineRack = new TemplateWineRackRecord().InitBaseParams(); + Object.assign(wineRack.option, userConfig.winerackConfig); + app.Database.TemplateTable.Append(wineRack); + let space = selectSpace.SpaceParse; - const tool = DrawUprightWineRackTool.GetInstance() as DrawUprightWineRackTool; - tool.Parse(space, userConfig.winerackConfig); - tool.boardlist.forEach(b => app.Database.ModelSpace.Append(b)); - } -} -export class DrawWineRack2 implements Command -{ - async exec() - { - let selectSpace = new PointSelectSpaceClamp(); - await selectSpace.Select(); - if (!selectSpace.ParseOK) - return; - if (!userConfig.winerackConfig) - await userConfigStore.InitWinerackConfig(); - let space = selectSpace.SpaceParse; - const tool = DrawObliqueWineRackTool.GetInstance() as DrawObliqueWineRackTool; - tool.Parse(space, userConfig.winerackConfig); - tool.boardlist.forEach(b => app.Database.ModelSpace.Append(b)); + + let templateSource: TemplateRecord = GetDeepestTemplate(space.Boards); + if (templateSource) + templateSource.Children.push(wineRack.Id); + + if (space instanceof ClampSpaceParse) + { + let positioning = new PositioningClampSpace(); + positioning.FromSpaceParse(space); + wineRack.Positioning = positioning; + await wineRack.UpdateTemplateTree(); + } + else + { + wineRack.LParam.expr = space.Size.x; + wineRack.WParam.expr = space.Size.y; + wineRack.HParam.expr = space.Size.z; + + await wineRack.UpdateTemplateTree(); + } } } diff --git a/src/DatabaseServices/Template/TemplateWineRackRecord.ts b/src/DatabaseServices/Template/TemplateWineRackRecord.ts index ee7f13702..f3d80e7e7 100644 --- a/src/DatabaseServices/Template/TemplateWineRackRecord.ts +++ b/src/DatabaseServices/Template/TemplateWineRackRecord.ts @@ -1,5 +1,7 @@ import { Vector3 } from "three"; import { DrawObliqueWineRackTool } from "../../Add-on/DrawWineRack/DrawObliqueWineRackTool"; +import { DrawUprightWineRackTool } from "../../Add-on/DrawWineRack/DrawUprightWineRackTool"; +import { DrawWineRackTool } from "../../Add-on/DrawWineRack/DrawWinRackTool"; import { app } from "../../ApplicationServices/Application"; import { Box3Ext } from "../../Geometry/Box"; import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; @@ -58,7 +60,11 @@ export class TemplateWineRackRecord extends TemplateRecord { await super.Update(); - let wineRack = DrawObliqueWineRackTool.GetInstance() as DrawObliqueWineRackTool; + let wineRack: DrawWineRackTool; + if (this.option.type === EWineRackType.Oblique) + wineRack = DrawObliqueWineRackTool.GetInstance() as DrawObliqueWineRackTool; + else + wineRack = DrawUprightWineRackTool.GetInstance() as DrawUprightWineRackTool; let brs: Board[] = []; if (this.Positioning && this.Positioning instanceof PositioningClampSpace) @@ -66,6 +72,14 @@ export class TemplateWineRackRecord extends TemplateRecord brs = this.Positioning.Objects.map(id => id.Object as Board); } + if (brs.length === 0) + { + if (this.Objects.length > 0) + brs.push(this.Objects[0].Object as Board); + else + brs.push(new Board()); + } + let space = new ISpaceParse(brs, this._CacheSpaceCS); space.ParseOK = true; space.SpaceBox = new Box3Ext(new Vector3(), this._CacheSpaceSize); diff --git a/src/Editor/CommandRegister.ts b/src/Editor/CommandRegister.ts index 6de12c65c..dfa8f2e8f 100644 --- a/src/Editor/CommandRegister.ts +++ b/src/Editor/CommandRegister.ts @@ -1,6 +1,7 @@ import { Vector3 } from 'three'; import { AddPtOnBoard, DeletePtOnBoard } from '../Add-on/AddPtOnBoard'; import { Command_Array } from '../Add-on/Array'; +import { BatchModify } from '../Add-on/Batch/BatchModifySealOrDrill'; import { BoardBatchCurtail } from '../Add-on/BoardBatchCurtail'; import { LinearCutting } from '../Add-on/BoardCutting/LinearCutting'; import { NonAssociativeCutting } from '../Add-on/BoardCutting/NonAssociativeCutting'; @@ -17,6 +18,7 @@ import { Command_Copy } from '../Add-on/Copy'; import { CopyClip } from '../Add-on/CopyClip'; import { Command_CopyPoint } from '../Add-on/CopyPoint'; import { CustomUcs } from '../Add-on/CostumUCS'; +import { DeleteCurve } from '../Add-on/DeleteCurve'; import { CMD_Divide } from '../Add-on/Divide'; import { DrawArc } from '../Add-on/DrawArc'; import { DrawBehindBoard } from '../Add-on/DrawBoard/DrawBehindBoard'; @@ -34,14 +36,17 @@ import { DrawCircle } from "../Add-on/DrawCircle"; import { DrawCylineder } from '../Add-on/DrawCylinder'; import { Command_AutoDimBrs } from '../Add-on/DrawDim/AutoDimBrs'; import { Command_DimContinue } from '../Add-on/DrawDim/Command_DimContinue'; +import { DeleteDim } from '../Add-on/DrawDim/DeleteDim'; import { Command_Draw2LineAngularDim } from '../Add-on/DrawDim/Draw2LineAngularDim'; import { DrawAlignedDimension } from '../Add-on/DrawDim/DrawAlignedDimension'; import { DrawDiameterDim } from '../Add-on/DrawDim/DrawDiameterDim'; import { DrawLinearDimension } from '../Add-on/DrawDim/DrawLinearDimension'; import { DrawRadiusDim } from '../Add-on/DrawDim/DrawRadiusDim'; +import { Command_FastDimBrs } from '../Add-on/DrawDim/FastDim'; import { DeleteDrill } from '../Add-on/DrawDrilling/DeleteDrill'; import { DrawDrilling } from '../Add-on/DrawDrilling/DrawDrilling'; import { DrillConfig } from '../Add-on/DrawDrilling/DrillConfig'; +import { ReverseDrillFace } from '../Add-on/DrawDrilling/ReverseDrillFace'; import { DrawEllipse } from '../Add-on/DrawEllipse'; import { DrawFloor } from '../Add-on/DrawFloor'; import { DrawGripStretch } from '../Add-on/DrawGripStretch'; @@ -59,7 +64,7 @@ import { DrawSpline } from '../Add-on/DrawSpline'; import { DrawRegTest } from '../Add-on/DrawTestReg'; import { DrawText } from '../Add-on/DrawText'; import { ConfigureWineRack } from '../Add-on/DrawWineRack/ConfigureWineRack'; -import { DrawWineRack, DrawWineRack2 } from '../Add-on/DrawWineRack/DrawWineRack'; +import { DrawWineRack } from '../Add-on/DrawWineRack/DrawWineRack'; import { DrawCircle0 } from '../Add-on/DrawZeroCircle'; import { Command_DXFImport } from '../Add-on/DXFLoad'; import { Entsel } from '../Add-on/Entsel'; @@ -100,6 +105,7 @@ import { Sweep } from '../Add-on/Sweep'; import { Command_SwitchCamera } from '../Add-on/SwitchCamera'; import { CMD_Conceptual, CMD_Physical, CMD_Wireframe } from '../Add-on/SwitchVisualStyles'; import { DrawTangentLine } from '../Add-on/Tangent'; +import { ShowTemplate } from '../Add-on/Template/ShowTemplate'; import { ShowTopLine } from '../Add-on/Template/ShowTopline'; // import { DrawFloor } from '../Add-on/DrawFloor'; // import { RevTarget, SaveTarget } from '../Add-on/RenderTarget'; @@ -108,6 +114,7 @@ import { Test } from '../Add-on/testEntity/test'; import { Command_TestBox } from '../Add-on/testEntity/TestBox'; import { TestCollision } from '../Add-on/testEntity/testCollision'; import { TestTargeOnCurve } from '../Add-on/testEntity/TestCurve'; +import { TestFillet } from '../Add-on/testEntity/TestFilletCode'; import { TestFb } from '../Add-on/TestFb'; import { Command_TestPointPickParse } from '../Add-on/TestPointPickParse'; import { Command_Trim } from '../Add-on/Trim'; @@ -119,13 +126,6 @@ import { CommandServer } from '../DatabaseServices/CommandServer'; import { AutoTempateSizeAction } from '../DatabaseServices/Template/TemplateTest'; import { ICommand } from '../UI/Components/CommandPanel/CommandList'; import { commandMachine } from './CommandMachine'; -import { BatchModify } from '../Add-on/Batch/BatchModifySealOrDrill'; -import { ShowTemplate } from '../Add-on/Template/ShowTemplate'; -import { ReverseDrillFace } from '../Add-on/DrawDrilling/ReverseDrillFace'; -import { DeleteDim } from '../Add-on/DrawDim/DeleteDim'; -import { Command_FastDimBrs } from '../Add-on/DrawDim/FastDim'; -import { TestFillet } from '../Add-on/testEntity/TestFilletCode'; -import { DeleteCurve } from '../Add-on/DeleteCurve'; export function registerCommand() @@ -299,7 +299,6 @@ export function registerCommand() //酒格 commandMachine.RegisterCommand("winerack", new ConfigureWineRack()); commandMachine.RegisterCommand("drawwinerack", new DrawWineRack()); - commandMachine.RegisterCommand("drawwinerack2", new DrawWineRack2()); commandMachine.RegisterCommand("testfb", new TestFb()); diff --git a/src/UI/Components/Board/WineRack.tsx b/src/UI/Components/Board/WineRack.tsx index 2d62cfb75..f12d69302 100644 --- a/src/UI/Components/Board/WineRack.tsx +++ b/src/UI/Components/Board/WineRack.tsx @@ -36,10 +36,7 @@ export class WineRackModal extends React.Component<{ store?: WineRackStore }, {} { app.Editor.ModalManage.Clear(); userConfig.winerackConfig = this.props.store.m_Option; - if (this.props.store.m_Option.type === EWineRackType.Upright) - commandMachine.ExecCommand("DRAWWINERACK"); - else - commandMachine.ExecCommand("DRAWWINERACK2"); + commandMachine.ExecCommand("DRAWWINERACK"); } } private checkDisabled = (k: string) =>