初始化版本库,可用

This commit is contained in:
2021-01-28 10:17:21 +08:00
commit d2573c0b1c
1750 changed files with 41088 additions and 0 deletions

138
types/DatabaseServices/Entity/Arc.d.ts vendored Normal file
View File

@@ -0,0 +1,138 @@
import { Box3, BufferGeometry, Line as TLine, Matrix3, Matrix4, Object3D, Shape, Vector2, Vector3 } from 'three';
import { Line2 } from 'three/examples/jsm/lines/Line2';
import { Status } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Curve } from './Curve';
/**
* 圆弧实体类
* 与ACAD不同,这个类加入了时针变量,并且默认构造的圆弧为顺时针圆弧.
*
* 关于时针圆弧:
* 起始圆弧到终止圆弧总是在0-2PI之间.(一个完整的圆).
* 圆弧的绘制从起始圆弧绘制到终止圆弧. 按照时针绘制.
* 参考计算圆弧的完整角度方法查看该计算方式.
*/
export declare class Arc extends Curve {
constructor(center?: Vector3, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
private _Radius;
private _StartAngle;
private _EndAngle;
/**
* 曲线为顺时针
*/
private _Clockwise;
get Shape(): Shape;
get Center(): Vector3;
set Center(v: Vector3);
get Normal(): Vector3;
set Normal(v: Vector3);
get Area(): number;
get Area2(): number;
get IsClose(): boolean;
get BoundingBox(): Box3;
get Radius(): number;
set Radius(v: number);
get IsClockWise(): boolean;
set IsClockWise(v: boolean);
get StartAngle(): number;
set StartAngle(v: number);
get EndAngle(): number;
set EndAngle(v: number);
get StartPoint(): Vector3;
set StartPoint(v: Vector3);
get EndPoint(): Vector3;
set EndPoint(v: Vector3);
get StartParam(): number;
get EndParam(): number;
get Length(): number;
GetParamAtPoint2(pt: Vector3): number;
PtOnCurve3(p: Vector3, fuzz?: number): boolean;
protected ApplyScaleMatrix(m: Matrix4): this;
protected ApplyMirrorMatrix(m: Matrix4): this;
GetPointAtParam(param: number): Vector3;
GetPointAtDistance(distance: number): Vector3;
GetDistAtParam(param: number): number;
GetDistAtPoint(pt: Vector3): number;
GetParamAtPoint(pt: Vector3): number;
/**
* 利用角度计算该角度在圆弧中代表的参数.
* 如果角度在圆弧内,那么返回0-1
* 如果角度不在圆弧内,那么尝试返回离圆弧起始或者结束的较近的参数
*
* @param {number} an
* @returns
* @memberof Arc
*/
GetParamAtAngle(an: number): number;
/**
* 根据角度获得参数,不过在这里我们可以指定我们是要获取前面的参数还是后面的参数(正负)
* @param an
* @param [isStart] true:返回负数false 返回正数
* @returns
*/
GetParamAtAngle2(an: number, isStart?: boolean): number;
GetAngleAtPoint(pt: Vector3): number;
GetAngleAtParam(param: number): number;
GetSplitCurves(param: number[] | number): Arc[];
GetOffsetCurves(offsetDist: number): Arc[];
Extend(newParam: number): void;
Join(cu: Curve): Status;
Reverse(): this;
IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
/**
* 计算出圆弧所包含的角度
*
* @readonly
* @type {number}
* @memberof Arc
*/
get AllAngle(): number;
get Bul(): number;
/**
* 计算所包含的角度
*
* @private
* @param {number} endAngle 结束的角度
* @returns
* @memberof Arc
*/
ComputeAnlge(endAngle: number): number;
/**
* 解析两点和凸度所构成的圆弧
*
* @param {Vector2} p1
* @param {Vector2} p2
* @param {number} bul 凸度,在cad中,凸度为 <(四分之一圆心角)的正切值>
*/
ParseFromBul(p1: Vector3 | Vector2, p2: Vector3 | Vector2, bul: number): Arc;
FromThreePoint(pt1: Vector3, pt2: Vector3, pt3: Vector3): this;
/**
* 重载: 初始化绘制实体.
*
* @param {RenderType} [renderType=RenderType.Wireframe]
*/
InitDrawObject(renderType?: RenderType): Line2 | TLine<BufferGeometry, import("three").LineBasicMaterial>;
private UpdateGeometry;
/**
* 重载:更新绘制的实体
*
* @param {RenderType} type
* @param {Object3D} obj
* @memberof Arc
*/
UpdateDrawObject(type: RenderType, obj: Object3D): void;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
GetStretchPoints(): Array<Vector3>;
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
GetParamAtDist(d: number): number;
GetFistDeriv(pt: number | Vector3): Vector3;
GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Arc.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Arc.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Arc.ts"],"names":[],"mappings":"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"}

152
types/DatabaseServices/Entity/Board.d.ts vendored Normal file
View File

@@ -0,0 +1,152 @@
import { Matrix4, Vector3, Object3D, Geometry, Matrix3, UVGenerator } from 'three';
import { BoardOpenDir, BoardProcessOption, BoardType, FaceDirection } from '../../UI/Store/BoardInterface';
import { CADFiler } from '../CADFiler';
import { ObjectId } from '../ObjectId';
import { Shape } from '../Shape';
import { ExtrudeSolid, ExtureContourCurve } from './Extrude';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { Polyline } from './Polyline';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
export declare function ConverBoardTypeToSpaceType(type: BoardType): number;
export interface IModeling {
shape: Shape;
thickness: number;
dir: FaceDirection;
knifeRadius: number;
addLen: number;
addWidth?: number;
addDepth?: number;
}
export interface IKnifeInfo {
angle: number;
radius: number;
id: string;
name: string;
}
export interface I2DModeingItem {
depth: number;
offset: number;
knife: IKnifeInfo;
}
export interface I2DModeling {
path: Polyline;
dir: FaceDirection;
items: I2DModeingItem[];
}
export interface IPathItem {
pt: Vector3;
bul: number;
}
export interface I3DModeling {
path: IPathItem[];
dir: FaceDirection;
knife: IKnifeInfo;
}
/**
* 板件实体
*/
export declare class Board extends ExtrudeSolid {
private _Rotation;
private _BoardType;
private _Name;
private _BoardProcessOption;
private _DrillList;
private _LayerNails;
RelativeHardware: ObjectId[];
OpenDir: BoardOpenDir;
private _IsChaiDan;
private _2DModelingList;
private _3DModelingList;
constructor();
/**
* 创建一个代理数组,数组改变时被监听
*/
private CreateArray;
private InitBoardData;
InitBoard(length: number, width: number, thickness: number, boardType?: BoardType): void;
static CreateBoard(length: number, width: number, thickness: number, boardType?: BoardType): Board;
get DrillList(): Map<ObjectId, ObjectId[][]>;
get LayerNails(): ObjectId[];
AppendNails(ids: ObjectId[]): void;
ClearLayerNails(): void;
/**
* 你可以安心的修改它,这样会直接影响到板件,因为板件对这个对象添加了代理.
*/
get BoardProcessOption(): BoardProcessOption;
set BoardProcessOption(obj: BoardProcessOption);
get NeedUpdateRelevanceGroove(): boolean;
protected GetRelevanceKnifes(knifs: ExtrudeSolid[]): void;
ClearRelevance(en?: ExtrudeSolid): void;
get SplitBoards(): this[];
get BoardModeling(): IModeling[];
set BoardModeling(models: IModeling[]);
get Modeling2D(): I2DModeling[];
set Modeling2D(ms: I2DModeling[]);
get Modeling3D(): I3DModeling[];
set Modeling3D(ms: I3DModeling[]);
ClearModeling2DList(): void;
ClearModeling3DList(): void;
get IsChaiDan(): boolean;
set IsChaiDan(v: boolean);
ClearBoardModeling(): void;
/**
* 注意传入的排钻列表,避免指针被引用
*/
AppendDrillList(k: ObjectId, drs: ObjectId[][]): void;
ClearDrillList(k: ObjectId): void;
ClearAllDrillList(): void;
Erase(isErase?: boolean): void;
get RotateMat(): Matrix4;
get Height(): number;
set Height(v: number);
get Width(): number;
set Width(v: number);
get BoardType(): BoardType;
set BoardType(type: BoardType);
SetBoardType(type: BoardType): void;
get MinPoint(): Vector3;
get MaxPoint(): Vector3;
get IsRect(): boolean;
get IsSpecialShape(): boolean;
get HasGroove(): boolean;
get Name(): string;
set Name(n: string);
/**
* 板件的轮廓,在板件坐标系中的表现方式.
*/
get ContourCurve(): ExtureContourCurve;
set ContourCurve(cu: ExtureContourCurve);
Explode(): import("./Region").Region[];
RotateBoard(rox: number, roy: number, roz: number): void;
get Rotation(): {
x: number;
y: number;
z: number;
};
protected ApplyMirrorMatrix(m: Matrix4): this;
get UCGenerator(): UVGenerator;
UpdateUV(geo: Geometry, ocs: Matrix4, isRev?: boolean): void;
CopyFrom(obj: Board): void;
Clone(): this;
Join(target: this): import("../../Common/Status").Status;
private GetLinesDir;
private _2D3DPathObject;
private Get2DAnd3DPaths;
HandleSpliteEntitys(splitEntitys: this[]): void;
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
OffsetPathCache: Map<Polyline, {
[key: string]: Polyline;
}>;
private GetOffsetPath;
private HandleBoardMaterial;
UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void;
CheckSealing(obj: Object3D): void;
GetStretchPoints(): Vector3[];
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
DeferUpdate(): void;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Board.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Board.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Board.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,16 @@
import { Entity } from "./Entity";
import { BoxBufferGeometry, Object3D } from "three";
import { RenderType } from "../../GraphicsSystem/RenderType";
export declare function GetBoxGeoBufferGeometry(): BoxBufferGeometry;
export declare class BoxSolid extends Entity {
private _length;
private _width;
private _height;
OnlyRenderType: boolean;
private _opacity;
constructor(_length?: number, _width?: number, _height?: number);
set Opacity(o: number);
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(type: RenderType, obj: Object3D): void;
}
//# sourceMappingURL=BoxSolid.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"BoxSolid.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/BoxSolid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAQ,QAAQ,EAA8B,MAAM,OAAO,CAAC;AAEtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,wBAAgB,uBAAuB,sBAKtC;AAED,qBACa,QAAS,SAAQ,MAAM;IAIpB,OAAO,CAAC,OAAO;IAAM,OAAO,CAAC,MAAM;IAAM,OAAO,CAAC,OAAO;IAFpE,cAAc,UAAQ;IACtB,OAAO,CAAC,QAAQ,CAAO;gBACH,OAAO,SAAI,EAAU,MAAM,SAAI,EAAU,OAAO,SAAI;IAIxE,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,EAQpB;IACD,cAAc,CAAC,UAAU,GAAE,UAAiC;IAS5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;CAOnD"}

View File

@@ -0,0 +1,56 @@
import { Material, Matrix3, Matrix4, Object3D, Vector3 } from 'three';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { Box3Ext } from '../../Geometry/Box';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Shape2 } from '../Shape2';
import { Arc } from './Arc';
import { Curve } from './Curve';
import { DragPointType } from './DragPointType';
export declare class Circle extends Curve {
constructor(center?: Vector3, radius?: number);
private _Radius;
get Shape(): Shape2;
get Center(): Vector3;
set Center(v: Vector3);
get Radius(): number;
set Radius(v: number);
protected ApplyScaleMatrix(m: Matrix4): this;
protected ApplyMirrorMatrix(m: Matrix4): this;
get StartPoint(): Vector3;
get StartParam(): number;
get EndPoint(): Vector3;
get EndParam(): number;
PtInCurve(pt: Vector3): boolean;
get Area(): number;
get Area2(): number;
get Length(): number;
get IsClose(): boolean;
get IsClockWise(): boolean;
GetPointAtParam(param: number): Vector3;
GetPointAtDistance(distance: number): Vector3;
GetDistAtParam(param: number): number;
GetDistAtPoint(pt: Vector3): number;
GetParamAtDist(d: number): number;
GetSplitCurves(param: number[] | number): Arc[];
GetParamAtPoint(pt?: Vector3): number;
PtOnCurve(pt: Vector3): boolean;
GetOffsetCurves(offsetDist: number): Curve[];
IntersectWith2(curve: Curve, intType: IntersectOption): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
get BoundingBox(): Box3Ext;
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(type: RenderType, obj: Object3D): void;
UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material: Material): Object3D;
GetDragPointCount(drag: DragPointType): number;
GetGripPoints(): Array<Vector3>;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
GetStretchPoints(): Array<Vector3>;
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
GetFistDeriv(pt: number | Vector3): Vector3;
GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Circle.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQnH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAA2G,eAAe,EAAqD,MAAM,oCAAoC,CAAC;AACjO,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAehD,qBACa,MAAO,SAAQ,KAAK;gBAEjB,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAE,MAAa;IAMnD,OAAO,CAAC,OAAO,CAAS;IAExB,IAAI,KAAK,WAKR;IAED,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAKpB;IACD,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IAED,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAO5C,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAW7C,IAAI,UAAU,IAAI,OAAO,CAGxB;IACD,IAAI,UAAU,IAAI,MAAM,CAGvB;IACD,IAAI,QAAQ,IAAI,OAAO,CAGtB;IACD,IAAI,QAAQ,IAAI,MAAM,CAGrB;IACD,SAAS,CAAC,EAAE,EAAE,OAAO;IAIrB,IAAI,IAAI,WAGP;IACD,IAAI,KAAK,WAGR;IACD,IAAI,MAAM,WAGT;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAGD,IAAI,WAAW,IAAI,OAAO,CAAkB;IAE5C,eAAe,CAAC,KAAK,EAAE,MAAM;IAK7B,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAMnC,cAAc,CAAC,KAAK,EAAE,MAAM;IAK5B,cAAc,CAAC,EAAE,EAAE,OAAO;IAM1B,cAAc,CAAC,CAAC,EAAE,MAAM;IAKxB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAkCvC,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO;IAO5B,SAAS,CAAC,EAAE,EAAE,OAAO;IAIrB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE;IAW5C,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;IAwBrD,IAAI,WAAW,IAAI,OAAO,CAGzB;IAED,cAAc,CAAC,UAAU,GAAE,UAAiC;IAkB5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAKhD,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAe5E,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAQ9C,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAe/B,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAiCZ,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAsBrD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAOlC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAQxD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAajC,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAiBxD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"}

View File

@@ -0,0 +1,52 @@
import { Matrix3, Object3D, Vector3 } from "three";
import { ObjectSnapMode } from "../../Editor/ObjectSnapMode";
import { Box3Ext } from "../../Geometry/Box";
import { RenderType } from "../../GraphicsSystem/RenderType";
import { CADFiler } from "../CADFiler";
import { DragPointType } from "./DragPointType";
import { Entity } from "./Entity";
export declare class CompositeEntity extends Entity {
constructor();
Entitys: Entity[];
/**
* 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体.
*/
Explode(): Entity[];
Traverse(callback: (arg0: Entity) => void): void;
get BoundingBox(): Box3Ext;
protected InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(renderType: RenderType, obj: Object3D): void;
get ColorIndex(): number;
set ColorIndex(color: number);
get Material(): import("../ObjectId").ObjectId;
set Material(id: import("../ObjectId").ObjectId);
UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void;
RestoreJigMaterial(): void;
/**
*
* @param snapMode 捕捉模式(单一)
* @param pickPoint const
* @param lastPoint const
* @param viewXform const 最近点捕捉需要这个变量
* @returns object snap points
*/
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: number[], vec: Vector3): void;
GetStretchPoints(): Array<Vector3>;
/**
* 拉伸夹点,用于Stretch命令
*
* @param {Array<number>} indexList 拉伸点索引列表.
* @param {Vector3} vec 移动向量
* @memberof Entity
*/
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
private GetGripOrStretchPoints;
private GetStrectchPointCountList;
MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType): void;
CloneDrawObject(from: this): void;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=CompositeEntity.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CompositeEntity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/CompositeEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,qBACa,eAAgB,SAAQ,MAAM;;IAO3B,OAAO,EAAE,MAAM,EAAE,CAAM;IAInC;;MAEE;IACF,OAAO;IASP,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAWzC,IAAI,WAAW,YAMd;IACD,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAYjF,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAmBtD,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAgB3B;IACD,IAAI,QAAQ,mCAGX;IACD,IAAI,QAAQ,CAAC,EAAE,gCAAA,EAKd;IAED,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAK9D,kBAAkB;IASlB;;;;;;;MAOE;IACF,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAUZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAMhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAMxD,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IASjC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;IA4ClF,eAAe,CAAC,IAAI,EAAE,IAAI;IAqB1B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAclC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"}

109
types/DatabaseServices/Entity/Curve.d.ts vendored Normal file
View File

@@ -0,0 +1,109 @@
import { Material, Object3D, Shape, Vector3 } from 'three';
import { Status } from '../../Common/Status';
import { IntersectOption, IntersectResult } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { DragPointType } from './DragPointType';
import { Entity } from './Entity';
export declare enum ExtendType {
/**
* 前后都不延伸
*/
None = 0,
/**
* 只允许延伸前面
*/
Front = 1,
/**
* 只允许延伸后面
*/
Back = 2,
/**
* 前后延伸
*/
Both = 3
}
/**
* 曲线的基类,子类请实现以下方法.
*/
export declare abstract class Curve extends Entity {
constructor();
get Is2D(): boolean;
get StartPoint(): Vector3;
set StartPoint(v: Vector3);
get StartParam(): number;
get EndPoint(): Vector3;
set EndPoint(v: Vector3);
/** 曲线中点 */
get Midpoint(): Vector3;
get MidParam(): number;
get EndParam(): number;
get Area(): number;
/**
*获得曲线的面积,逆时针为正,顺时针为负.
*/
get Area2(): number;
get Length(): number;
get IsClose(): boolean;
/** 曲线为顺时针 */
get IsClockWise(): boolean;
abstract get Shape(): Shape;
GetPointAtParam(param: number): Vector3;
GetPointAtDistance(distance: number): Vector3;
GetDistAtParam(param: number): number;
GetDistAtPoint(pt: Vector3): number;
GetParamAtPoint(pt: Vector3): number;
GetParamAtPoint2(pt: Vector3): number;
GetParamAtDist(d: number): number;
/**
* 返回曲线在指定位置的一阶导数(在wcs内)
*
* @param {(number | Vector3)} param
* @returns {Vector3}
* @memberof Curve
*/
GetFistDeriv(param: number | Vector3): Vector3;
GetFistDerivAngle(param: number | Vector3): number;
/**
* 返回切割曲线后的结果.总是从起点开始切割,并且按顺序返回曲线.
* @param {(number[] | number)} param
* @returns {Array<Curve>}
*/
GetSplitCurves(param: number[] | number): Array<Curve>;
GetCurveAtParamRange(startParam: number, EndParam: number): Array<Curve>;
GetSplitCurvesByPts(pt: Vector3[] | Vector3): Array<Curve>;
protected SplitParamSort(param: number[] | number): number[];
Extend(newParam: number): void;
/**
* 连接曲线到本曲线,如果成功返回true
* @param {Curve} cu 需要连接的曲线
* @returns {boolean} 连接成功
* @memberof Curve
*/
Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status;
Reverse(): this;
PtOnCurve(pt: Vector3, fuzz?: number): boolean;
PtOnCurve2(pt: Vector3): boolean;
PtOnCurve3(p: Vector3, fuzz?: number): boolean;
ParamOnCurve(param: number, fuzz?: number): boolean;
GetOffsetCurves(offsetDist: number): Array<Curve>;
GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
/**
* 曲线相交点
*/
IntersectWith(curve: Curve, intType: IntersectOption, tolerance?: number): Vector3[];
/**
* 曲线相交点和点的参数
*/
IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): IntersectResult[];
/**
* 拽托点个数
*/
GetDragPointCount(drag: DragPointType): number;
protected OnlyRenderType: boolean;
/**
* 重载:更新实体材质
*/
UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void;
UpdateJigMaterial(color?: number): void;
}
//# sourceMappingURL=Curve.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Curve.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Curve.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,5 @@
export declare enum DragPointType {
Grip = 0,
Stretch = 1
}
//# sourceMappingURL=DragPointType.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DragPointType.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/DragPointType.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IAErB,IAAI,IAAI;IACR,OAAO,IAAI;CACd"}

