|
|
|
@ -237,12 +237,15 @@ class ObjectId
|
|
|
|
|
{
|
|
|
|
|
this.id = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//创建一个id, 如果db中已经存在id,那么自动获得该id,如果不存在,new一个新的id,并且加入到db中
|
|
|
|
|
static Create(db: Database, index: number): ObjectId
|
|
|
|
|
{
|
|
|
|
|
let id = db.GetObjectId(index);
|
|
|
|
|
if (!id)
|
|
|
|
|
{
|
|
|
|
|
id = new ObjectId();
|
|
|
|
|
db.SetObjectId(index, id);
|
|
|
|
|
id.id = index;
|
|
|
|
|
}
|
|
|
|
|
return id;
|
|
|
|
@ -599,26 +602,35 @@ class Database
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//在对象池中创建id.
|
|
|
|
|
//创建一个id,自动递增它的索引号,并且会自动加入到db的id列表中.
|
|
|
|
|
AllocateId(obj: CADObject): ObjectId
|
|
|
|
|
{
|
|
|
|
|
if (obj.Db === this)
|
|
|
|
|
{
|
|
|
|
|
this.idCout++;
|
|
|
|
|
let id = ObjectId.Create(this, this.idCout);
|
|
|
|
|
this.idMap.set(this.idCout, id);
|
|
|
|
|
return id;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
console.warn("对象不属于该数据库!");
|
|
|
|
|
console.warn("警告:对象不属于该数据库!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//获得指定索引的id
|
|
|
|
|
//获得指定索引的id,注意该id可能为空,如果需要创建,请使用 ObjectId.Create 如果需要自动分配 请使用 AllocateId
|
|
|
|
|
GetObjectId(index: number): ObjectId
|
|
|
|
|
{
|
|
|
|
|
return this.idMap.get(index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//在id池中加入新建的id. 该方法暴露给 Objectid.Cretes使用.
|
|
|
|
|
SetObjectId(index: number, id: ObjectId)
|
|
|
|
|
{
|
|
|
|
|
if (this.idMap.has(index))
|
|
|
|
|
{
|
|
|
|
|
console.warn("警告:尝试加入已经存在的id!");
|
|
|
|
|
}
|
|
|
|
|
this.idMap.set(index, id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class BlockTableRecord extends ObjectCollection<Entity>
|
|
|
|
|