更新版本

This commit is contained in:
ChenX
2023-12-07 09:34:41 +08:00
parent 5cc4e64b73
commit 0b53d5eaa9
49 changed files with 737 additions and 492 deletions

View File

@@ -1,2 +0,0 @@
export declare function RandomIndex(count: number, exclude?: number): number;
//# sourceMappingURL=Random.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Random.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnE"}

View File

@@ -1,33 +0,0 @@
import { Box3 } from "three";
import { Circle } from "../../DatabaseServices/Entity/Circle";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
import { Point } from "../Common/Point";
import { Part } from "../Core/Part";
import { Path } from "../Core/Path";
import { IOffset } from "./Simplify2";
/** 内外接多边形 */
export declare function Circle2Points(circle: Circle, knifRadius: number, splitSize?: number, outside?: boolean): Point[];
export declare function Curve2Path(curve: Circle | Polyline, outside?: boolean): Path;
export declare class CurveWrap {
Curve: Polyline | Circle;
KnifRadius: number;
IsOutside: boolean;
BoundingBox: Box3;
Area: number;
SimplyPolyline: Polyline;
SimplyOffset: IOffset;
Used: boolean;
Holes: CurveWrap[];
Points: Point[];
constructor(Curve: Polyline | Circle, KnifRadius?: number, IsOutside?: boolean);
ContainsCurve(curve: CurveWrap): boolean;
GetOutsidePoints(): Point[];
GetInsidePoints(): Point[];
}
/**
* 曲线集合转零件集合.
* 如果存在曲线嵌套,那么自动设置为网洞
* 零件会和曲线绑定,以便后续应用坐标系变换
*/
export declare function Curves2Parts(curves: (Polyline | Circle)[], binPath: Path, KnifRadius?: number): Part[];
//# sourceMappingURL=Curves2Parts.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Curves2Parts.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Curves2Parts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAW,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,OAAO,EAA0B,MAAM,aAAa,CAAC;AAE9D,aAAa;AACb,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,SAAK,EAAE,OAAO,UAAQ,GAAG,KAAK,EAAE,CAiB1G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,UAAQ,GAAG,IAAI,CAa1E;AAED,qBAAa,SAAS;IAaC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAAS,UAAU;IAAa,SAAS,EAAE,OAAO;IAX7F,WAAW,EAAE,IAAI,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,UAAS;IACb,KAAK,EAAE,SAAS,EAAE,CAAM;IAExB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAEG,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAS,UAAU,SAAI,EAAS,SAAS,GAAE,OAAc;IAwBpG,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAOxC,gBAAgB,IAAI,KAAK,EAAE;IA6B3B,eAAe,IAAI,KAAK,EAAE;CAyB7B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,SAAM,GAAG,IAAI,EAAE,CAuDnG"}

View File

@@ -1,10 +1,17 @@
import { Circle } from "../../DatabaseServices/Entity/Circle";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
import { Point } from "../Common/Point";
export declare let Rotations: number[][];
/** 内外接多边形 */
export declare function Circle2Points(circle: Circle, knifRadius: number, splitSize?: number, outside?: boolean): Point[];
/**
* 针对板件的曲线变点表做的特殊优化
*/
export declare function Curves2Points(cu: Circle | Polyline, outside: boolean, knifeRadius: number): [(Circle | Polyline), Point[]];
export declare function Polyline2Points(pl: Polyline, outside: boolean, knifeRadius: number): [Polyline, Point[]];
/**
* 移除小圆弧,使用尖角直连(有可能产生自交 概率不大)
* @param pl 请传入逆时针多段线(我们将直接修改这个多段线,如果你不想被修改 你应该拷贝一个)
* @param [radius=30]
*/
export declare function PolylineFilletMinArc(pl: Polyline, radius?: number): void;
//# sourceMappingURL=Curves2Points.d.ts.map

View File