View File

@@ -0,0 +1,67 @@
import { Box3, Matrix3, Object3D, Shape, Vector3 } from 'three';
import { Status } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Curve } from './Curve';
import { Polyline } from './Polyline';
export declare class Ellipse extends Curve {
private _radX;
private _radY;
private _rotate;
private _startAngle;
private _endAngle;
constructor(center?: Vector3, radX?: number, radY?: number, angle?: number);
get StartParam(): number;
get EndParam(): number;
get StartPoint(): Vector3;
get EndPoint(): Vector3;
get Shape(): Shape;
get IsClose(): boolean;
get Center(): Vector3;
set Center(v: Vector3);
get RadX(): number;
set RadX(v: number);
get RadY(): number;
set RadY(v: number);
get Rotation(): number;
set Rotation(v: number);
get StartAngle(): number;
get EndAngle(): number;
set StartAngle(v: number);
set EndAngle(v: number);
get Length(): number;
get Area(): number;
get TotalAngle(): number;
get BoundingBox(): Box3;
PtInCurve(pt: Vector3): boolean;
PtOnCurve(pt: Vector3): boolean;
PtOnEllipse(pt: Vector3): boolean;
GetPointAtParam(param: number): Vector3;
GetParamAtPoint(pt?: Vector3): number;
GetPointAtDistance(distance: number): Vector3;
GetDistAtParam(param: number): number;
GetDistAtPoint(pt: Vector3): number;
GetParamAtDist(d: number): number;
GetAngleAtParam(par: number): number;
GetCircleAngleAtPoint(pt: Vector3): number;
GetFistDeriv(pt: number | Vector3): Vector3;
GetClosestPointTo(p: Vector3, extend: boolean): Vector3;
GetOffsetCurves(offsetDist: number): this[];
GetSplitCurves(param: number[] | number): this[];
Join(el: Ellipse): Status.False | Status.False | Status.True;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
IntersectWith2(curve: Curve, intType: IntersectOption): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(type: RenderType, obj: Object3D): void;
private UpdateGeometry;
GetStretchPoints(): Array<Vector3>;
GetGripPoints(): Array<Vector3>;
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
Convert2Polyline(count?: number): Polyline;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Ellipse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Ellipse.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Ellipse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,OAAO,EAAW,QAAQ,EAAE,KAAK,EAAE,OAAO,EAA4B,MAAM,OAAO,CAAC;AAInH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAA6E,eAAe,EAAqD,MAAM,oCAAoC,CAAC;AACnM,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,qBACa,OAAQ,SAAQ,KAAK;IAE9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAe;gBAE5B,MAAM,CAAC,EAAE,OAAO,EAChB,IAAI,GAAE,MAAa,EACnB,IAAI,GAAE,MAAa,EACnB,KAAK,GAAE,MAAU;IAQrB,IAAI,UAAU,IAAI,MAAM,CAGvB;IACD,IAAI,QAAQ,IAAI,MAAM,CAGrB;IACD,IAAI,UAAU,YAGb;IACD,IAAI,QAAQ,YAGX;IACD,IAAI,KAAK,IAAI,KAAK,CAKjB;IACD,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAKpB;IACD,IAAI,IAAI,IAII,MAAM,CADjB;IACD,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAKjB;IACD,IAAI,IAAI,IAII,MAAM,CADjB;IACD,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAKjB;IACD,IAAI,QAAQ,IAII,MAAM,CADrB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAKrB;IACD,IAAI,UAAU,IAQI,MAAM,CALvB;IACD,IAAI,QAAQ,IAUI,MAAM,CAPrB;IACD,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,EAKvB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAKrB;IACD,IAAI,MAAM,WAKT;IACD,IAAI,IAAI,WAiBP;IACD,IAAI,UAAU,WAMb;IACD,IAAI,WAAW,IAAI,IAAI,CAGtB;IACD,SAAS,CAAC,EAAE,EAAE,OAAO;IAKrB,SAAS,CAAC,EAAE,EAAE,OAAO;IASrB,WAAW,CAAC,EAAE,EAAE,OAAO;IAKvB,eAAe,CAAC,KAAK,EAAE,MAAM;IAe7B,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO;IAoB5B,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAKnC,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,cAAc,CAAC,EAAE,EAAE,OAAO;IAK1B,cAAc,CAAC,CAAC,EAAE,MAAM;IAIxB,eAAe,CAAC,GAAG,EAAE,MAAM;IAK3B,qBAAqB,CAAC,EAAE,EAAE,OAAO;IAwBjC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IA+BjC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IA+CvD,eAAe,CAAC,UAAU,EAAE,MAAM;IAWlC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAqCvC,IAAI,CAAC,EAAE,EAAE,OAAO;IAwBhB,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAkCZ,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;IAsBrD,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAMvE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAMhD,OAAO,CAAC,cAAc;IAQtB,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAkB/B,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAIxD,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAoCrD,gBAAgB,CAAC,KAAK,SAAI;IAyB1B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAYlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAW3B"}

View File

@@ -0,0 +1,156 @@
import { Box3, Material, Matrix3, Matrix4, MeshStandardMaterial, Object3D, Vector3 } from 'three';
import { UpdateDraw } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { Box3Ext } from '../../Geometry/Box';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { CADObject } from '../CADObject';
import { ObjectId } from '../ObjectId';
/**
* Entity 是所有图元的基类,绘制的实体都集成该类.
*/
export declare class Entity extends CADObject {
IsEmbedEntity: boolean;
/**
* 该实体的只有一个渲染类型,任何渲染类型都一个样
*/
protected OnlyRenderType: boolean;
protected _CacheDrawObject: Map<RenderType, Object3D>;
protected materialId: ObjectId;
protected _Color: number;
protected _Matrix: Matrix4;
protected _SpaceOCS: Matrix4;
get SpaceOCS(): Matrix4;
get SpaceOCSInv(): Matrix4;
set SpaceOCS(m: Matrix4);
protected _Visible: boolean;
GroupId: ObjectId;
Template: ObjectId;
ProcessingGroupList: ObjectId[];
/**
* 当AutoUpdate为false时,记录需要更新的标志.
* 以便延迟更新时找到相应的更新标志.
*/
NeedUpdateFlag: UpdateDraw;
AutoUpdate: boolean;
set Material(materialId: ObjectId);
get Material(): ObjectId;
set ColorIndex(color: number);
get ColorIndex(): number;
/**
* 炸开实体
*/
Explode(): Entity[];
/**
* 返回对象的包围框.
*/
get BoundingBox(): Box3;
/**
* 返回对象在自身坐标系下的Box
*/
get BoundingBoxInOCS(): Box3Ext;
GetBoundingBoxInMtx(mtx: Matrix4): Box3Ext;
get BoundingBoxInSpaceCS(): Box3Ext;
get OCS(): Matrix4;
get OCSNoClone(): Matrix4;
set OCS(mat4: Matrix4);
get Normal(): Vector3;
get Position(): Vector3;
set Position(pt: Vector3);
Z0(): this;
MatrixPlanarizere(): this;
get OCSInv(): Matrix4;
/**
* 与指定实体是否共面.
*/
IsCoplaneTo(e: Entity): boolean;
/**
* 测试两个实体的包围盒是否相交.
*/
BoundingBoxIntersectWith(en: Entity): boolean;
ClearDraw(): this;
ClearDrawOfJig(): void;
get IsOnlyRender(): boolean;
_drawObject: Object3D;
get DrawObject(): Object3D;
get JigObject(): Object3D;
DestroyJigObject(): void;
protected _CurRenderType: RenderType;
UpdateRenderType(type: RenderType): void;
GetDrawObjectFromRenderType(renderType?: RenderType): Object3D;
/**
* 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体.
*/
protected InitDrawObject(renderType?: RenderType): Object3D;
__UpdateVersion__: number;
/**
* 当实体数据改变时,绘制的实体必须做出改变.供框架调用
*/
Update(mode?: UpdateDraw): void;
UpdateDrawGeometry(): void;
DeferUpdate(): void;
/**
* 当实体需要更新时,需要重载该方法,实现实体更新
*/
UpdateDrawObject(type: RenderType, en: Object3D): void;
/**
* 当实体需要被更新时,更新实体材质
*/
UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void;
protected get MeshMaterial(): import("three").MeshBasicMaterial | MeshStandardMaterial;
/**
* 更新实体Jig状态时的材质
*/
UpdateJigMaterial(color?: number): void;
RestoreJigMaterial(): void;
get Visible(): boolean;
set Visible(v: boolean);
private get IsVisible();
UpdateVisible(): void;
GoodBye(): void;
Erase(isErase?: boolean): void;
EraseEvent(isErase: boolean): void;
/**
* 使用统一的方法设置对象的矩阵.
* 需要对缩放矩形进行重载.避免对象矩阵不是单位矩阵
*/
ApplyMatrix(m: Matrix4): this;
protected ApplyScaleMatrix(m: Matrix4): this;
protected ApplyMirrorMatrix(m: Matrix4): this;
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: number[], vec: Vector3): void;
/**
*
* @param snapMode 捕捉模式(单一)
* @param pickPoint const
* @param lastPoint const
* @param viewXform const 最近点捕捉需要这个变量
* @returns object snap points
*/
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
GetStretchPoints(): Array<Vector3>;
/**
* 拉伸夹点,用于Stretch命令
*
* @param {Array<number>} indexList 拉伸点索引列表.
* @param {Vector3} vec 移动向量
* @memberof Entity
*/
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
IntersectWith(curve: Entity, intType: IntersectOption): Vector3[];
Clone(): this;
CloneDrawObject(from: this): void;
static __ReadFileIng__: boolean;
__ReadFileIng__: boolean;
get ReadFileIng(): boolean;
/**
* 从文件读取,序列化自身,如果需要,重载_ReadFile
*/
ReadFile(file: CADFiler): void;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
ApplyPartialUndo(undoData: CADObject): void;
CopyFrom(obj: CADObject): void;
}
//# sourceMappingURL=Entity.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Entity.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,17 @@
import { Object3D } from "three";
import { RenderType } from "../../GraphicsSystem/RenderType";
import { CADFiler } from "../CADFiler";
import { Entity } from "./Entity";
/**
* 外部引用的实体,比如glTF
*/
export declare class EntityRef extends Entity {
private _url?;
OnlyRenderType: boolean;
constructor(_url?: string);
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(type: RenderType, obj: Object3D): void;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=EntityRef.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"EntityRef.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/EntityRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,qBACa,SAAU,SAAQ,MAAM;IAGrB,OAAO,CAAC,IAAI,CAAC;IADzB,cAAc,UAAQ;gBACF,IAAI,CAAC,EAAE,MAAM;IAMjC,cAAc,CAAC,UAAU,GAAE,UAAiC;IAgC5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAQhD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"}

