写入对象加入起始和结束.

pull/7/head
ChenX 7 years ago
parent bf0bdf048c
commit a279785233

@ -1,5 +1,5 @@
import { Vector3 } from "three";
import { Database, Line, CADFactory } from '../../src/DatabaseServices/FileSystem';
import { Database, Line, CADFactory, BlockTableRecord } from '../../src/DatabaseServices/FileSystem';
test('id分配', () =>
{
CADFactory.RegisterObject(Line);
@ -21,10 +21,10 @@ test('id分配', () =>
expect(db.ModelSpace.Cout()).toBe(1);
expect(!id.IsErase).toBeTruthy();
let file = db.FileOut();
let file = db.FileWrite();
let db2 = new Database();
db2.FileIn(file);
db2.FileRead(file);
console.log(db2.GetObjectId(0));
@ -49,7 +49,7 @@ test('changev', () =>
(id.Object as Line).StartPoint = new Vector3(2, 3, 4);
let file = db.FileOut();
let file = db.FileWrite();
console.log(file.ToString());
});
@ -75,7 +75,7 @@ test('xxx', () =>
// db.hm.StartCmd("");
(id1.Object as Line).StartPoint = new Vector3(10, 4, 2);
(id1.Object as Line).EndPoint = new Vector3(2, 2, 2);
let file = db.FileOut();
let file = db.FileWrite();
console.log(file.ToString());
console.log(JSON.stringify(db.ObjectOut()));
@ -83,6 +83,8 @@ test('xxx', () =>
CADFactory.RegisterObject(Line);
CADFactory.RegisterObject(BlockTableRecord);
let l = CADFactory.CreateObject("Line");
l.ClassName //?

@ -211,8 +211,9 @@ export class CADObject
}
//对象从文件中读取数据,初始化自身
FileIn(file: CADFile)
FileRead(file: CADFile)
{
let ver = file.Read();
//write Id;
this.objectId = this.ReadObjectId(file);
if (this.objectId)
@ -221,8 +222,9 @@ export class CADObject
}
}
//对象将自身数据写入到文件.
FileOut(file: CADFile)
FileWrite(file: CADFile)
{
file.Write(1);
this.WriteObjectId(file)
}
ObjectIn(obj: any)
@ -324,6 +326,21 @@ export class CADFile
private readIndex: number = 0;
private dataList: any[] = [];
Destroy()
{
delete this.dataList;
delete this.readIndex;
}
get Data()
{
return this.dataList;
}
set Data(v)
{
this.dataList = v;
this.Reset();
}
Reset()
{
this.readIndex = 0;
@ -340,15 +357,23 @@ export class CADFile
}
WriteObject(obj: CADObject)
{
this.WriteString(obj.ClassName);
obj.FileOut(this);
let tempFile = new CADFile();
tempFile.WriteString(obj.ClassName);
obj.FileWrite(tempFile);
this.Write(tempFile.Data);
tempFile.Destroy();//GC
}
ReadObject(db: Database): CADObject
ReadObject(db: Database, obj?: CADObject): CADObject
{
let className = this.ReadString();
let obj = CADFactory.CreateObject(className);
let data = this.Read();
let tempFile = new CADFile();
tempFile.Data = data;
let className = tempFile.ReadString();
obj = obj ? obj : CADFactory.CreateObject(className);
obj.SetDefaultDb(db);
obj.FileIn(this);
obj.FileRead(tempFile);
tempFile.Destroy();
return obj;
}
@ -393,10 +418,10 @@ export class AppendData extends CADObject
return "AppendData";
}
//对象从文件中读取数据,初始化自身
FileIn(file: CADFile)
FileRead(file: CADFile)
{ }
//对象将自身数据写入到文件.
FileOut(file: CADFile)
FileWrite(file: CADFile)
{ }
//局部撤销
ApplyPartialUndo(file: CADObject)
@ -424,10 +449,10 @@ export class RemoveData extends CADObject
return "RemoveData";
}
//对象从文件中读取数据,初始化自身
FileIn(file: CADFile)
FileRead(file: CADFile)
{ }
//对象将自身数据写入到文件.
FileOut(file: CADFile)
FileWrite(file: CADFile)
{ }
//局部撤销
ApplyPartialUndo(file: CADObject)
@ -493,9 +518,9 @@ export class ObjectCollection<T> extends CADObject
return "ObjectCollection";
}
//对象从文件中读取数据,初始化自身
FileIn(file: CADFile)
FileRead(file: CADFile)
{
super.FileIn(file);
super.FileRead(file);
let cout = file.Read();
this.objectCol = [];
for (let i = 0; i < cout; i++)
@ -505,9 +530,9 @@ export class ObjectCollection<T> extends CADObject
}
}
//对象将自身数据写入到文件.
FileOut(file: CADFile)
FileWrite(file: CADFile)
{
super.FileOut(file);
super.FileWrite(file);
file.Write(this.objectCol.length);
for (let obj of this.objectCol)
{
@ -686,19 +711,17 @@ export class Database
this.hm.SetDefaultDb(this);
}
FileOut(): CADFile
FileWrite(): CADFile
{
let file = new CADFile();
file.Write(1);//ver;
file.Write(this.idCout);
this.ModelSpace.FileOut(file);
file.WriteObject(this.ModelSpace);
return file;
}
FileIn(file: CADFile)
FileRead(file: CADFile)
{
let ver = file.Read();
this.idCout = file.Read();
this.ModelSpace.FileIn(file);
file.ReadObject(this, this.ModelSpace);
}
@ -769,14 +792,14 @@ export class BlockTableRecord extends ObjectCollection<Entity>
return "BlockTableRecord";
}
//对象从文件中读取数据,初始化自身
FileIn(file: CADFile)
FileRead(file: CADFile)
{
super.FileIn(file);
super.FileRead(file);
}
//对象将自身数据写入到文件.
FileOut(file: CADFile)
FileWrite(file: CADFile)
{
super.FileOut(file);
super.FileWrite(file);
}
//局部撤销
ApplyPartialUndo(file: CADObject)
@ -812,17 +835,17 @@ export class Line extends Entity
}
//对象从文件中读取数据,初始化自身
FileIn(file: CADFile)
FileRead(file: CADFile)
{
super.FileIn(file);
super.FileRead(file);
let ver = file.Read();//1
this.startPoint.fromArray(file.Read());
this.endPoint.fromArray(file.Read());
}
//对象将自身数据写入到文件.
FileOut(file: CADFile)
FileWrite(file: CADFile)
{
super.FileOut(file);
super.FileWrite(file);
file.Write(1);//ver
file.Write(this.startPoint.toArray());
file.Write(this.endPoint.toArray());

Loading…
Cancel
Save