api 模板记录与实体相关联

pull/347/head
ChenX 5 years ago
parent b20e9d7f3c
commit f5df242149

@ -9,6 +9,7 @@ import { userConfig } from '../Editor/UserConfig';
import { equaln, equalv3, UpdateBoundingSphere } from '../Geometry/GeUtils';
import { IntersectOption } from '../GraphicsSystem/IntersectWith';
import { RenderType } from '../GraphicsSystem/RenderType';
import { AutoRecord } from './AutoRecord';
import { Factory } from './CADFactory';
import { CADFiler } from './CADFiler';
import { CADObject } from './CADObject';
@ -30,6 +31,8 @@ export class Entity extends CADObject
protected m_Matrix = new Matrix4();
protected _Visible = true;
@AutoRecord Template: ObjectId;
/**
* AutoUpdatefalse,.
* 便.
@ -443,15 +446,19 @@ export class Entity extends CADObject
if (ver === 2)
this.m_Owner = file.ReadObjectId();
if (ver > 3)
this.Template = file.ReadObjectId();
}
//对象将自身数据写入到文件.
WriteFile(file: CADFiler)
{
file.Write(3);
file.Write(4);
super.WriteFile(file);
file.Write(this.m_Color);
file.WriteHardObjectId(this.materialId);
file.Write(this.m_Matrix.toArray());
file.WriteObjectId(this.Template);
}
//局部撤销
ApplyPartialUndo(undoData: CADObject)

@ -407,6 +407,10 @@ class TemplateStretchSizeBoxAction extends TemplateAction
}
*/
/**
*
* ,,
*/
@Factory
export class TemplateRecord extends SymbolTableRecord
{
@ -415,7 +419,7 @@ export class TemplateRecord extends SymbolTableRecord
@AutoRecord parent: ObjectId;
@AutoRecord children: ObjectId[] = [];
@AutoRecord params: TemplateParam[];
@AutoRecord objects: ObjectId[] = [];
@AutoRecord objects: ObjectId[];
constructor()
{
@ -441,16 +445,45 @@ export class TemplateRecord extends SymbolTableRecord
return Reflect.get(target, key, receiver);
}
});
this.objects = new Proxy([], {
set: (target, key, value, receiver) =>
{
if (Reflect.get(target, key, receiver) !== value)
{
this.WriteAllObjectRecord();
if (value instanceof ObjectId && value.Object instanceof Entity)
{
if (!this.Id)
console.warn("请先加模版添加到Database后在进行操作!");
value.Object.Template = this.Id;
}
}
return Reflect.set(target, key, value, receiver);
},
get: (target, key, receiver) =>
{
if (key === ISPROXYKEY)
return true;
return Reflect.get(target, key, receiver);
}
});
}
InitSizeParams()
static SizeParamName = ["L", "W", "H"];
InitSizeParams(length = 0, width = 0, height = 0)
{
for (let paramName of ["L", "W", "H"])
let size = [length, width, height];
for (let i = 0; i < 3; i++)
{
let paramName = TemplateRecord.SizeParamName[i];
let value = size[i];
let param = new TemplateParam();
param.name = paramName;
param.type = TemplateParamType.Float;
param.value = 0;
param.value = value;
this.params.push(param);
}
return this;

Loading…
Cancel
Save