View File

@@ -0,0 +1,234 @@
import { BoxGeometry, BufferGeometry, Geometry, Matrix3, Matrix4, Mesh, Object3D, UVGenerator, Vector3 } from "three";
import { Line2 } from "three/examples/jsm/lines/Line2";
import { Status } from "../../Common/Status";
import { CSG } from "../../csg/core/CSG";
import { ObjectSnapMode } from "../../Editor/ObjectSnapMode";
import { Box3Ext } from "../../Geometry/Box";
import { OBB } from "../../Geometry/OBB/obb";
import { RenderType } from "../../GraphicsSystem/RenderType";
import { CADFiler } from "../CADFiler";
import { ObjectId } from "../ObjectId";
import { Shape } from "../Shape";
import { Circle } from "./Circle";
import { DragPointType } from "./DragPointType";
import { Entity } from "./Entity";
import { Polyline } from "./Polyline";
import { Region } from "./Region";
export declare type ExtureContourCurve = Polyline | Circle;
export declare type ExtureContour = Polyline | Circle | ExtrudeSolid | Region;
export declare class ExtrudeSolid extends Entity {
protected height: number;
protected width: number;
/**
* 拉伸实体的厚度
* 我们允许它是一个负数,但是这个时候这个实体已经是一个无效的拉伸实体了.
* 允许负数,用来校验凹槽的合理性.
*/
protected thickness: number;
protected isRect: boolean;
IsKnife: boolean;
RelevanceMeats: ObjectId[];
RelevanceKnifs: ObjectId[];
__OriginalId__: ObjectId;
__OriginalEnt__: this;
/**
* 拉伸形状
* 出于优化考虑,可能未初始化
* 形状位于WCS 0点位置,不随OCS变化而变化
*/
protected contourCurve: ExtureContourCurve;
/**
* 正面和反面的凹槽造型
*/
protected grooves: ExtrudeSolid[];
protected knifeRadius: number;
protected groovesAddLength: number;
protected groovesAddWidth: number;
protected groovesAddDepth: number;
__TempIndexVersion__: {
Index: number;
Version: number;
};
constructor();
get KnifeRadius(): number;
set KnifeRadius(v: number);
get BoundingBox(): Box3Ext;
get BoundingBoxInOCS(): Box3Ext;
get OBB(): OBB;
get GroovesAddLength(): number;
set GroovesAddLength(v: number);
get GroovesAddWidth(): number;
set GroovesAddWidth(v: number);
get GroovesAddDepth(): number;
set GroovesAddDepth(v: number);
Clone(): this;
ApplyMatrix(m: Matrix4): this;
protected ApplyScaleMatrix(m: Matrix4): this;
get Position(): Vector3;
set Position(p: Vector3);
get Width(): number;
get Height(): number;
get Thickness(): number;
set Thickness(thickness: number);
get Grooves(): ExtrudeSolid[];
/**
* 返回未拷贝的轮廓曲线
*/
get ContourCurve(): ExtureContourCurve;
set ContourCurve(cu: ExtureContourCurve);
/**
* 生成矩形轮廓(强制)
*/
GeneralRectContour(): void;
/**
* 转换成矩形拉伸实体
*/
ConverToRectSolid(width?: number, height?: number, thickness?: number): this;
/**
* 更新拉伸实体的轮廓
* @param curve 曲线已经存在WCS坐标系
*/
SetContourCurve(curve: ExtureContourCurve): void;
/**
* 在不改变Normal和实体显示的情况下,修改X轴的指向
* @param xAxis
*/
SetXAxis(xAxis: Vector3): this;
/**
* 检验轮廓曲线,通常当轮廓曲线被修改时,都需要检验轮廓曲线,并更新实体大小和轮廓位置.
* >计算轮廓大小
* >判断是否矩形
* >修正轮廓基点
*/
CheckContourCurve(): void;
get IsRect(): boolean;
/**
* 这个拉伸实体的面域形状
*/
get Shape(): Shape;
/**
* 实体合并(不会删除target)
*/
Join(target: this): Status;
get Volume(): number;
/**
* 被切割
* @param extrudes 切割刀
* @param [output=undefined] 如果实体被分裂,那么输出分裂的其他实体(如果为空,则尝试入当前实体的容器中)
* @param [checkIntersect=true] 检查相交,性能优化
* @returns 切割是否成功
*/
Subtract(extrudes: ExtrudeSolid[], output?: ExtrudeSolid[], checkIntersect?: boolean): boolean;
RelevanceSubtract(knif: ExtrudeSolid, check?: boolean): void;
/**
* 当实体被分裂后,加入新图纸时,需要修复关联拉槽
*/
RepairRelevance(): void;
AppendGroove(groove: ExtrudeSolid): void;
/** 添加槽进板件,并且自动分裂.
* 通常槽已经校验过准确性,所以不在校验
*/
AppendGrooves(grooves: ExtrudeSolid[], output?: ExtrudeSolid[]): void;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
protected GetStrectchPointCountList(dragType: DragPointType): number[];
GetGripOrStretchPoints(dragType: DragPointType): Vector3[];
MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType): void;
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: number[], vec: Vector3): void;
GetStretchPoints(): Vector3[];
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
/**
* 只对自身的轮廓和厚度进行拉伸,忽略子实体
*/
MoveGripOrStretchPointsOnly(indexList: Array<number>, vec: Vector3, dragType: DragPointType): void;
IsStretchThickness(indexs: number[]): boolean;
/**
* 当调用Draw时,可以生成bsp信息
*/
private csg;
get CSG(): CSG;
/**
* (步骤1.2.)
* 将目标拉伸实体转换成在板件内部可用的凹槽实体
* @param target 该对象可能被修改(内部不拷贝该实体)
* @param useClone 转换后的实体是目标实体拷贝后修改的
*/
ConverToLocalGroove(target: ExtrudeSolid): ExtrudeSolid[];
/**
* (步骤2)
* 更新凹槽位置和厚度(校验凹槽的Z轴位置是否存在交集)
*/
GrooveCheckPosition(target: ExtrudeSolid): Status;
/**
* (步骤3)
* 计算凹槽合并
*/
GrooveCheckMerge(): void;
/**
* (步骤4.1)
* 计算凹槽轮廓(可能分裂)
* @param target 不拷贝修改
* @returns this[] 凹槽在本实体中正确的约束状态.(可能分裂成为多个)
*/
GrooveCheckContour(target: ExtrudeSolid): ExtrudeSolid[];
/**
* (步骤4.2)
* 计算本实体被全身度的凹槽差集后正确的实体轮廓,和有可能的分裂实体
* @param splitEntitys 分裂出来的实体
* @returns [Status] Status : 消失不见
*/
ContourCheckSubtract(splitEntitys: this[]): boolean;
IsLazyGrooveCheck: boolean;
IsNeedGrooveCheck: boolean;
/**
* 无法知道修改了轮廓是否为更新到内部凹槽.
* 无法知道修改了内部凹槽之后是否会更新到轮廓.
* 所以默认全部校验内部的凹槽
*/
GrooveCheckAll(splitEntitys: this[]): void;
/** 校验内部槽并且自动分裂 */
GrooveCheckAllAutoSplit(output?: ExtrudeSolid[]): void;
HandleSpliteEntitys(splitEntitys: this[]): void;
LazyGrooveCheckAll(): void;
GetPrintObject3D(): (Line2 | Mesh<BufferGeometry, import("three").ShaderMaterial>)[];
InitDrawObject(renderType?: RenderType): Object3D;
get UCGenerator(): UVGenerator;
__CacheKnifVersion__: {
[key: number]: number;
};
get NeedUpdateRelevanceGroove(): boolean;
__CacheVolume__: number;
__CacheSplitExtrudes: this[];
/**
* 计算关联拉槽,更新绘制对象(MeshGeometry和EdgeGeometry)
*/
private CalcRelevanceGroove;
/**
* 如果实体被切割,那么将返回分裂的实体数组,否则返回自身
*/
get SplitExtrudes(): this[];
protected GetRelevanceKnifes(knifs: ExtrudeSolid[]): void;
ClearRelevance(en?: ExtrudeSolid): void;
private _MeshGeometry;
get MeshGeometry(): BufferGeometry;
private _EdgeGeometry;
protected get EdgeGeometry(): BufferGeometry;
UpdateUV(geo: Geometry, ocs: Matrix4, isRev?: boolean): void;
UpdateBufferGeometryUvs(isRev: boolean): void;
DeferUpdate(): void;
UpdateDrawGeometry(): void;
UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void;
UpdateJigMaterial(color?: number): void;
/**
* 简化的文件读取和写入,只写入必要的数据,没有id,没有其他版本号
*/
ReadFileLite(file: CADFiler): void;
WriteFileLite(file: CADFiler): void;
private ReadFileOnly;
private WriteFileOnly;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
export declare function FastMeshGeometry(width: number, height: number, thickness: number): BoxGeometry;
//# sourceMappingURL=Extrude.d.ts.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
export declare const ExtrudeConfig: {
DisableRefCut: boolean;
DisableCheckGroove: boolean;
};
//# sourceMappingURL=ExtrudeConfig.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ExtrudeConfig.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/ExtrudeConfig.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}

