Merge branch 'curve_rev' into board

pull/653835/MERGE
ChenX 7 years ago
commit 240e12b44e

@ -29,6 +29,7 @@ export class Arc extends Curve
private m_StartAngle: number; private m_StartAngle: number;
private m_EndAngle: number; private m_EndAngle: number;
private m_Normal = new Vector3(0, 0, 1); private m_Normal = new Vector3(0, 0, 1);
private m_Clockwise = true;//顺时针
get Center() get Center()
{ {
@ -63,6 +64,11 @@ export class Arc extends Curve
this.Update(); this.Update();
} }
get IsClockWise()
{
return this.m_Clockwise;
}
get StartAngle() get StartAngle()
{ {
return this.m_StartAngle; return this.m_StartAngle;
@ -264,8 +270,15 @@ export class Arc extends Curve
this.SetExtendPointAngle(newParam, allAngle); this.SetExtendPointAngle(newParam, allAngle);
} }
} }
}
Reverse()
{
this.WriteAllObjectRecord();
this.m_Clockwise = !this.m_Clockwise;
[this.m_StartAngle, this.m_EndAngle] = [this.m_EndAngle, this.m_StartAngle];
} }
IntersectWith(curve: Curve, intType: Intersect): Vector3[] IntersectWith(curve: Curve, intType: Intersect): Vector3[]
{ {
if (curve instanceof Arc) if (curve instanceof Arc)
@ -388,7 +401,7 @@ export class Arc extends Curve
if (obj) return obj; if (obj) return obj;
let shape = new THREE.Shape(); let shape = new THREE.Shape();
shape.absarc(this.m_Center.x, this.m_Center.y, this.m_Radius, this.m_StartAngle, this.m_EndAngle, true); shape.absarc(this.m_Center.x, this.m_Center.y, this.m_Radius, this.m_StartAngle, this.m_EndAngle, this.m_Clockwise);
let geo = new THREE.Geometry().setFromPoints(shape.getPoints(60)); let geo = new THREE.Geometry().setFromPoints(shape.getPoints(60));
let arc = new THREE.Line(geo, ColorMaterial.GetLineMaterial(this.m_Color)); let arc = new THREE.Line(geo, ColorMaterial.GetLineMaterial(this.m_Color));
this.m_DrawEntity.set(renderType, arc); this.m_DrawEntity.set(renderType, arc);
@ -475,7 +488,7 @@ export class Arc extends Curve
this.m_Radius = file.Read(); this.m_Radius = file.Read();
this.m_StartAngle = file.Read(); this.m_StartAngle = file.Read();
this.m_EndAngle = file.Read(); this.m_EndAngle = file.Read();
this.m_Clockwise = file.Read();
} }
//对象将自身数据写入到文件. //对象将自身数据写入到文件.
WriteFile(file: CADFile) WriteFile(file: CADFile)
@ -487,6 +500,7 @@ export class Arc extends Curve
file.Write(this.m_Radius); file.Write(this.m_Radius);
file.Write(this.m_StartAngle); file.Write(this.m_StartAngle);
file.Write(this.m_EndAngle); file.Write(this.m_EndAngle);
file.Write(this.m_Clockwise);
} }
//#endregion //#endregion
} }

@ -62,6 +62,9 @@ export abstract class Curve extends Entity
GetSplitCurves(param: number[] | number): Array<Curve> { return; } GetSplitCurves(param: number[] | number): Array<Curve> { return; }
Extend(newParam: number) { } Extend(newParam: number) { }
//翻转曲线.首尾调换.
Reverse() { };
PtOnCurve(pt: Vector3): boolean { return; } PtOnCurve(pt: Vector3): boolean { return; }
GetOffsetCurves(offsetDist: number): Array<Curve> { return; } GetOffsetCurves(offsetDist: number): Array<Curve> { return; }

