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