diff --git a/src/DatabaseServices/Circle.ts b/src/DatabaseServices/Circle.ts index 7bf417858..672474cc4 100644 --- a/src/DatabaseServices/Circle.ts +++ b/src/DatabaseServices/Circle.ts @@ -5,11 +5,11 @@ import { ColorMaterial } from '../Common/ColorPalette'; import { RenderType } from '../GraphicsSystem/Enum'; import { Factory } from './CADFactory'; import { CADFile } from './CADFile'; -import { Entity } from './Entity'; +import { Curve } from './Curve'; @Factory -export class Circle extends Entity +export class Circle extends Curve { constructor(center?: Vector3, radius?: number) { @@ -145,4 +145,4 @@ export class Circle extends Entity file.Write(this.m_Radius); } //#endregion -} \ No newline at end of file +} diff --git a/src/DatabaseServices/Curve.ts b/src/DatabaseServices/Curve.ts new file mode 100644 index 000000000..868676fae --- /dev/null +++ b/src/DatabaseServices/Curve.ts @@ -0,0 +1,36 @@ +import { Vector3 } from 'three'; + +import { Factory } from './CADFactory'; +import { Entity } from './Entity'; + + +/** + * 曲线的基类,子类请实现以下方法. + * + * @export + * @class Curve + * @extends {Entity} + */ +@Factory +export abstract class Curve extends Entity +{ + constructor() + { + super(); + } + get StartPoint(): Vector3 { return; } + get StartParam(): number { return; } + get EndPoint(): Vector3 { return; } + get EndParam(): number { return; }; + get Area(): number { return; } + get IsClose(): boolean { return; } + + GetPointAtParam(param: number): Vector3 { return; } + GetPointAtDistance(distance: number): Vector3 { return; } + GetDistAtParam(param: number): number { return; }; + GetDistAtPoint(pt: Vector3): number { return; } + GetFistDeriv(param: number | Vector3): number { return; } + + GetSplitCurves(param: number[] | number): Array { return; } + Extend(newParam: number) { } +} diff --git a/src/DatabaseServices/Line.ts b/src/DatabaseServices/Line.ts index 51182c33f..f2c5c5eef 100644 --- a/src/DatabaseServices/Line.ts +++ b/src/DatabaseServices/Line.ts @@ -6,10 +6,10 @@ import { ColorMaterial } from '../Common/ColorPalette'; import { RenderType } from '../GraphicsSystem/Enum'; import { Factory } from './CADFactory'; import { CADFile } from './CADFile'; -import { Entity } from './Entity'; +import { Curve } from './Curve'; @Factory -export class Line extends Entity +export class Line extends Curve { private startPoint: Vector3; private endPoint: Vector3; @@ -119,4 +119,4 @@ export class Line extends Entity } //#endregion -} \ No newline at end of file +}