55
types/DatabaseServices/Entity/Line.d.ts vendored Normal file
View File

@@ -0,0 +1,55 @@
import { Box3, Line as TLine, Matrix3, Matrix4, Object3D, Shape, Vector3 } from 'three';
import { Status } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Curve } from './Curve';
export declare class Line extends Curve {
private _StartPoint;
private _EndPoint;
constructor(_StartPoint?: Vector3, _EndPoint?: Vector3);
get Is2D(): boolean;
get Shape(): Shape;
Z0(): this;
protected ApplyScaleMatrix(m: Matrix4): this;
protected ApplyMirrorMatrix(m: Matrix4): this;
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(type: RenderType, lineObj: TLine): void;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform: Matrix3): Vector3[];
GetGripPoints(): Array<THREE.Vector3>;
MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
GetStretchPoints(): Array<THREE.Vector3>;
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
GetFistDeriv(param: number | Vector3): Vector3;
IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
GetPointAtParam(param: number): Vector3;
GetParamAtPoint(pt: Vector3): number;
GetParamAtDist(d: number): number;
GetPointAtDistance(distance: number): Vector3;
GetDistAtParam(param: number): number;
GetDistAtPoint(pt: Vector3): number;
GetSplitCurves(param: number[] | number): Curve[];
GetParamAtPoint2(pt: Vector3): number;
PtOnCurve3(p: Vector3, fuzz?: number): boolean;
GetClosestAtPoint(pt: Vector3, extend: boolean): {
closestPt: Vector3;
param: number;
};
GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
Extend(newParam: number): void;
Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status;
Reverse(): this;
GetOffsetCurves(offsetDist: number): Array<Curve>;
get BoundingBox(): Box3;
get StartParam(): number;
get EndParam(): number;
get Length(): number;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
set StartPoint(p: Vector3);
get StartPoint(): Vector3;
get EndPoint(): Vector3;
set EndPoint(p: Vector3);
}
//# sourceMappingURL=Line.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Line.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,IAAI,IAAI,KAAK,EAAS,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAK/G,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAA8F,eAAe,EAAqD,MAAM,oCAAoC,CAAC;AACpN,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhC,qBACa,IAAK,SAAQ,KAAK;IAGf,OAAO,CAAC,WAAW;IAC3B,OAAO,CAAC,SAAS;gBADD,WAAW,UAAc,EACjC,SAAS,UAAc;IAKnC,IAAI,IAAI,YAGP;IAED,IAAI,KAAK,UAGR;IAED,EAAE;IAQF,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAO5C,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAa7C,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAYvE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK;IAKjD,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,GACnB,OAAO,EAAE;IAwCZ,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAIrC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAiBrD,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAIxC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAYxD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO;IAK9C,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,SAAO;IA2BvE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIvC,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IAOpC,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IAInC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAmBvC,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IAOrC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,SAAO,GAAG,OAAO;IAM5C,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;KAAE;IA+CvF,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAKxD,MAAM,CAAC,QAAQ,EAAE,MAAM;IAavB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,UAAQ,EAAE,SAAS,SAAO,GAAG,MAAM;IAoC3D,OAAO,IAAI,IAAI;IAOf,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;IASjD,IAAI,WAAW,IAAI,IAAI,CAGtB;IAED,IAAI,UAAU,WAGb;IACD,IAAI,QAAQ,WAGX;IAED,IAAI,MAAM,IAAI,MAAM,CAAwD;IAM5E,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAQlC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAUxB,IAAI,UAAU,CAAC,CAAC,EAAE,OAAO,EAKxB;IACD,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,IAAI,QAAQ,IAAI,OAAO,CAGtB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAKtB;CAGJ"}

