From 706e7a96352d7be86ab52c1846d06c8934306607 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 21 Dec 2017 10:53:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E7=BB=98=E5=9B=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DatabaseServices/FileSystem.ts | 34 ++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/DatabaseServices/FileSystem.ts b/src/DatabaseServices/FileSystem.ts index 63819b9b9..3c8a38b4b 100644 --- a/src/DatabaseServices/FileSystem.ts +++ b/src/DatabaseServices/FileSystem.ts @@ -1,5 +1,9 @@ +import { Geometry, Object3D, Vector3 } from 'three'; +import * as THREE from 'three'; + import { ArrayRemove } from '../../src/Common/Utils'; -import { Vector3, Line3 } from 'three'; +import { RenderType } from '../GraphicsSystem/Enum'; + /* 关于webCAD 文件系统的原型. 包括了对象的保存,撤销,还原. @@ -1000,6 +1004,15 @@ export class BlockTableRecord extends ObjectCollection @Factory export class Entity extends CADObject { + protected m_DrawEntity = new Map(); + //绘制一个threeJs对象. + Draw(renderType: RenderType = RenderType.Wireframe): Object3D + { + if (this.m_DrawEntity && this.m_DrawEntity.has(renderType)) + { + return this.m_DrawEntity.get(renderType); + } + } } //直线对象 @@ -1015,7 +1028,19 @@ export class Line extends Entity this.endPoint = new Vector3(0, 0, 0); } - //-----------------------------File----------------------------- + Draw(renderType: RenderType): Object3D + { + let obj = super.Draw(renderType); + if (obj) return obj; + + let geo = new Geometry(); + geo.vertices.push(this.StartPoint, this.EndPoint); + obj = new THREE.Line(geo); + this.m_DrawEntity.set(renderType, obj); + return obj; + } + + //#region -----------------------------File----------------------------- //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 //对象从文件中读取数据,初始化自身 @@ -1038,9 +1063,9 @@ export class Line extends Entity { super.ApplyPartialUndo(data); } - //-----------------------------File End----------------------------- - + //#endregion-----------------------------File End----------------------------- + //#region 属性 set StartPoint(v: Vector3) { this.WriteAllObjectRecord(); @@ -1061,4 +1086,5 @@ export class Line extends Entity this.endPoint.copy(v); } + //#endregion }