|
|
|
@ -123,6 +123,20 @@ export class CADFactory
|
|
|
|
|
if (createF)
|
|
|
|
|
return createF();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ReadObject(data: any, db: Database): CADObject
|
|
|
|
|
{
|
|
|
|
|
if (data.className)
|
|
|
|
|
{
|
|
|
|
|
let obj = this.CreateObject(data.className);
|
|
|
|
|
if (obj)
|
|
|
|
|
{
|
|
|
|
|
obj.SetDefaultDb(db);
|
|
|
|
|
obj.ObjectIn(data);
|
|
|
|
|
return obj
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//所有cad对象的基类
|
|
|
|
@ -211,6 +225,17 @@ export class CADObject
|
|
|
|
|
{
|
|
|
|
|
this.WriteObjectId(file)
|
|
|
|
|
}
|
|
|
|
|
ObjectIn(obj: any)
|
|
|
|
|
{
|
|
|
|
|
this.objectId = ObjectId.Create(this._db, obj.id);
|
|
|
|
|
}
|
|
|
|
|
ObjectOut(): Object
|
|
|
|
|
{
|
|
|
|
|
return {
|
|
|
|
|
className: this.ClassName,
|
|
|
|
|
id: this.Id.Index
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
//局部撤销
|
|
|
|
|
ApplyPartialUndo(file: CADObject)
|
|
|
|
|
{
|
|
|
|
@ -271,7 +296,7 @@ export class ObjectId
|
|
|
|
|
static Create(db: Database, index: number): ObjectId
|
|
|
|
|
{
|
|
|
|
|
let id = db.GetObjectId(index);
|
|
|
|
|
if (!id)
|
|
|
|
|
if (!id && index >= 0)
|
|
|
|
|
{
|
|
|
|
|
id = new ObjectId(index);
|
|
|
|
|
db.SetObjectId(index, id);
|
|
|
|
@ -489,6 +514,19 @@ export class ObjectCollection<T> extends CADObject
|
|
|
|
|
file.WriteObject(obj);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ObjectIn(obj: any)
|
|
|
|
|
{
|
|
|
|
|
super.ObjectIn(obj);
|
|
|
|
|
let objList: Object[] = obj.objectCol;
|
|
|
|
|
this.objectCol = objList.map(o => CADFactory.ReadObject(o, this._db));
|
|
|
|
|
}
|
|
|
|
|
ObjectOut(): Object
|
|
|
|
|
{
|
|
|
|
|
let obj = super.ObjectOut() as any;
|
|
|
|
|
obj.objectCol = this.objectCol.map(o => o.ObjectOut());
|
|
|
|
|
return obj;
|
|
|
|
|
}
|
|
|
|
|
//局部撤销
|
|
|
|
|
ApplyPartialUndo(undoData: CADObject)
|
|
|
|
|
{
|
|
|
|
@ -662,6 +700,19 @@ export class Database
|
|
|
|
|
this.idCout = file.Read();
|
|
|
|
|
this.ModelSpace.FileIn(file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ObjectIn(obj: any)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
ObjectOut(): Object
|
|
|
|
|
{
|
|
|
|
|
return {
|
|
|
|
|
idCout: this.idCout,
|
|
|
|
|
ms: this.ModelSpace.ObjectOut(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//创建一个id,自动递增它的索引号,并且会自动加入到db的id列表中.
|
|
|
|
|
AllocateId(obj: CADObject): ObjectId
|
|
|
|
|
{
|
|
|
|
@ -776,6 +827,18 @@ export class Line extends Entity
|
|
|
|
|
file.Write(this.startPoint.toArray());
|
|
|
|
|
file.Write(this.endPoint.toArray());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ObjectIn(obj: any)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
ObjectOut(): Object
|
|
|
|
|
{
|
|
|
|
|
let obj = super.ObjectOut() as any;
|
|
|
|
|
obj.sp = this.startPoint.toArray();
|
|
|
|
|
obj.ep = this.endPoint.toArray();
|
|
|
|
|
return obj
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ApplyPartialUndo(data)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|