View File

@@ -0,0 +1,28 @@
import { Object3D, Vector3 } from "three";
import { ObjectSnapMode } from "../../Editor/ObjectSnapMode";
import { RenderType } from "../../GraphicsSystem/RenderType";
import { Entity } from "./Entity";
export declare class Point extends Entity {
constructor(position?: Vector3);
/**
* 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体.
*
* @param {RenderType} [renderType=RenderType.Wireframe] 渲染类型
* @returns {Object3D} 返回的threejs实体.
* @memberof Entity
*/
protected InitDrawObject(renderType?: RenderType): Object3D;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3): Vector3[];
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: number[], vec: Vector3): void;
GetStretchPoints(): Array<Vector3>;
/**
* 拉伸夹点,用于Stretch命令
*
* @param {Array<number>} indexList 拉伸点索引列表.
* @param {Vector3} vec 移动向量
* @memberof Entity
*/
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
}
//# sourceMappingURL=Point.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Point.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,QAAQ,EAAyC,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3I,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsBlC,qBACa,KAAM,SAAQ,MAAM;gBAEjB,QAAQ,GAAE,OAAuB;IAM7C;;;;;;MAME;IAEF,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAOjF,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,GACnB,OAAO,EAAE;IAOZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAShD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;CAI3D"}