@@ -1 +1 @@
{"version":3,"file":"Curves2Points.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Curves2Points.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,eAAO,IAAI,SAAS,YAInB,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAM1H;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAiDxG"}
{"version":3,"file":"Curves2Points.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Curves2Points.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAE9D,OAAO,EAAoB,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAIpF,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,aAAa;AACb,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,SAAK,EAAE,OAAO,UAAQ,GAAG,KAAK,EAAE,CAiB1G;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAM1H;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAqDxG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,SAAK,QA6B7D"}

View File

@@ -1,11 +0,0 @@
interface P {
x: number;
y: number;
}
export interface IOffset {
negativeOffset: number;
positiveOffset: number;
}
export declare function SimplifyDouglasPeucker(points: P[], sqTolerance: number): [P[], IOffset];
export {};
//# sourceMappingURL=Simplify2.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Simplify2.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Simplify2.ts"],"names":[],"mappings":"AAEA,UAAU,CAAC;IAEP,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IAEpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AA0ED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAQvF"}

View File

@@ -1,6 +0,0 @@
export declare const GNestConfig: {
RotateHole: boolean;
UsePartGroup: boolean;
UseOffsetSimplify: boolean;
};
//# sourceMappingURL=GNestConfig.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GNestConfig.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/GNestConfig.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"}

View File

@@ -1,64 +0,0 @@
import { Box2 } from "../Common/Box2";
import { NestFiler } from "../Common/Filer";
import { Point } from "../Common/Point";
import { PartState } from "./PartState";
import { Path } from "./Path";
/**
* 零件类
* 零件类可以绑定数据,也存在位置和旋转状态的信息
*
* 初始化零件:
* 传入零件的轮廓,刀半径,包围容器(或者为空?)
* 初始化用于放置的轮廓。将轮廓首点移动到0点记录移动的点P。
*
* 零件放置位置:
* 表示零件轮廓首点的位置。
*
* 零件的旋转:
* 表示零件轮廓按照首点0旋转。
*
* 还原零件的放置状态:
* 同样将零件移动到0点
* 同样将零件旋转
* 同样将零件移动到指定的位置
* 零件可能处于容器中,变换到容器坐标系
*
*/
export declare class Part<T = any, Matrix = any> {
Id: number;
private _Holes;
_RotateHoles: PartState[][];
StateIndex: number;
RotatedStates: PartState[];
PlacePosition: Point;
HolePosition: Point;
UserData: T;
Parent: Part;
PlaceCS: Matrix;
PlaceIndex: number;
GroupMap: {
[key: number]: Part[];
};
get State(): PartState;
get Holes(): PartState[];
Init(path: Path, bin: Path, rotateCount?: number): this;
Init2(path: Path, bin: Path, rotations?: number[]): this;
ParseGroup(partOther: Part, bin: Path): Part[];
AppendHole(path: Path): void;
Mirror(doubleFace: boolean): void;
Clone(): Part<any, any>;
Mutate(): this;
ReadFile(file: NestFiler): void;
WriteFile(file: NestFiler): void;
}
export declare class PartGroup extends Part {
part1: Part;
part2: Part;
index1: number;
index2: number;
p: Point;
box: Box2;
constructor(part1: Part, part2: Part, index1: number, index2: number, p: Point, box: Box2, bin: Path);
Export(): Part[];
}
//# sourceMappingURL=Part.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Part.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/Part.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG;IAEnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,CAAmB;IACjC,YAAY,EAAE,SAAS,EAAE,EAAE,CAAM;IAEjC,UAAU,SAAK;IACf,aAAa,EAAE,SAAS,EAAE,CAAM;IAChC,aAAa,EAAE,KAAK,CAAC;IAErB,YAAY,EAAE,KAAK,CAAC;IAGpB,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;KAAE,CAAM;IAC1C,IAAI,KAAK,IAAI,SAAS,CAGrB;IAED,IAAI,KAAK,IAAI,SAAS,EAAE,CAKvB;IAGD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,SAAI,GAAG,IAAI;IAalD,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,IAAI;IAmD5D,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE;IA6D9C,UAAU,CAAC,IAAI,EAAE,IAAI;IA4CrB,MAAM,CAAC,UAAU,EAAE,OAAO;IA8B1B,KAAK;IAaL,MAAM,IAAI,IAAI;IAOd,QAAQ,CAAC,IAAI,EAAE,SAAS;IAwCxB,SAAS,CAAC,IAAI,EAAE,SAAS;CAwB5B;AAGD,qBAAa,SAAU,SAAQ,IAAI;IAEZ,KAAK,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,CAAC,EAAE,KAAK;IACR,GAAG,EAAE,IAAI;gBALD,KAAK,EAAE,IAAI,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,KAAK,EACR,GAAG,EAAE,IAAI,EAChB,GAAG,EAAE,IAAI;IAQb,MAAM,IAAI,IAAI,EAAE;CAiBnB"}

