diff --git a/__test__/FileSystem/FileSystem.test.ts b/__test__/FileSystem/FileSystem.test.ts index d4dd6d580..28f75445f 100644 --- a/__test__/FileSystem/FileSystem.test.ts +++ b/__test__/FileSystem/FileSystem.test.ts @@ -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 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 { - constructor(db: Database) + constructor() { super(); - this.SetDb(db); } //#region -----------------------------File----------------------------- @@ -685,7 +713,6 @@ class BlockTableRecord extends ObjectCollection console.warn("同一个对象无法重复加入图纸中!"); return; } - ent.SetDb(this.Db); this.Append(ent); return ent.Id; }