@ -14,13 +14,13 @@ import { Curve } from './Curve';
@Factory @Factory
export class Line extends Curve export class Line extends Curve
{ {
private startPoint: Vector3; private m_StartPoint: Vector3;
private endPoint: Vector3; private m_EndPoint: Vector3;
constructor(sp?: Vector3, ep?: Vector3) constructor(sp?: Vector3, ep?: Vector3)
{ {
super(); super();
this.startPoint = sp || new Vector3(0, 0, 0); this.m_StartPoint = sp || new Vector3(0, 0, 0);
this.endPoint = ep || new Vector3(0, 0, 0); this.m_EndPoint = ep || new Vector3(0, 0, 0);
} }
Draw(renderType: RenderType): Object3D Draw(renderType: RenderType): Object3D
@ -47,8 +47,8 @@ export class Line extends Curve
let geo = lineObj.geometry as THREE.Geometry; let geo = lineObj.geometry as THREE.Geometry;
geo.vertices[0].copy(this.startPoint); geo.vertices[0].copy(this.m_StartPoint);
geo.vertices[1].copy(this.endPoint); geo.vertices[1].copy(this.m_EndPoint);
geo.computeBoundingSphere();//必须调用该函数,使得实体可以被选中. geo.computeBoundingSphere();//必须调用该函数,使得实体可以被选中.
@ -83,8 +83,8 @@ export class Line extends Curve
ApplyMatrix(m: Matrix4) ApplyMatrix(m: Matrix4)
{ {
this.startPoint.applyMatrix4(m); this.m_StartPoint.applyMatrix4(m);
this.endPoint.applyMatrix4(m); this.m_EndPoint.applyMatrix4(m);
this.Update(); this.Update();
} }
@ -112,7 +112,7 @@ export class Line extends Curve
let len = this.Length; let len = this.Length;
if (len == 0) if (len == 0)
{ {
if (equal(this.startPoint, pt)) if (equal(this.m_StartPoint, pt))
return 0; return 0;
else else
return NaN; return NaN;
@ -218,6 +218,12 @@ export class Line extends Curve
} }
} }
Reverse()
{
this.WriteAllObjectRecord();
[this.m_StartPoint, this.m_EndPoint] = [this.m_EndPoint, this.m_StartPoint];
}
GetOffsetCurves(offsetDist: number): Array<Curve> GetOffsetCurves(offsetDist: number): Array<Curve>
{ {
let an = this.GetFistDerivAngle(0) - Math.PI * 0.5; let an = this.GetFistDerivAngle(0) - Math.PI * 0.5;
@ -236,7 +242,7 @@ export class Line extends Curve
return 1; return 1;
} }
//属性 //属性
get Length(): number { return this.startPoint.distanceTo(this.endPoint); } get Length(): number { return this.m_StartPoint.distanceTo(this.m_EndPoint); }
//#region -----------------------------File----------------------------- //#region -----------------------------File-----------------------------
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
@ -246,16 +252,16 @@ export class Line extends Curve
{ {
super.ReadFile(file); super.ReadFile(file);
let ver = file.Read();//1 let ver = file.Read();//1
this.startPoint.fromArray(file.Read()); this.m_StartPoint.fromArray(file.Read());
this.endPoint.fromArray(file.Read()); this.m_EndPoint.fromArray(file.Read());
} }
//对象将自身数据写入到文件. //对象将自身数据写入到文件.
WriteFile(file: CADFile) WriteFile(file: CADFile)
{ {
super.WriteFile(file); super.WriteFile(file);
file.Write(1);//ver file.Write(1);//ver
file.Write(this.startPoint.toArray()); file.Write(this.m_StartPoint.toArray());
file.Write(this.endPoint.toArray()); file.Write(this.m_EndPoint.toArray());
} }
//#endregion-----------------------------File End----------------------------- //#endregion-----------------------------File End-----------------------------
@ -263,23 +269,23 @@ export class Line extends Curve
set StartPoint(v: Vector3) set StartPoint(v: Vector3)
{ {
this.WriteAllObjectRecord(); this.WriteAllObjectRecord();
this.startPoint.copy(v); this.m_StartPoint.copy(v);
this.Update(); this.Update();
} }
get StartPoint(): Vector3 get StartPoint(): Vector3
{ {
return this.startPoint.clone(); return this.m_StartPoint.clone();
} }
get EndPoint(): Vector3 get EndPoint(): Vector3
{ {
return this.endPoint.clone(); return this.m_EndPoint.clone();
} }
set EndPoint(v: Vector3) set EndPoint(v: Vector3)
{ {
this.WriteAllObjectRecord(); this.WriteAllObjectRecord();
this.endPoint.copy(v); this.m_EndPoint.copy(v);
this.Update(); this.Update();
} }

Loading…
Cancel
Save