View File

@@ -1,19 +0,0 @@
import { Path } from "./Path";
import { Point } from "../Common/Point";
import { NestFiler } from "../Common/Filer";
/**
* 用于存放零件旋转后的状态
* 记录了用于放置时的轮廓。该轮廓总是首点等于0便于放置时的计算。
*/
export declare class PartState {
Rotation: number;
OrigionMinPoint: Point;
MinPoint: Point;
Contour: Path;
IsMirror: boolean;
MirrorOriginMinPoint: Point;
Mirror(): PartState;
ReadFile(file: NestFiler): void;
WriteFile(file: NestFiler): void;
}
//# sourceMappingURL=PartState.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"PartState.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/PartState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,qBAAa,SAAS;IAElB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,KAAK,CAAC;IAEvB,QAAQ,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IAEd,QAAQ,EAAE,OAAO,CAAS;IAC1B,oBAAoB,EAAE,KAAK,CAAC;IAE5B,MAAM,IAAI,SAAS;IAkBnB,QAAQ,CAAC,IAAI,EAAE,SAAS;IAYxB,SAAS,CAAC,IAAI,EAAE,SAAS;CAQ5B"}

View File

@@ -50,7 +50,7 @@ export declare class Path {
/**
* 平移点表,返回新点表
*/
export declare function TranslatePath(pts: Point[], p: Point): Point[];
export declare function TranslatePath_Self(pts: Point[], mx: number, my: number): Point[];
export declare function PathTranslate(pts: Point[], p: Point): Point[];
export declare function PathTranslate_Self(pts: Point[], mx: number, my: number): Point[];
export declare function PathScale(pts: Point[], scale: number): Point[];
//# sourceMappingURL=Path.d.ts.map

View File

@@ -1,26 +0,0 @@
import { Path } from "./Path";
/**
* 轮廓路径构造器
* 传递一组简化后的点表过来如果已经有同样的点表时返回已经生产的Path避免重复产生Path。
* 使用相同的PATH有复用路径缓存。
*
* 每次进行优化时必须清理构造器保证Path生成是对本次优化唯一。
*/
declare class PathGenerator {
paths: Path[];
pathAreaMap: {
[key: string]: Path[];
};
cacheCount: number;
/**
* 如果存在同样的轮廓,则返回已经构造的轮廓,
* 如果没有,则返回自身,并且注册它。
* 如果id没有被注册,那么证明它无法放置在bin中
*/
Allocate(path: Path): Path;
RegisterId(path: Path): void;
Clear(): void;
}
export declare let PathGeneratorSingle: PathGenerator;
export {};
//# sourceMappingURL=PathGenerator.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"PathGenerator.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/PathGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B;;;;;;GAMG;AACH,cAAM,aAAa;IAEf,KAAK,EAAE,IAAI,EAAE,CAAM;IACnB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;KAAE,CAAM;IAG7C,UAAU,SAAK;IACf;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAqB1B,UAAU,CAAC,IAAI,EAAE,IAAI;IASrB,KAAK;CAMR;AA0BD,eAAO,IAAI,mBAAmB,eAAoB,CAAC"}