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_EndAngle: number;
private m_Normal = new Vector3(0, 0, 1);
private m_Clockwise = true;//顺时针
get Center()
{
@ -63,6 +64,11 @@ export class Arc extends Curve
this.Update();
}
get IsClockWise()
{
return this.m_Clockwise;
}
get StartAngle()
{
return this.m_StartAngle;
@ -264,8 +270,15 @@ export class Arc extends Curve
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[]
{
if (curve instanceof Arc)
@ -388,7 +401,7 @@ export class Arc extends Curve
if (obj) return obj;
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 arc = new THREE.Line(geo, ColorMaterial.GetLineMaterial(this.m_Color));
this.m_DrawEntity.set(renderType, arc);
@ -475,7 +488,7 @@ export class Arc extends Curve
this.m_Radius = file.Read();
this.m_StartAngle = file.Read();
this.m_EndAngle = file.Read();
this.m_Clockwise = file.Read();
}
//对象将自身数据写入到文件.
WriteFile(file: CADFile)
@ -487,6 +500,7 @@ export class Arc extends Curve
file.Write(this.m_Radius);
file.Write(this.m_StartAngle);
file.Write(this.m_EndAngle);
file.Write(this.m_Clockwise);
}
//#endregion
}

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

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

Loading…
Cancel
Save