From 57a03a84b346fc7bbcf81b7ca4a2bf79a50e459b Mon Sep 17 00:00:00 2001 From: ChenX Date: Mon, 16 Sep 2019 15:35:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=A1=B6=E5=BA=95=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E7=A9=BA=E9=97=B4=E5=88=86=E6=9E=90=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Positioning/PositioningClampSpace.ts | 15 +++---- .../ProgramTempate/TemplateTopBottomBoard.ts | 10 +---- .../Template/TemplateRecord.ts | 42 ++++++++++++------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/DatabaseServices/Template/Positioning/PositioningClampSpace.ts b/src/DatabaseServices/Template/Positioning/PositioningClampSpace.ts index e67ce8d1a..666961efc 100644 --- a/src/DatabaseServices/Template/Positioning/PositioningClampSpace.ts +++ b/src/DatabaseServices/Template/Positioning/PositioningClampSpace.ts @@ -25,23 +25,24 @@ export class PositioningClampSpace extends Positioning this.SelectBoxIndex[splitType] = index; } + _SpaceParse: ClampSpaceParseFix; /** * 定位 */ async Positioning(param?: PositioningParam) { let brs = this.Objects.filter(id => !id.IsErase).map(id => id.Object as Board); - let parse = new ClampSpaceParseFix(brs); + this._SpaceParse = new ClampSpaceParseFix(brs); for (let i = 0; i < 3; i++) - parse.SelectBoxRecord.set(i, this.SelectBoxIndex[i]); + this._SpaceParse.SelectBoxRecord.set(i, this.SelectBoxIndex[i]); - parse.SignalDist = this.SignalDist; + this._SpaceParse.SignalDist = this.SignalDist; - await parse.Parse(); - if (parse.ParseOK) + await this._SpaceParse.Parse(); + if (this._SpaceParse.ParseOK) { - this.SpaceCS = parse.DrawCS; - this.SpaceSize = parse.Size; + this.SpaceCS = this._SpaceParse.DrawCS; + this.SpaceSize = this._SpaceParse.Size; } else { diff --git a/src/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.ts b/src/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.ts index b1e5d5f59..08343aac5 100644 --- a/src/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.ts +++ b/src/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.ts @@ -1,10 +1,7 @@ -import { Vector3 } from "three"; import { BuildTopBottomBoards } from "../../../Add-on/DrawBoard/BuildTopBottomBoardTool"; import { app } from "../../../ApplicationServices/Application"; import { EBoardKeyList } from "../../../Common/BoardKeyList"; import { DefaultBottomBoardOption, DefaultTopBoardOption } from "../../../Editor/DefaultConfig"; -import { Box3Ext } from "../../../Geometry/Box"; -import { ISpaceParse } from "../../../Geometry/SpaceParse/ISpaceParse"; import { BoardProcessOption, ComposingType, FaceDirection, LinesType, TBBoardOption } from "../../../UI/Store/BoardInterface"; import { AutoRecord } from "../../AutoRecord"; import { Factory } from "../../CADFactory"; @@ -60,11 +57,8 @@ export class TemplateTopBottomBoard extends TemplateRecord protected async Update() { await super.Update(); - let space = new ISpaceParse(); - space.SpaceOCS = this._CacheSpaceCS; - space.ParseOK = true; - space.SpaceBox = new Box3Ext(new Vector3(), this._CacheSpaceSize); - let nbrs = BuildTopBottomBoards(this._topOption, this._bottomOption, space); + let spaceParse = this.SpaceParse; + let nbrs = BuildTopBottomBoards(this._topOption, this._bottomOption, spaceParse); let sbrs = this.PositioningSupportBoards; diff --git a/src/DatabaseServices/Template/TemplateRecord.ts b/src/DatabaseServices/Template/TemplateRecord.ts index 2102de709..0c7c1911a 100644 --- a/src/DatabaseServices/Template/TemplateRecord.ts +++ b/src/DatabaseServices/Template/TemplateRecord.ts @@ -1,4 +1,6 @@ import { Box3, Math, Matrix4, Vector3 } from "three"; +import { Box3Ext } from "../../Geometry/Box"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; import { AutoRecord, ISPROXYKEY } from "../AutoRecord"; import { Factory } from "../CADFactory"; import { CADFiler } from "../CADFiler"; @@ -41,7 +43,7 @@ export class TemplateRecord extends SymbolTableRecord @AutoRecord Children: ObjectId[]; @AutoRecord Params: TemplateParam[]; @AutoRecord Objects: ObjectId[]; - private positioning: Positioning; + private _Positioning: Positioning; constructor() { super(); @@ -153,7 +155,7 @@ export class TemplateRecord extends SymbolTableRecord /** 模版定位 */ get Positioning(): Positioning { - return this.positioning; + return this._Positioning; } /** @@ -163,7 +165,7 @@ export class TemplateRecord extends SymbolTableRecord { this.WriteAllObjectRecord(); p.parent = this; - this.positioning = p; + this._Positioning = p; } //#region param @@ -266,14 +268,14 @@ export class TemplateRecord extends SymbolTableRecord * 只能先提供空间尺寸,然后才进行旋转. */ - if (this.positioning) + if (this._Positioning) { - await this.positioning.Positioning(); - if (!this.positioning.SpaceCS) + await this._Positioning.Positioning(); + if (!this._Positioning.SpaceCS) return;//出事故 - this._CacheSpaceCS = this.positioning.SpaceCS; - this._CacheSpaceSize = this.positioning.SpaceSize; + this._CacheSpaceCS = this._Positioning.SpaceCS; + this._CacheSpaceSize = this._Positioning.SpaceSize; this.RotateSpaceCS(paramMap, evaled); @@ -284,8 +286,8 @@ export class TemplateRecord extends SymbolTableRecord if (this.HParam.expr) this._CacheSpaceSize.z = this.HParam.EvalUpdate(this._CacheParamVars, paramMap, evaled, false); - if (this.positioning instanceof PositioningTemporary) - this.positioning = undefined; + if (this._Positioning instanceof PositioningTemporary) + this._Positioning = undefined; } else { @@ -537,6 +539,18 @@ export class TemplateRecord extends SymbolTableRecord return params; } + get SpaceParse(): ISpaceParse + { + if (this._Positioning && this._Positioning instanceof PositioningClampSpace) + return this._Positioning._SpaceParse; + + let spaceParse = new ISpaceParse(); + spaceParse.SpaceOCS = this._CacheSpaceCS; + spaceParse.ParseOK = true; + spaceParse.SpaceBox = new Box3Ext(new Vector3(), this._CacheSpaceSize); + return spaceParse; + } + /** * 获得当前的模版空间的相对坐标系 * - 存在父节点的时候使用父节点的模版空间坐标系 @@ -572,9 +586,9 @@ export class TemplateRecord extends SymbolTableRecord protected get PositioningSupportBoards(): Board[] { let brs: Board[] = []; - if (this.positioning && this.positioning instanceof PositioningClampSpace) + if (this._Positioning && this._Positioning instanceof PositioningClampSpace) { - for (let id of this.positioning.Objects) + for (let id of this._Positioning.Objects) if (!id.IsErase) brs.push(id.Object as Board); } @@ -605,7 +619,7 @@ export class TemplateRecord extends SymbolTableRecord for (let i = 0; i < count; i++) this.Objects.push(file.ReadObjectId()); - this.positioning = file.ReadObject(); + this._Positioning = file.ReadObject(); if (ver > 1) this.SplitType = file.Read(); @@ -627,7 +641,7 @@ export class TemplateRecord extends SymbolTableRecord for (let id of this.Objects) file.WriteHardObjectId(id); - file.WriteObject(this.positioning); + file.WriteObject(this._Positioning); file.Write(this.SplitType); }