View File

@@ -0,0 +1,193 @@
import { BufferGeometry, Line as TLine, Matrix3, Matrix4, Object3D, Vector2, Vector3 } from 'three';
import { Line2 } from 'three/examples/jsm/lines/Line2';
import { Status } from '../../Common/Status';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { Box3Ext } from '../../Geometry/Box';
import { IntersectOption } from '../../GraphicsSystem/IntersectWith';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { Curve, ExtendType } from './Curve';
import { DragPointType } from './DragPointType';
export interface PolylineProps {
pt: Vector2;
bul: number;
}
export declare class Polyline extends Curve {
private _LineData;
private _ClosedMark;
constructor(_LineData?: PolylineProps[]);
UpdateMatrixTo(m: Matrix4): void;
/**
* 原地翻转,仅改变法向量
*/
Flip(): this;
Reverse(): this;
set LineData(data: PolylineProps[]);
get LineData(): PolylineProps[];
get NumberOfVertices(): number;
/**
* 在指定位置插入点.
* 例如:
* pl.AddVertexAt(pl.NumberOfVerticesk,p);//在末尾插入一个点
*
* @param {number} index 索引位置
* @param {Vector2} pt 点
* @returns {this}
* @memberof Polyline
*/
AddVertexAt(index: number, pt: Vector2 | Vector2[]): this;
RemoveVertexAt(index: number): this;
RemoveVertexIn(from: number, to: number): this;
/**
* 重设闭合多段线的起点
* @param index 起始index,如果index非整数,将用最接近的整数作为起始索引
*/
ResetStartPoint(index: number): boolean;
GetPoint2dAt(index: number): Vector2 | undefined;
/**
* 设置指定点的位置
*
* @param {number} index
* @param {Vector2} pt
* @memberof Polyline
*/
SetPointAt(index: number, pt: Vector2): this;
protected ApplyScaleMatrix(m: Matrix4): this;
protected ApplyMirrorMatrix(m: Matrix4): this;
SetBulgeAt(index: number, bul: number): this;
GetBuilgeAt(index: number): number;
Rectangle(length: number, height: number): this;
RectangleFrom2Pt(p1: Vector3, p2: Vector3): this;
get StartPoint(): Vector3;
set StartPoint(p: Vector3);
get EndPoint(): Vector3;
set EndPoint(p: Vector3);
get CurveCount(): number;
get StartParam(): number;
/**
* 表示最后一条曲线的终止参数,使用该参数可以直接遍历到多段线的所有子线段. for(i<EndParam)...
*/
get EndParam(): number;
get Area2(): number;
get Area(): number;
get CloseMark(): boolean;
get IsClose(): boolean;
set CloseMark(v: boolean);
DigestionCloseMark(): void;
get Length(): number;
/**
* 获得指定参数所在的点.
* 当曲线存在闭合标志时,参数必须在曲线内部.
* 当曲线不存在闭合标志时,参数允许延伸出曲线.
*
* @param {number} param 参数
* @returns {Vector3} 三维点,可为空
* @memberof Polyline
*/
GetPointAtParam(param: number): Vector3;
GetDistAtParam(param: number): number;
GetPointAtDistance(dist: number): Vector3;
/**
* 返回参数所在的点. 如果曲线不闭合,会试图返回延伸点参数
*
* @param {Vector3} pt
* @returns {number}
* @memberof Polyline
*/
GetParamAtPoint(pt: Vector3): number;
GetParamAtDist(dist: number): number;
GetDistAtPoint(pt: Vector3): number;
/**
* 返回曲线的一阶导数.
* 当曲线闭合(标志)且点不在曲线上.
* 或者曲线不闭合(标志) 且点不在曲线上也不在延伸上
*
* @param {(number | Vector3)} param
* @returns {Vector3}
* @memberof Polyline
*/
GetFistDeriv(param: number | Vector3): Vector3;
GetSplitCurves(param: number[] | number): Array<Polyline>;
GetCurveAtParamRange(startParam: number, endParam: number): Array<Curve>;
Extend(newParam: number): void;
MatrixAlignTo2(toMatrix: Matrix4): {
pts: Vector2[];
buls: number[];
};
Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status.False | Status.True;
/**
* 将曲线数组组合成多段线
* @param curves 已经使用CurveLinked的数组,总是首尾相连
* @returns
*/
static Combine(curves: Curve[], tolerance?: number): Polyline | undefined;
/**首尾相连的曲线直接连接 */
static FastCombine(curves: Curve[], tolerance?: number): Polyline | undefined;
PtOnCurve(pt: Vector3): boolean;
PtOnCurve3(p: Vector3, fuzz?: number): boolean;
PtInCurve(pt: Vector3): boolean;
GetClosestPointTo(pt: Vector3, extend: boolean): Vector3;
GetClosestPointTo2(pt: Vector3, extType: ExtendType): Vector3;
GetOffsetCurves(offsetDist: number): Polyline[];
GetFeedingToolPath(offsetDist: number, offsetDistSq?: number): Polyline[];
/**
* 分解
*/
Explode(): Curve[];
/**
* 根据参数得到参数所在的子曲线.
*
* 当曲线存在闭合标志时,参数必须在曲线内部,否则返回空.
*
* @param {number} param 参数值
* @returns {Curve} 曲线(直线或者圆弧) 或空
* @memberof Polyline
*/
GetCurveAtParam(param: number): Curve;
/**
* 得到参数在子曲线中的表示
*
* @param {number} param 参数在多段线中表示
* @returns {number} 参数在子曲线中表示
* @memberof Polyline
*/
GetCurveParamAtParam(param: number): number;
/**
* 获得曲线,来自索引位置.
* @param {number} i 索引位置 整数
*/
GetCurveAtIndex(i: number): Curve;
IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[];
IntersectSelf(): number[];
IsIntersectSelf(): boolean;
get BoundingBox(): Box3Ext;
/**
* 得到曲线有用的点表和凸度(闭合曲线首尾重复)
*/
get PtsBuls(): {
pts: Vector2[];
buls: number[];
};
get IsBulge(): boolean;
get Shape(): import("three").Shape;
get SVG(): string;
InitDrawObject(renderType?: RenderType): Line2 | TLine<BufferGeometry, import("three").LineBasicMaterial>;
UpdateDrawObject(type: RenderType, en: Object3D): void;
GetDragPointCount(drag: DragPointType): number;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: number[], moveVec: Vector3): void;
GetStretchPoints(): Vector3[];
/**
* 范围拉伸(stretch),对夹点进行拉伸.
* 如果对圆弧的一侧进行拉伸,那么修改bul
*
* @param {Array<number>} indexList
* @param {Vector3} vec
*/
MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
export declare const TempPolyline: Polyline;
//# sourceMappingURL=Polyline.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Polyline.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,55 @@
import { Box3, BufferGeometry, Material, Matrix3, Matrix4, Object3D, Vector3 } from 'three';
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
import { BoolOpeartionType } from '../../GraphicsSystem/BoolOperateUtils';
import { RenderType } from '../../GraphicsSystem/RenderType';
import { CADFiler } from '../CADFiler';
import { ShapeManager } from '../ShapeManager';
import { Curve } from './Curve';
import { Entity } from './Entity';
export declare class Region extends Entity {
private _ShapeManager;
static CreateFromCurves(cus: Curve[]): Region | undefined;
constructor(_ShapeManager?: ShapeManager);
get ShapeManager(): ShapeManager;
get Area(): number;
get BoundingBox(): Box3;
Explode(): Curve[] | Region[];
/**
* 对于布尔操作,这个将会变换内部轮廓到对方坐标系.
* 并且这个变换不会更新图形绘制.
* @param {Matrix4} m
* @memberof Region
*/
ShapeApplyMatrix(m: Matrix4): void;
GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
GetGripPoints(): Array<Vector3>;
MoveGripPoints(indexList: number[], moveVec: Vector3): void;
ApplyMatrix(m: Matrix4): this;
get Position(): Vector3;
set Position(pt: Vector3);
protected ApplyScaleMatrix(m: Matrix4): this;
Z0(): this;
MatrixPlanarizere(): this;
protected ApplyMirrorMatrix(m: Matrix4): this;
/**
* 请注意:该计算会操作otherRegion的矩阵
* @param {Region} otherRegion
* @param {BoolOpeartionType} boolType
*/
BooleanOper(otherRegion: Region, boolType: BoolOpeartionType): boolean;
private _MeshGeometry;
get MeshGeometry(): BufferGeometry;
private _EdgeGeometry;
private get EdgeGeometry();
private UpdateGeometry;
UpdateDrawGeometry(): void;
InitDrawObject(renderType?: RenderType): Object3D;
UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
/**
* 当实体需要被更新时,更新实体材质
*/
UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void;
protected _ReadFile(file: CADFiler): void;
WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Region.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Region.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Region.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAgB,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAQ,QAAQ,EAA0B,OAAO,EAAE,MAAM,OAAO,CAAC;AAIxI,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBACa,MAAO,SAAQ,MAAM;IAelB,OAAO,CAAC,aAAa;IAbjC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS;gBAarC,aAAa,GAAE,YAAiC;IAMpE,IAAI,YAAY,iBAGf;IACD,IAAI,IAAI,WAGP;IACD,IAAI,WAAW,SAMd;IACD,OAAO;IAoBP;;;;;OAKG;IACH,gBAAgB,CAAC,CAAC,EAAE,OAAO;IAK3B,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAyBZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAO/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO;IAMpD,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ7B,IAAI,QAAQ,IAIK,OAAO,CADvB;IACD,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,EAgBvB;IAED,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAW5C,EAAE;IAQF,iBAAiB;IAQjB,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO;IAItC;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAkBtE,OAAO,CAAC,aAAa,CAAiB;IACtC,IAAI,YAAY,IAAI,cAAc,CAMjC;IAED,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,KAAK,YAAY,GAMvB;IAED,OAAO,CAAC,cAAc;IA4CtB,kBAAkB;IAMlB,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAoCvE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAyCtD;;MAEE;IACF,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAiC7E,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAM3B"}