修正顶底板的空间分析错误问题

pull/500/MERGE
ChenX 5 years ago
parent bc799010d8
commit 57a03a84b3

@ -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
{

@ -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;

@ -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);
}

Loading…
Cancel
Save