对象id创建的时机.

pull/7/head
ChenX 7 years ago
parent 42ea8edf4f
commit 1f31a8ddb9

@ -137,7 +137,22 @@ class CADObject
{
return this._db;
}
SetDb(db: Database)
SetDefaultDb(db: Database)
{
if (!this._db)
{
this._db = db;
}
else
{
console.warn("警告:同一个对象无法重复设置默认db.");
}
}
//private 私有的方法,暴露给Db的添加对象,方法使用.
//只用对象加入到db中,我们才初始化ObjectId.
//从db池中分配id给自身使用. 除非你创建对象往db里面加,否则不要调用该方法
InitObjectId(db: Database)
{
if (!this._db)
{
@ -298,7 +313,7 @@ class CADFile
{
let className = this.ReadString();
let obj = CADFactory.CreateObject(className);
obj.SetDb(db);
obj.SetDefaultDb(db);
obj.FileIn(this);
return obj;
}
@ -391,10 +406,17 @@ class RemoveData extends CADObject
class ObjectCollection<T> extends CADObject
{
private objectCol: CADObject[] = [];
//添加一个对象进入集合,这个集合存在db中,那么将自动分配id.
Append(obj: CADObject)
{
this.objectCol.push(obj);
if (this._db && !obj.Id)
{
obj.InitObjectId(this._db);
}
if (this._db && this._db.hm.UndoData)
{
@ -483,10 +505,17 @@ class CommandHistoryRecord extends CADObject
}
}
//历史记录
/**
* ,.
*
* @class HistoricRecord
* @extends {CADObject}
*/
class HistoricRecord extends CADObject
{
//指定撤销时所需要的数据
undoData: CADObject;
//制定重做时所需要的数据
redoData: CADObject;
userData: CADObject;
}
@ -498,10 +527,9 @@ class HistoricManage extends CADObject
private historyRecord: CommandHistoryRecord[] = []; //历史记录
private doing: boolean = false;
constructor(db: Database)
constructor()
{
super();
this._db = db;
}
get UndoData(): CommandHistoryRecord
{
@ -584,10 +612,11 @@ class Database
constructor()
{
this.ModelSpace = new BlockTableRecord(this);
this.hm = new HistoricManage(this);
this.ModelSpace = new BlockTableRecord();
this.ModelSpace.SetDefaultDb(this);
this.hm = new HistoricManage();
this.hm.SetDefaultDb(this);
}
getObject(id: number): CADObject
{
return this.objectCol.get(id);
@ -653,10 +682,9 @@ class Database
class BlockTableRecord extends ObjectCollection<Entity>
{
constructor(db: Database)
constructor()
{
super();
this.SetDb(db);
}
//#region -----------------------------File-----------------------------
@ -685,7 +713,6 @@ class BlockTableRecord extends ObjectCollection<Entity>
console.warn("同一个对象无法重复加入图纸中!");
return;
}
ent.SetDb(this.Db);
this.Append(ent);
return ent.Id;
}

Loading…
Cancel
Save