对ObjectId提供统一构建方法 防止出错

pull/7/head
ChenX 7 years ago
parent 980b5529fb
commit 52c9fc85ef

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

Loading…
Cancel
Save