|
|
|
@ -252,8 +252,7 @@ export class CADObject
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private WriteObjectId(file: CADFile)
|
|
|
|
|
protected WriteObjectId(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
if (this.objectId)
|
|
|
|
|
{
|
|
|
|
@ -262,7 +261,7 @@ export class CADObject
|
|
|
|
|
else
|
|
|
|
|
file.Write(-1);
|
|
|
|
|
}
|
|
|
|
|
private ReadObjectId(file: CADFile): ObjectId
|
|
|
|
|
protected ReadObjectId(file: CADFile): ObjectId
|
|
|
|
|
{
|
|
|
|
|
let index = file.Read();
|
|
|
|
|
if (index >= 0 && this._db)
|
|
|
|
@ -365,6 +364,11 @@ export class CADFile
|
|
|
|
|
}
|
|
|
|
|
WriteObject(obj: CADObject)
|
|
|
|
|
{
|
|
|
|
|
if (!obj)
|
|
|
|
|
{
|
|
|
|
|
this.Write("");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
let tempFile = new CADFile();
|
|
|
|
|
tempFile.WriteString(obj.ClassName);
|
|
|
|
|
obj.WriteFile(tempFile);
|
|
|
|
@ -378,11 +382,14 @@ export class CADFile
|
|
|
|
|
tempFile.Data = data;
|
|
|
|
|
|
|
|
|
|
let className = tempFile.ReadString();
|
|
|
|
|
obj = obj ? obj : CADFactory.CreateObject(className);
|
|
|
|
|
obj.SetDefaultDb(db);
|
|
|
|
|
obj.ReadFile(tempFile);
|
|
|
|
|
tempFile.Destroy();
|
|
|
|
|
return obj;
|
|
|
|
|
if (className)
|
|
|
|
|
{
|
|
|
|
|
obj = obj ? obj : CADFactory.CreateObject(className);
|
|
|
|
|
obj.SetDefaultDb(db);
|
|
|
|
|
obj.ReadFile(tempFile);
|
|
|
|
|
tempFile.Destroy();
|
|
|
|
|
return obj;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Write(data: any)
|
|
|
|
@ -429,14 +436,14 @@ export class CreateObjectData extends CADObject
|
|
|
|
|
//对象从文件中读取数据,初始化自身
|
|
|
|
|
ReadFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
file.Write(1);//ver
|
|
|
|
|
file.Read();//ver;
|
|
|
|
|
let data = file.Read();
|
|
|
|
|
this.cadFile.Data = data;
|
|
|
|
|
}
|
|
|
|
|
//对象将自身数据写入到文件.
|
|
|
|
|
WriteFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
file.Read();//ver;
|
|
|
|
|
file.Write(1);//ver
|
|
|
|
|
file.Write(this.cadFile.Data);
|
|
|
|
|
}
|
|
|
|
|
//局部撤销
|
|
|
|
@ -492,6 +499,35 @@ export class AllObjectData extends CADObject
|
|
|
|
|
if (obj)
|
|
|
|
|
obj.WriteFile(this.file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//#region -------------------------File-------------------------
|
|
|
|
|
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
|
|
|
|
|
|
|
|
|
|
//类名,保证序列化时得到正确的new
|
|
|
|
|
get ClassName(): string
|
|
|
|
|
{
|
|
|
|
|
return "AllObjectData";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//对象从文件中读取数据,初始化自身
|
|
|
|
|
ReadFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
super.ReadFile(file);
|
|
|
|
|
let ver = file.Read();
|
|
|
|
|
let data = file.Read();
|
|
|
|
|
}
|
|
|
|
|
//对象将自身数据写入到文件.
|
|
|
|
|
WriteFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
super.WriteFile(file);
|
|
|
|
|
file.Write(1);
|
|
|
|
|
file.Write(this.file.Data);
|
|
|
|
|
}
|
|
|
|
|
//局部撤销
|
|
|
|
|
ApplyPartialUndo(undoData: CADObject)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
//#endregion
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//对象集合.
|
|
|
|
@ -663,11 +699,38 @@ export class CommandHistoryRecord extends CADObject
|
|
|
|
|
ReadFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
let ver = file.Read();
|
|
|
|
|
this.commandName = file.Read();
|
|
|
|
|
let cout = file.Read();
|
|
|
|
|
|
|
|
|
|
this.historyCol.clear();
|
|
|
|
|
for (let i = 0; i < cout; i++)
|
|
|
|
|
{
|
|
|
|
|
let id = this.ReadObjectId(file);
|
|
|
|
|
let length = file.Read();
|
|
|
|
|
let recs = [];
|
|
|
|
|
this.historyCol.set(id, recs);
|
|
|
|
|
for (let j = 0; j < length; j++)
|
|
|
|
|
{
|
|
|
|
|
let rec = file.ReadObject(this._db);
|
|
|
|
|
recs.push(rec);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//对象将自身数据写入到文件.
|
|
|
|
|
WriteFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
file.Write(1);
|
|
|
|
|
file.Write(this.commandName);
|
|
|
|
|
file.Write(this.historyCol.size);
|
|
|
|
|
for (let [id, recs] of this.historyCol)
|
|
|
|
|
{
|
|
|
|
|
file.Write(id.Index);
|
|
|
|
|
file.Write(recs.length);
|
|
|
|
|
for (let rec of recs)
|
|
|
|
|
{
|
|
|
|
|
file.WriteObject(rec);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
@ -687,6 +750,35 @@ export class HistorycRecord extends CADObject
|
|
|
|
|
//制定重做时所需要的数据
|
|
|
|
|
redoData: CADObject;
|
|
|
|
|
userData: CADObject;
|
|
|
|
|
|
|
|
|
|
//#region -------------------------File-------------------------
|
|
|
|
|
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
|
|
|
|
|
|
|
|
|
|
//类名,保证序列化时得到正确的new
|
|
|
|
|
get ClassName(): string
|
|
|
|
|
{
|
|
|
|
|
return "HistorycRecord";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//对象从文件中读取数据,初始化自身
|
|
|
|
|
ReadFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
let ver = file.Read();
|
|
|
|
|
this.undoData = file.ReadObject(this._db);
|
|
|
|
|
this.redoData = file.ReadObject(this._db);
|
|
|
|
|
this.userData = file.ReadObject(this._db);
|
|
|
|
|
}
|
|
|
|
|
//对象将自身数据写入到文件.
|
|
|
|
|
WriteFile(file: CADFile)
|
|
|
|
|
{
|
|
|
|
|
file.Write(1);
|
|
|
|
|
file.WriteObject(this.undoData);
|
|
|
|
|
file.WriteObject(this.redoData);
|
|
|
|
|
file.WriteObject(this.userData);
|
|
|
|
|
}
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export class ObjectAllDataHistoryRecord extends HistorycRecord
|
|
|
|
|