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