This commit is contained in:
ChenX
2024-03-26 11:10:20 +08:00
parent 070821c353
commit 66f35d6c12
2436 changed files with 31792 additions and 3945 deletions

12
types/Geometry/BoardUVGenerator.d.ts vendored Normal file
View File

@@ -0,0 +1,12 @@
import { ExtrudeBufferGeometry, UVGenerator, Vector2 } from "three";
declare class BoardUVGenerator implements UVGenerator {
generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[];
generateSideWallUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number, indexD: number): Vector2[];
}
declare class BoardUVGenerator2 extends BoardUVGenerator {
generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[];
}
export declare let boardUVGenerator: BoardUVGenerator;
export declare let boardUVGenerator2: BoardUVGenerator2;
export {};
//# sourceMappingURL=BoardUVGenerator.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"BoardUVGenerator.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BoardUVGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpE,cAAM,gBAAiB,YAAW,WAAW;IAEzC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAejH,kBAAkB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAoCzI;AAED,cAAM,iBAAkB,SAAQ,gBAAgB;IAE5C,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAepH;AAED,eAAO,IAAI,gBAAgB,kBAAyB,CAAC;AACrD,eAAO,IAAI,iBAAiB,mBAA0B,CAAC"}

25
types/Geometry/Box.d.ts vendored Normal file
View File

@@ -0,0 +1,25 @@
import { Box3 } from 'three';
/**
* 盒子的切割类型
*/
export declare enum SplitType {
X = 0,
Y = 1,
Z = 2
}
/**
* 扩展Box3,添加切割方法,体积等
*/
export declare class Box3Ext extends Box3 {
TempData: any;
get Volume(): number;
isSolid(minSize?: number): boolean;
substract(b: Box3Ext, spaceType: SplitType): Box3Ext[];
clampSpace(b2: Box3Ext, splitType: SplitType): this;
intersectsBox(box: Box3, fuzz?: number): boolean;
}
export declare function IntersectsBox(box1: Box3, box2: Box3, fuzz?: number): boolean;
/**盒子二维面是否相交 */
export declare function IntersectBox2(box1: Box3, box2: Box3, fuzz?: number): boolean;
export declare function BoxIsSolid(box: Box3, minSize?: number): boolean;
//# sourceMappingURL=Box.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAW,MAAM,OAAO,CAAC;AAEtC;;GAEG;AACH,oBAAY,SAAS;IAEjB,CAAC,IAAI;IACL,CAAC,IAAI;IACL,CAAC,IAAI;CACR;AAED;;GAEG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAE7B,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,MAAM,WAIT;IAGD,OAAO,CAAC,OAAO,SAAI;IAInB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAiB1C,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAS5C,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,SAAO,GAAG,OAAO;CAIjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAO,GAAG,OAAO,CAK1E;AAED,eAAe;AACf,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAO,WAIhE;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,SAAI,WAIhD"}

16
types/Geometry/BufferGeometryUtils.d.ts vendored Normal file
View File

@@ -0,0 +1,16 @@
import { BufferAttribute, BufferGeometry, ShapeGeometry, Vector3 } from "three";
export declare namespace BufferGeometryUtils {
function CreateFromPts(pts: Vector3[]): BufferGeometry;
/**
* 更新BufferGeometry的顶点
* @param geo
* @param pts
* @param ignoreBoxError 忽略更新点后盒子错误的问题
* @returns 当成功时返回true,更新失败时返回false
*/
function UpdatePts(geo: BufferGeometry, pts: Vector3[], ignoreBoxError?: boolean): boolean;
function ArrowGeometry(): ShapeGeometry;
function MergeBufferGeometries(geometries: BufferGeometry[], useGroups?: boolean): BufferGeometry;
function MergeBufferAttributes(attributes: BufferAttribute[]): BufferAttribute;
}
//# sourceMappingURL=BufferGeometryUtils.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"BufferGeometryUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BufferGeometryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAS,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvF,yBAAiB,mBAAmB,CACpC;IACI,SAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc,CAG5D;IAED;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,UAAQ,GAAG,OAAO,CAgB9F;IAGD,SAAgB,aAAa,kBAa5B;IAED,SAAgB,qBAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,SAAS,GAAE,OAAe,GAAG,cAAc,CAyK9G;IAED,SAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAuCpF;CAEJ"}

View File

@@ -0,0 +1,11 @@
import { Task } from "../../Common/ThreadPool/Task";
export type CSGTask = Pick<Task, "key" | "data" | "then">;
type CSGSubtractFunction = (task: CSGTask) => void;
export declare const _CSGSubtractInjectInteractionFunctions: CSGSubtractFunction[];
export declare function AddCSGSubtractTask(task: CSGTask): void;
export type TaskKey = Pick<Task, "key">;
type TerminateCSGTaskFunction = (task: TaskKey) => void;
export declare const _TerminateTaskInjectInteractionFunctions: TerminateCSGTaskFunction[];
export declare function TerminateCSGTask(task: TaskKey): void;
export {};
//# sourceMappingURL=CSGSubtractTaskManager.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CSGSubtractTaskManager.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/CSGSubtract/CSGSubtractTaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEpD,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAE1D,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AACnD,eAAO,MAAM,sCAAsC,EAAE,mBAAmB,EAAO,CAAC;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,QAI/C;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,KAAK,wBAAwB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AACxD,eAAO,MAAM,wCAAwC,EAAE,wBAAwB,EAAO,CAAC;AACvF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,QAI7C"}

19
types/Geometry/CheckIntersect.d.ts vendored Normal file
View File

@@ -0,0 +1,19 @@
import { Box2 } from "three";
export interface Vec2 {
x: number;
y: number;
}
/**
* 盒子相交测试,快速判断盒子和直线或者圆是否有相交
*/
export declare class BoxCheckIntersect {
p1: Vec2;
p2: Vec2;
p3: Vec2;
p4: Vec2;
box: Box2;
constructor(box: Box2);
IsIntersectLine(p1: Vec2, p2: Vec2): boolean;
IsIntersectCircle(cen: Vec2, radius: number): boolean;
}
//# sourceMappingURL=CheckIntersect.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CheckIntersect.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CheckIntersect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,OAAO,CAAC;AAWjD,MAAM,WAAW,IAAI;IAEjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAwBD;;GAEG;AACH,qBAAa,iBAAiB;IAE1B,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,GAAG,EAAE,IAAI,CAAC;gBACE,GAAG,EAAE,IAAI;IAWrB,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO;IAyB5C,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAMxD"}

View File

@@ -0,0 +1,12 @@
import { Circle } from "../DatabaseServices/Entity/Circle";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
import { IContourData } from "../Production/Convert2PtsBul";
/**
* 转换成多段线点表,并且将圆弧打断(大于1/4的话) API仅用于开料生产
* @param cu 多段线或者圆弧
* @param [isOutline=true] 如果为外部轮廓,则将其转换为逆时针
* @param [isSplite=true] 如果为true,则对大圆弧进行切割
* @returns 点表+凸度表
*/
export declare function ConverToPolylineAndSplitArc(cu: Polyline | Circle, isOutline?: boolean, isSplite?: boolean): IContourData;
//# sourceMappingURL=ConverToPolylineAndSplitArc.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ConverToPolylineAndSplitArc.d.ts","sourceRoot":"","sources":["../../../src/Geometry/ConverToPolylineAndSplitArc.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,EAAE,SAAS,UAAO,EAAE,QAAQ,UAAO,GAAG,YAAY,CA8BlH"}

18
types/Geometry/CoordinateSystem.d.ts vendored Normal file
View File

@@ -0,0 +1,18 @@
import { Matrix4, Vector3 } from 'three';
/**
* 坐标系运算.
*/
export declare class CoordinateSystem {
Postion: Vector3;
XAxis: Vector3;
YAxis: Vector3;
ZAxis: Vector3;
constructor(postion?: Vector3, xAxis?: Vector3, yAxis?: Vector3, zAxis?: Vector3);
applyMatrix4(mat4: Matrix4): this;
getMatrix4(m?: Matrix4): Matrix4;
CopyForm(mat4: Matrix4): this;
extractBasis(xAxisA: Vector3, yAxisA: Vector3, zAxisA: Vector3): void;
copy(cs: CoordinateSystem): CoordinateSystem;
clone(): CoordinateSystem;
}
//# sourceMappingURL=CoordinateSystem.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CoordinateSystem.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CoordinateSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;gBAEH,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO;IAQhF,YAAY,CAAC,IAAI,EAAE,OAAO;IAU1B,UAAU,CAAC,CAAC,UAAc,GAAG,OAAO;IAMpC,QAAQ,CAAC,IAAI,EAAE,OAAO;IAOtB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAM9D,IAAI,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQ5C,KAAK;CASR"}

14
types/Geometry/Count.d.ts vendored Normal file
View File

@@ -0,0 +1,14 @@
/**
* 一个简单的计数器实现,本质是使用一个Map来保存元素的个数
*
* 例:
* let count = new Count();
* count.AddCount("Test", 1);
* count.GetCount("Test");//现在 Test 的个数为1
*/
export declare class Count {
private m_CountMap;
GetCount(obj: any): number;
AddCount(obj: any, add: number): void;
}
//# sourceMappingURL=Count.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Count.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Count.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,qBAAa,KAAK;IAEd,OAAO,CAAC,UAAU,CAA8B;IAChD,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAU1B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM;CAIjC"}

8
types/Geometry/CreateContour2.d.ts vendored Normal file
View File

@@ -0,0 +1,8 @@
import { Contour } from "../DatabaseServices/Contour";
import { Curve } from "../DatabaseServices/Entity/Curve";
/**
* 某些时候我们不能创建轮廓,此时我们使用类似c2r的方法来构建一个外部轮廓.
*/
export declare function CreateContours(curves: Curve[], fuzz?: number): Contour[];
export declare function CreateContour2(curves: Curve[], fuzz?: number): Contour | undefined;
//# sourceMappingURL=CreateContour2.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CreateContour2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreateContour2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAQzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,SAAO,GAAG,OAAO,EAAE,CAgHtE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,SAAO,GAAG,OAAO,GAAG,SAAS,CAGhF"}

View File

@@ -0,0 +1,5 @@
import { Vector2 } from 'three';
import { Shape2 } from '../DatabaseServices/Shape2';
export declare function CreatePolylinePath(pts: Vector2[], buls: number[]): Shape2;
export declare function CreateShapeFromPoints(): void;
//# sourceMappingURL=CreatePolylinePath.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CreatePolylinePath.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreatePolylinePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgCpD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CA0BzE;AAED,wBAAgB,qBAAqB,SAGpC"}

11
types/Geometry/CreateWireframe.d.ts vendored Normal file
View File

@@ -0,0 +1,11 @@
import { BufferGeometry, Line, LineBasicMaterial, Matrix4, Object3D } from "three";
import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole";
import { Board } from "../DatabaseServices/Entity/Board";
import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude";
import { Shape2 } from "../DatabaseServices/Shape2";
export declare function CreateWireframe(en3D: Board | ExtrudeSolid): Object3D[];
export declare function FastWireframe(br: ExtrudeSolid, color?: number, divCount?: number, optArc?: boolean): Line<BufferGeometry, LineBasicMaterial>[];
export declare function FastExtrudeEdgeGeometryOfShape(shape: Shape2, z0: number, z1: number, divCount?: number, optArc?: boolean, coords?: number[]): number[];
export declare function FastExtrudeEdgeGeometry(ext: ExtrudeSolid, color?: number, divCount?: number, optArc?: boolean, coords?: number[], inv?: Matrix4): number[];
export declare function FastWireframe2(dr: ExtrudeHole, color?: number): Line<BufferGeometry, LineBasicMaterial>[];
//# sourceMappingURL=CreateWireframe.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CreateWireframe.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreateWireframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoC,IAAI,EAAE,iBAAiB,EAAgB,OAAO,EAAE,QAAQ,EAAW,MAAM,OAAO,CAAC;AAI5I,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,cAsEzD;AAaD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAI,EAAE,MAAM,UAAO,GAAG,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAkDjI;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,MAAM,UAAO,EAAE,MAAM,GAAE,MAAM,EAAO,YAqBvI;AAID,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAI,EAAE,MAAM,UAAO,EAAE,MAAM,GAAE,MAAM,EAAO,EAAE,GAAG,GAAE,OAAmB,YAmDjJ;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,SAAI,6CAoCxD"}

33
types/Geometry/CurveIntersection.d.ts vendored Normal file
View File

@@ -0,0 +1,33 @@
import { Box3, Vector3 } from "three";
import { Curve } from "../DatabaseServices/Entity/Curve";
import { IntersectOption } from "../GraphicsSystem/IntersectWith";
/**
* 简化优化版本的曲线求交, 优化版本可以参考(算法导论33.2 确定任意一对线段是否相交 p599)
*/
export declare class CurveIntersection {
protected fuzz: number;
protected boxMap: Map<Curve, Box3>;
/**
* 交点数据集,key 为曲线 value 为和它相交的(曲线和交点的Map)
*/
intersect: Map<Curve, Map<Curve, Vector3[]>>;
intersect2: Map<Curve, [number, Vector3][]>;
intersect3: [Curve, Curve, Vector3[]][];
/**
* @param {Curve[]} cus 请注意数组的顺序会被更改,如果你在意数组的顺序,请拷贝数组后传进来
* @memberof CurveIntersection
*/
constructor(cus: Curve[], parseIntersectionParam?: boolean, intType?: IntersectOption, fuzz?: number, parseRecord?: boolean);
protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption): import("../GraphicsSystem/IntersectWith").IntersectResult[];
protected AppendIntersectionParams(curve: Curve, params: [number, Vector3][]): void;
protected GenBox(cus: Curve[]): void;
protected SortCurve(cus: Curve[]): void;
GetIntersect(cu: Curve): Map<Curve, Vector3[]>;
}
export declare class CurveIntersection2 extends CurveIntersection {
/**
* Curve2Polyline使用这个时,为了避免多余的交点导致曲线切割过度,过滤掉无关的点
*/
protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption): import("../GraphicsSystem/IntersectWith").IntersectResult[];
}
//# sourceMappingURL=CurveIntersection.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CurveIntersection.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CurveIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;GAEG;AACH,qBAAa,iBAAiB;IAkBsE,SAAS,CAAC,IAAI;IAf9G,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAa;IAE/C;;OAEG;IACH,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAa;IAEzD,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAa;IAExD,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAM;IAE7C;;;OAGG;gBACS,GAAG,EAAE,KAAK,EAAE,EAAE,sBAAsB,UAAQ,EAAE,OAAO,kBAA6B,EAAY,IAAI,SAAO,EAAE,WAAW,UAAQ;IA6C1I,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;IAKvE,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAW5E,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;IAM7B,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;IAQhC,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;CASjD;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;IAErD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;CAW1E"}

51
types/Geometry/CurveMap.d.ts vendored Normal file
View File

@@ -0,0 +1,51 @@
import { Vector3 } from "three";
import { Curve } from "../DatabaseServices/Entity/Curve";
export interface Vertice {
position: Vector3;
routes: Route[];
}
export interface Route {
curve: Curve;
from: Vertice;
to: Vertice;
length: number;
isReverse: boolean;
an?: number;
s: Vector3;
e: Vector3;
}
/**
* 曲线连接图
* 所有的顶点和边的关系
*/
export declare class CurveMap {
numdimensions: number;
_RemoveSortLine: boolean;
private multiplier;
constructor(numdimensions?: number, _RemoveSortLine?: boolean, multiplier?: number);
_VerticeMap: Map<Vector3, Vertice>;
_Vertices: Vertice[];
/**
* 得到节点图的所有站点列表
*/
get Stands(): Vertice[];
/**
* @param curve
* @param [isArc=curve instanceof Arc]
* @param [removeDuplicate=false]
* @returns 加入成功?
*/
AddCurveToMap(curve: Curve, isArc?: boolean, removeDuplicate?: boolean, parseAngle?: boolean): boolean;
/**
* 获得唯一的顶点
*/
GetOnlyVertice(p: Vector3): Vertice;
_LookupTable: {
[key: string]: Vector3;
};
/**
* 生成一个唯一的向量.
*/
GenerateP(p: Vector3): Vector3;
}
//# sourceMappingURL=CurveMap.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CurveMap.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CurveMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAIzD,MAAM,WAAW,OAAO;IAGpB,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAGD,MAAM,WAAW,KAAK;IAElB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,QAAQ;IAGN,aAAa;IACb,eAAe;IACtB,OAAO,CAAC,UAAU;gBAFX,aAAa,SAAI,EACjB,eAAe,UAAQ,EACtB,UAAU,SAAsB;IAQ5C,WAAW,wBAA+B;IAE1C,SAAS,EAAE,OAAO,EAAE,CAAM;IAE1B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,EAAE,CAGtB;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,OAA8B,EAAE,eAAe,GAAE,OAAe,EAAE,UAAU,UAAQ,GAAG,OAAO;IA2CjI;;MAEE;IACF,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAYnC,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAAE,CAAM;IAE/C;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;CAmCjC"}

7
types/Geometry/DoIntersect.d.ts vendored Normal file
View File

@@ -0,0 +1,7 @@
import { Vec2 } from "./CheckIntersect";
export declare function orientation(p: Vec2, q: Vec2, r: Vec2): number;
/**
* 判断线段`p1q1`和线段`p2q2`是否相交.
*/
export declare function doIntersect(p1: Vec2, q1: Vec2, p2: Vec2, q2: Vec2): boolean;
//# sourceMappingURL=DoIntersect.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DoIntersect.d.ts","sourceRoot":"","sources":["../../../src/Geometry/DoIntersect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAoBxC,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAS7D;AACD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAyB3E"}

View File

@@ -0,0 +1,22 @@
import { Matrix4 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Curve } from "../../DatabaseServices/Entity/Curve";
import { Face } from "./Face";
export declare const CanDrawHoleFuzz = 0.1;
export declare enum BoardFaceType {
Side = 0,
NoSide = 1
}
export declare class BoardGetFace {
Board: Board;
Faces: Face[];
constructor(Board: Board);
ParseFaces(): void;
GetTopAndBottomFace(isEdgeFace?: boolean): void;
GetSideFaces(): void;
IntersectFace(br: BoardGetFace, bInsEqual?: boolean): Face[];
static GetAllSidesFaces(br: Board, isMergeFace?: boolean): Face[];
}
export declare function MatrixIsCoplane2(matrixFrom: Matrix4, matrixTo: Matrix4, zFuzz: number): boolean;
export declare function GetSideFaceMtx(cu: Curve, inverseZ?: boolean): Matrix4;
//# sourceMappingURL=BoardGetFace.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"BoardGetFace.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/BoardGetFace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,oBAAY,aAAa;IAErB,IAAI,IAAI;IACR,MAAM,IAAI;CACb;AACD,qBAAa,YAAY;IAGF,KAAK,EAAE,KAAK;IAD/B,KAAK,EAAE,IAAI,EAAE,CAAM;gBACA,KAAK,EAAE,KAAK;IAI/B,UAAU;IAOV,mBAAmB,CAAC,UAAU,UAAQ;IAqCtC,YAAY;IA0BZ,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI,EAAE;IAqBnE,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,UAAQ;CAwBzD;AAGD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAe/F;AACD,wBAAgB,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAmBnE"}

View File

@@ -0,0 +1,11 @@
import { Board } from "../../DatabaseServices/Entity/Board";
import { BoardGetFace } from "./BoardGetFace";
import { Face } from "./Face";
export declare class CollisionDetection {
private _Boards;
BoardGeList: BoardGetFace[];
CollisonFaces: Face[];
constructor(_Boards?: Board[]);
Check(): void;
}
//# sourceMappingURL=CollisionDetection.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CollisionDetection.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/CollisionDetection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,kBAAkB;IAIf,OAAO,CAAC,OAAO;IAF3B,WAAW,EAAE,YAAY,EAAE,CAAM;IACjC,aAAa,EAAE,IAAI,EAAE,CAAM;gBACP,OAAO,GAAE,KAAK,EAAO;IAIzC,KAAK;CAoCR"}

39
types/Geometry/DrillParse/Face.d.ts vendored Normal file
View File

@@ -0,0 +1,39 @@
import { Box3, Matrix4, Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Region } from "../../DatabaseServices/Entity/Region";
import { Segment1d } from "../../Editor/TranstrolControl/Segment1dUtil";
import { BoardFaceType } from "./BoardGetFace";
export interface BoardFaceParams {
type: BoardFaceType;
length: number;
width: number;
localBoard: Board;
matrix4: Matrix4;
region?: Region;
isRect?: boolean;
drillType?: string;
}
export declare class Face {
type: BoardFaceType;
Length: number;
Width: number;
private _Region;
LocalBoard: Board;
InterBoard: Board;
isEqualType: boolean;
OCS: Matrix4;
IsRect: boolean;
DrillType: string;
FixedInterval: Segment1d[];
Segment1D: Segment1d[];
constructor(parameters?: BoardFaceParams);
get Region(): Region;
get OCSInv(): Matrix4;
get Normal(): Vector3;
Intersect(f: Face): Face[];
IsIntersect(f: Face, fuzz?: number, currentCoverBoxes?: Box3[]): {
isInt: boolean;
coverBoxesList?: Box3[];
};
}
//# sourceMappingURL=Face.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Face.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/Face.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAIxE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAE5B,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,qBAAa,IAAI;IAEb,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,OAAO,CAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,OAAO,CAAS;IAC7B,GAAG,EAAE,OAAO,CAAiB;IAC7B,MAAM,EAAE,OAAO,CAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,SAAS,EAAE,SAAS,EAAE,CAAC;gBAEX,UAAU,CAAC,EAAE,eAAe;IAkBxC,IAAI,MAAM,WAKT;IACD,IAAI,MAAM,YAGT;IACD,IAAI,MAAM,YAGT;IACD,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE;IAsF1B,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAO,EAAE,iBAAiB,GAAE,IAAI,EAAO,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;KAAE;CAwHlH"}

14
types/Geometry/EdgeGeometry.d.ts vendored Normal file
View File

@@ -0,0 +1,14 @@
import { BufferGeometry } from "three";
import { Geom3Res, PolygonRes } from "../Common/CSGIntersect";
export declare class EdgesGeometry extends BufferGeometry {
/**
* 在使用Extrude实体的时候,有可能导致面无限分裂,并且有可能造成丢线问题,使用FromCSG方法可解.
*/
FromGeometry(geometry: any, thresholdAngle?: number): this;
/**
* 解决原来算法性能低下并且结果不理想的问题
*/
FromCSG(csg: Geom3Res): this;
PolygonsOutline(polygons: PolygonRes[], coords: number[]): void;
}
//# sourceMappingURL=EdgeGeometry.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"EdgeGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/EdgeGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAqE,MAAM,OAAO,CAAC;AAEhH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAS9D,qBAAa,aAAc,SAAQ,cAAc;IAE7C;;OAEG;IACH,YAAY,CAAC,QAAQ,KAAA,EAAE,cAAc,GAAE,MAAU;IA8GjD;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,QAAQ;IA8BrB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;CAwF3D"}

View File

@@ -0,0 +1,177 @@
import { Box3, BufferGeometry, Vector3 } from "three";
import { Contour } from "../../DatabaseServices/Contour";
import { ExtrudeContourCurve, ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { Line } from "../../DatabaseServices/Entity/Line";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
export declare enum DepthType {
Front = 1,
Back = 2,
All = 3
}
export declare const ExtrudeBuildConfig: {
bevel: boolean;
};
/**
* 槽的几何数据,包括槽的墙面和槽的盖子
*/
export declare class Groove {
depthType: DepthType;
depth: number;
allDepth: number;
private box;
contourWall: ExtudeWall;
holeWalls: ExtudeWall[];
private lid;
constructor(contour: Contour, holes: Contour[], depthType: DepthType, depth: number, allDepth: number, box?: import("../Box").Box3Ext);
/**
* @param groove this - groove
* @param [eachOther=true] 相互裁剪
*/
ClipTo(groove: Groove, eachOther?: boolean): void;
private ClipLid;
Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild, rotateUv: boolean): void;
}
declare enum DirectionType {
Outer = 0,//外墙
Inner = 1
}
export declare class ContourTreeNode {
contour: Contour;
children: ContourTreeNode[];
parent: ContourTreeNode;
box: Box3;
area: number;
constructor(contour: Contour, children?: ContourTreeNode[]);
SetParent(node: ContourTreeNode): void;
get Depth(): number;
get IsHole(): boolean;
Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number): void;
static ParseContourTree(contourNodes: ContourTreeNode[]): void;
}
declare class EdgeGeometryBuild {
allDepth: number;
lineVerticesArray: number[];
frontLines: Line[];
backLines: Line[];
constructor(allDepth: number);
AddLidLine(p1: Vector3, p2: Vector3, depth: number): void;
BuildLid(verticesArray: number[], uvArray: number[], rotateUv: boolean): void;
}
/**
* 胶带
*/
export declare class Tape {
start: number;
end: number;
bottom: number;
top: number;
constructor(start: number, end: number, bottom: number, top: number);
get Curve(): Polyline;
Clip(t: this): Tape[];
Split(xlst: number[]): Tape[];
}
/**
* 二维形状,内部用曲线胶带表示(用来计算盖子差集算法)
*/
export declare class CurveTapeShape {
children: CurveTapeShape[];
contour: CurveTape;
holes: CurveTape[];
constructor(contour: Contour, holes: Contour[]);
CloneNew(): CurveTapeShape;
/**
* 删除包含,同向
*/
ClipTo(s: CurveTapeShape, append?: boolean): void;
SplitTo(s: CurveTapeShape): void;
/**
* 只保留被包含部分
*/
private ReverseClipTo;
ChildrenClip(): void;
Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number): void;
}
/**
* 曲线胶带(一维)
*/
declare class CurveTape {
contour: Contour;
wallType: DirectionType;
tapes: Range[];
splitParams: number[];
constructor(contour: Contour, wallType: DirectionType);
get Curves(): Polyline[];
/**
* 分析与另一个形状的包含关系
*/
Parse(s: CurveTapeShape): CurveParamRangeRelation;
/**
* 删除包含,同向面
*/
ClipTo(s: CurveTapeShape): this;
/**
* 保留被包含的部分
*/
ReverseClipTo(s: CurveTapeShape): this;
}
declare class ExtudeWall {
curve: ExtrudeContourCurve;
depthType: DepthType;
depth: number;
allDepth: number;
wallType: DirectionType;
private Tape;
constructor(curve: ExtrudeContourCurve, depthType: DepthType, depth: number, allDepth: number, wallType: DirectionType);
/**
* 减去在另一个groove内的部分
* @param groove this - groove
* @param [clipSyntropy=false] 删除同向的面
*/
ClipTo(groove: Groove, clipSyntropy?: boolean): void;
ClipReverse(wall: this): void;
/**
* 当起始参数大于终止参数时,裁剪的区域经过终点
*
* @param startParam 起始参数
* @param endParam 终止参数
* @param faceType 裁剪面朝向
* @param depth 裁剪面的深度
*/
ClipFromParam(startParam: number, endParam: number, faceType: DepthType, depth: number): this;
Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild): void;
}
/**
* 曲线参数范围关系(包含,分离,同向共线,反向共线)
* 用来表示某一曲线在另一个曲线内的关系
*/
interface CurveParamRangeRelation {
outer: Range[];
container: Range[];
syntropy: Range[];
reverse: Range[];
}
/**
*
* @param orgStart 被裁剪范围的起点(如果起点大于终点,那么表示 s->end + 0->e)
* @param orgEnd
* @param clipStart
* @param clipEnd
* @param end
* @returns
*/
export declare function SubtractRange(orgStart: number, orgEnd: number, clipStart: number, clipEnd: number, end: number): Range[];
export declare function SubtractRange2(r: Range, sr: Range, end: number): Range[];
type Range = [number, number];
export declare class ExtrudeGeometryBuilder {
private br;
verticesArray: number[];
uvArray: number[];
edgeAndLidBuilder: EdgeGeometryBuild;
constructor(br: ExtrudeSolid, rotateUv?: boolean);
protected GenerateMeshData(br: ExtrudeSolid, rotateUv: boolean): void;
get MeshGeometry(): BufferGeometry;
get EdgeGeometry(): BufferGeometry;
protected ParseGrooves(): Groove[];
}
export {};
//# sourceMappingURL=ExtrudeEdgeGeometry2.d.ts.map

View File

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

View File

@@ -0,0 +1,19 @@
import { Vector3 } from "three";
import { Arc } from "../../DatabaseServices/Entity/Arc";
import { Circle } from "../../DatabaseServices/Entity/Circle";
import { ExtrudeContourCurve } from "../../DatabaseServices/Entity/Extrude";
export declare const ARC_DRAW_CONFIG: {
ARC_SplitLength: number;
ARC_RADIUS_MIN: number;
Arc_MinSplitCount: number;
ARC_MaxSplitCount: number;
};
export declare function GetArcDrawCount(arc: Arc | Circle | number): number;
/**
*
* @param cu
*/
export declare function SplitCurveParams(cu: ExtrudeContourCurve): number[];
export declare function SplitCurvePoints(cu: ExtrudeContourCurve): Vector3[];
export declare function SplitArcParams(arc: Arc): number[];
//# sourceMappingURL=SplitCurveParams.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SplitCurveParams.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/ExtrudeMeshGeomBuilder/SplitCurveParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAO5E,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAGF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CASlE;AAGD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,EAAE,CA2ClE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,GAAG,OAAO,EAAE,CAgCnE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAmBjD"}

10
types/Geometry/FastOffset.d.ts vendored Normal file
View File

@@ -0,0 +1,10 @@
import { Vector3 } from "three";
/**
* 快速的对点表进行偏移
* @param contour
* @param [offsetDist=1]
* @param [ignoreSpike=true] 忽略尖角优化(如果不忽略,那么尖角将会变钝(有点奇怪))
* @returns 偏移后的点表
*/
export declare function FastOffset(contour: Vector3[], offsetDist?: number, ignoreSpike?: boolean): Vector3[];
//# sourceMappingURL=FastOffset.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"FastOffset.d.ts","sourceRoot":"","sources":["../../../src/Geometry/FastOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,OAAO,CAAC;AAI/C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,SAAI,EAAE,WAAW,UAAO,GAAG,OAAO,EAAE,CAY5F"}

14
types/Geometry/FuzzVector.d.ts vendored Normal file
View File

@@ -0,0 +1,14 @@
import { Vector3 } from "three";
/**
* 直线方向归一化,例如(1,0,0)和(-1,0,0)方向相反,但是在直线中,可以看作同样的方向的线
*/
export declare class FuzzDirection {
fractionDigits: number;
fuzz: number;
constructor(fractionDigits?: number);
/**
*
*/
GetKey(v: Vector3, change?: boolean): string;
}
//# sourceMappingURL=FuzzVector.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"FuzzVector.d.ts","sourceRoot":"","sources":["../../../src/Geometry/FuzzVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC;;GAEG;AACH,qBAAa,aAAa;IAGH,cAAc;IADjC,IAAI,EAAE,MAAM,CAAC;gBACM,cAAc,SAAI;IAKrC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,MAAM;CA0C7C"}

128
types/Geometry/GeUtils.d.ts vendored Normal file
View File

@@ -0,0 +1,128 @@
import { Box3, BufferGeometry, Geometry, Line, Matrix4, Mesh, Object3D, Vector, Vector2, Vector3 } from 'three';
import { Vec3 } from './IVec3';
export declare const IdentityMtx4: Matrix4;
export declare const ZeroVec: Vector3;
export declare const XAxis: Vector3;
export declare const XAxisN: Vector3;
export declare const YAxis: Vector3;
export declare const YAxisN: Vector3;
export declare const ZAxis: Vector3;
export declare const ZAxisN: Vector3;
export declare function AsVector2(p: {
x: number;
y: number;
}): Vector2;
export declare function AsVector3(p: {
x: number;
y: number;
z?: number;
}): Vector3;
/**
* 判断一维线段a和b是否存在交集
*/
export declare function isIntersect(amin: number, amax: number, bmin: number, bmax: number, eps?: number): boolean;
export declare function isIntersect2(a1: number, a2: number, b1: number, b2: number, eps?: number): boolean;
/**
* 旋转一个点,旋转中心在原点
* @param {Vector3} p 点
* @param {number} a 角度.
* @returns {Vector3} 返回pt不拷贝.
*/
export declare function rotatePoint(p: Vector3, a: number): Vector3;
export declare function equaln(v1: number, v2: number, fuzz?: number): boolean;
export declare function equalnn(dis?: number): (v1: number, v2: number) => boolean;
interface P2 {
x: number;
y: number;
}
export declare function equalv3(v1: Vec3, v2: Vec3, fuzz?: number): boolean;
export declare function equalv2(v1: P2, v2: P2, fuzz?: number): boolean;
/**
* 按照极坐标的方式移动一个点
* @param {T} v 向量(2d,3d)
* @param {number} an 角度
* @param {number} dis 距离
* @returns {T}
*/
export declare function polar<T extends Vector2 | Vector3>(v: T, an: number, dis: number): T;
export declare function angle(v: Vector3 | Vector2): number;
/**
* 求两个向量的夹角,顺时针为负,逆时针为正
* @param {Vector3} v1
* @param {Vector3} v2
* @param {Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1
*/
export declare function angleTo(v1: Vector3, v2: Vector3, ref?: Vector3): number;
export declare function getLoocAtUpVec(dir: Vector3): Vector3;
export declare function createLookAtMat4(dir: Vector3): Matrix4;
/**
* 判断2个向量是不是平行,尽量传入单位向量,才能保证计算精度
*/
export declare function isParallelTo(v1: Vector3, v2: Vector3, fuzz?: number): boolean;
/**
* 垂直向量
*/
export declare function isPerpendicularityTo(v1: Vector3, v2: Vector3, fuzz?: number): boolean;
export declare function ptToString(v: Vector3, fractionDigits?: number): string;
export declare function midPoint(v1: Vector3, v2: Vector3): Vector3;
export declare function midPoint2(v1: Vector2, v2: Vector2): Vector2;
/**
* 获得Three对象的包围盒.
* @param obj
* @param [updateMatrix] 是否应该更新对象矩阵
* @returns box
*/
export declare function GetBox(obj: Object3D, updateMatrix?: boolean): Box3;
export declare function GetBoxArr(arr: Array<Object3D>): Box3;
export declare function MoveMatrix(v: Vector3): Matrix4;
export declare function getPtPostion(sp: Vector3, ep: Vector3, c: Vector3, inPt: Vector3): {
sp: Vector3;
ep: Vector3;
};
export declare function angleAndX(v: Vector3 | Vector2): number;
/**
* 将角度调整为0-2pi之间
*/
export declare function clampRad(an: number): number;
export declare function updateGeometry(l: Line | Mesh, geometry: Geometry | BufferGeometry): void;
export declare function UpdateBoundingSphere(obj: Object3D): void;
export type compareVectorFn = (v1: Vector, v2: Vector) => number;
/**
* 构建返回一个用来排序的函数.根据key创建排序规则.
*
* 当key = "xyz" 时,点集按 x从小到大,y从小到大 z从小到大
* key = "X" 时,点集按 x从大到小
* 以此类推.
*
* 例子:
* let pts:Vector3[] =...;
* pts.sort(comparePoint("x")); //x从小到大排序
* pts.sort(comparePoint("zX")); //z从小到大 x从大到小
*
* @export
* @param {string} sortKey
* @returns {compareVectorFn}
*/
export declare function ComparePointFnGenerate(sortKey: string, fuzz?: number): compareVectorFn;
/**
*计算各轴旋转角度
*/
export declare function GetEulerAngle(x: Vector3, y: Vector3, z: Vector3): {
roX: number;
roY: number;
roZ: number;
};
/**
* 方形框捕捉
* @param sqCenter 正方形点
* @param snapPt 被捕捉的点
* @param size 捕捉框大小
*/
export declare function SnapPoint(sqCenter: Vector3, snapPt: Vector3, size: number): boolean;
export declare function SelectNearP(pts: Vector3[], refPt: Vector3): Vector3;
/**n是否在AB之间,fuzz 若为负的,允许相等 */
export declare function IsBetweenA2B(n: number, A: number, B: number, fuzz?: number): boolean;
/** 矩阵是世界坐标系 */
export declare function MatrixIsIdentityCS(mtx: Matrix4): boolean;
export {};
//# sourceMappingURL=GeUtils.d.ts.map

View File

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

6
types/Geometry/IVec3.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
export interface Vec3 {
x: number;
y: number;
z: number;
}
//# sourceMappingURL=IVec3.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"IVec3.d.ts","sourceRoot":"","sources":["../../../src/Geometry/IVec3.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IAEjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb"}

10
types/Geometry/Matrix2.d.ts vendored Normal file
View File

@@ -0,0 +1,10 @@
import { Matrix4, Vector2, Vector3 } from "three";
export declare class Matrix2 {
el: number[];
set(ix: number, iy: number, jx: number, jy: number): this;
applyVector(vec: Vector2 | Vector3): this;
fromMatrix4(mtx4: Matrix4): void;
setRotate(theta: number): this;
invert(): this;
}
//# sourceMappingURL=Matrix2.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Matrix2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Matrix2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElD,qBAAa,OAAO;IAGhB,EAAE,WAAgB;IAElB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAUlD,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAUlC,WAAW,CAAC,IAAI,EAAE,OAAO;IAOzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS9B,MAAM,IAAI,IAAI;CAUjB"}

10
types/Geometry/OBB/obb.d.ts vendored Normal file
View File

@@ -0,0 +1,10 @@
import { Vector3, Matrix4 } from 'three';
export declare class OBB {
ocs: Matrix4;
halfSizes: Vector3;
_EPSILON: number;
center: Vector3;
constructor(ocs: Matrix4, halfSizes: Vector3);
intersectsOBB(obb: OBB, is2D?: boolean, ucsInv?: Matrix4): boolean;
}
//# sourceMappingURL=obb.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"obb.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/OBB/obb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAWzC,qBAAa,GAAG;IAMO,GAAG,EAAE,OAAO;IAAS,SAAS,EAAE,OAAO;IAJ1D,QAAQ,SAAQ;IAET,MAAM,EAAE,OAAO,CAAC;gBAEJ,GAAG,EAAE,OAAO,EAAS,SAAS,EAAE,OAAO;IAK1D,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;CAkOrE"}

8
types/Geometry/OBJExporter.d.ts vendored Normal file
View File

@@ -0,0 +1,8 @@
import { Object3D } from 'three';
export declare class OBJExporter {
parse(object: Object3D): {
obj: string;
mtl: string;
};
}
//# sourceMappingURL=OBJExporter.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"OBJExporter.d.ts","sourceRoot":"","sources":["../../../src/Geometry/OBJExporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,QAAQ,EAA6B,MAAM,OAAO,CAAC;AAElH,qBAAa,WAAW;IAEpB,KAAK,CAAC,MAAM,EAAE,QAAQ;;;;CAsUzB"}

28
types/Geometry/Orbit.d.ts vendored Normal file
View File

@@ -0,0 +1,28 @@
import { Vector3 } from "three";
/**
* 轨道控制的数学类,观察向量和角度的互相转换
* 当x当抬头或者低头到90度时,触发万向锁.
*/
export declare class Orbit {
private phi;
theta: number;
get RoX(): number;
set RoX(v: number);
/**
* 使用旋转角度 计算观察向量
* @param [outDirection] 引用传入,如果传入,那么就不构造新的向量
* @returns 返回观察向量
*/
UpdateDirection(outDirection?: Vector3): Vector3;
/**
* 使用观察向量,计算旋转角度
* @param dir 这个向量会被修改成单位向量.
*/
SetFromDirection(dir: Vector3): void;
/**
* 参考任意轴坐标系算法.
* http://help.autodesk.com/view/ACD/2017/CHS/?guid=GUID-E19E5B42-0CC7-4EBA-B29F-5E1D595149EE
*/
static ComputUpDirection(n: Vector3, ay?: Vector3, ax?: Vector3): Vector3;
}
//# sourceMappingURL=Orbit.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Orbit.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Orbit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;AAG3C;;;GAGG;AACH,qBAAa,KAAK;IAGd,OAAO,CAAC,GAAG,CAAa;IAGxB,KAAK,EAAE,MAAM,CAAK;IAElB,IAAI,GAAG,WAGN;IACD,IAAI,GAAG,CAAC,CAAC,QAAA,EAGR;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAY,UAAgB,GAAG,OAAO;IAYtD;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAapC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAE,OAAuB,EAAE,EAAE,GAAE,OAAuB,GAAG,OAAO;CAY1G"}

8
types/Geometry/Plane.d.ts vendored Normal file
View File

@@ -0,0 +1,8 @@
import { Line3, Plane, Ray, Vector3 } from "three";
export declare class PlaneExt extends Plane {
constructor(normal?: Vector3, constant?: number | Vector3);
parseConstantFromPoint(constant: Vector3): void;
intersectLine(line: Line3, optionalTarget?: Vector3, extendLine?: boolean): Vector3;
intersectRay(ray: Ray, optionalTarget?: Vector3, extendLine?: boolean): Vector3;
}
//# sourceMappingURL=Plane.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Plane.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEnD,qBAAa,QAAS,SAAQ,KAAK;gBAEnB,MAAM,UAAuB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAStE,sBAAsB,CAAC,QAAQ,EAAE,OAAO;IAKxC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,UAAgB,EAAE,UAAU,UAAQ,GAAG,OAAO;IA4BvF,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO;CAMlF"}

18
types/Geometry/PointShapeUtils.d.ts vendored Normal file
View File

@@ -0,0 +1,18 @@
import { Vector3 } from "three";
import { BoardOpenDir, LinesType } from "../DatabaseServices/Entity/BoardInterface";
export declare class PointShapeUtils {
static SquarePts(size: number): Vector3[];
static OutsideLinePts(squareSize: number, lineLength: number): Vector3[];
static CrossLinePts(lineLength: number): Vector3[];
static CrossLine3DPts(lineLength: number): Vector3[][];
static TrianglePts(size: number): Vector3[];
static CirclePts(size: number): any[];
static ObliqueCrossPts(size: number): Vector3[];
static ObliqueCrossLinePts(size: number): Vector3[];
static SandClockPts(size: number): Vector3[];
static TangentPts(size: number): Vector3[];
static PerPts(size: number): Vector3[];
static LinesDirPts(len: number, width: number, lineType: LinesType): Vector3[];
static LinesOpenDirPts(len: number, width: number, openDir: BoardOpenDir): Vector3[];
}
//# sourceMappingURL=PointShapeUtils.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PointShapeUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/PointShapeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAEpF,qBAAa,eAAe;IAGxB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAW7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAmB5D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM;IAUtC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM;IAYxC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;IAU/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAS7B,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM;IAInC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM;IAKvC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;IAWhC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM;IAa9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAY1B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;IA2ClE,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;CAgC3E"}

44
types/Geometry/RegionParse.d.ts vendored Normal file
View File

@@ -0,0 +1,44 @@
import { Curve } from "../DatabaseServices/Entity/Curve";
import { Route, Vertice } from "./CurveMap";
type RegionRouteS = (Route[])[];
/**
面域分析,基于最小循环图重新实现的版本,拓展了实现求最大轮廓。
当最大轮廓=最小轮廓时,只绘制最大轮廓(独立轮廓无分裂)。
算法只实现去重模式,业务场景应该没有非去重模式。
如果需要非去重模式那么应该获取到多个CurveMap然后对多个CurveMap进行面域分析得出多个重叠的面域。
*/
export declare class RegionParse {
numDimensions: number;
private removeDuplicate;
RegionsOutline: RegionRouteS;
RegionsInternal: RegionRouteS;
ExpLineMap: Map<Curve, Curve[]>;
private _CurveCount;
/**
* @param cuList 请不要传递圆和椭圆.
* @param [numDimensions=3] 精度:小数点后个数
* @param [removeDuplicate=true] 删除重复(现在必须是true,请不要修改它)
*/
constructor(cuList: Curve[], numDimensions?: number, removeDuplicate?: boolean);
static RegionsIsOverlap(Route: Route[]): boolean;
private RemoveFilamentAt;
private RemoveEdge;
/**
* 找到最下方并且最左边的站 yx
*/
private FindLowerLeftStand;
/**
* 构造路线图. 每个节点对应下一个路口的路线表. 路口表使用逆时针排序,起始角度使用正x轴.
* @returns 所有的顶点
*/
protected GenerateVerticeMap(curveList: Curve[]): Array<Vertice>;
private BreakArc;
/**
* 曲线是否已经被算法使用
*/
GetCueveUsed(cu: Curve): boolean;
}
export declare function CalcRouteAngle(r: Route, length: number): void;
export {};
//# sourceMappingURL=RegionParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RegionParse.d.ts","sourceRoot":"","sources":["../../../src/Geometry/RegionParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAY,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMtD,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAEhC;;;;;;GAMG;AACH,qBAAa,WAAW;IAiBgB,aAAa;IAAM,OAAO,CAAC,eAAe;IAd9E,cAAc,EAAE,YAAY,CAAM;IAElC,eAAe,EAAE,YAAY,CAAM;IAGnC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAa;IAE5C,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,MAAM,EAAE,KAAK,EAAE,EAAS,aAAa,SAAI,EAAU,eAAe,UAAO;IAiErF,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;IAKtC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAwEhE,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO;CAYnC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAQtD"}

4
types/Geometry/RotateUV.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
import { Matrix2 } from './Matrix2';
export declare const ROTATE_MTX2: Matrix2;
export declare function RotateUVs(geo: THREE.Geometry): void;
//# sourceMappingURL=RotateUV.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"RotateUV.d.ts","sourceRoot":"","sources":["../../../src/Geometry/RotateUV.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,WAAW,SAAiC,CAAC;AAC1D,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,QAW5C"}

View File

@@ -0,0 +1,4 @@
import { BufferGeometry, Vector3 } from "three";
export declare function GenerateExtrudeEdgeGeometry(contourPoints: Vector3[][], height: number): BufferGeometry;
export declare function GenerateBoxEdgeGeometry(length: number, width: number, height: number): BufferGeometry;
//# sourceMappingURL=SimpleExtrudeEdgeGeometry.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SimpleExtrudeEdgeGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SimpleExtrudeEdgeGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAMhD,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAOtG;AAmBD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAIrG"}

7
types/Geometry/Simplify.d.ts vendored Normal file
View File

@@ -0,0 +1,7 @@
interface P {
x: number;
y: number;
}
export declare function simplify(points: P[], sqTolerance?: number, highestQuality?: boolean): P[];
export {};
//# sourceMappingURL=Simplify.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Simplify.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Simplify.ts"],"names":[],"mappings":"AAMA,UAAU,CAAC;IAEP,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAyGD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,GAAE,MAAU,EAAE,cAAc,GAAE,OAAc,OAQ5F"}

View File

@@ -0,0 +1,32 @@
import { Ray } from "three";
import { PromptDistendResult } from "../../Editor/PromptResult";
import { Box3Ext, SplitType } from "../Box";
import { ISpaceParse } from "./ISpaceParse";
/**
* 夹层空间分析
*/
export declare class ClampSpaceParse extends ISpaceParse {
Parse(): Promise<void>;
/**
* 单板延伸空间的时候的延伸距离
*/
get SignalDist(): number;
protected _signalDist: number;
ParseSignalBoard(): Promise<void>;
GetSignalDist(): Promise<PromptDistendResult>;
SetRay(ray: Ray): void;
SelectBoxRecord: Map<SplitType, number>;
WrapSelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
/**
* virtual (请重载) 当盒子空间被切割时,选择合适的空间
* @param splitBoxs 切割后的盒子(2个)
* @param splitType 切割类型
* @returns box 盒子
*/
SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
/**
*用单块板包围盒切割空间
*/
private SpliteBoxsAndSelect;
}
//# sourceMappingURL=ClampSpaceParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ClampSpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAe5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAEtC,KAAK;IAiEX;;OAEG;IACH,IAAI,UAAU,WAGb;IACD,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAExB,gBAAgB;IAuChB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQnD,MAAM,CAAC,GAAG,EAAE,GAAG;IAIf,eAAe,yBAAgC;IACzC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjF;;;;;OAKG;IACG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7E;;OAEG;YACW,mBAAmB;CA+CpC"}

View File

@@ -0,0 +1,6 @@
import { ClampSpaceParse } from "./ClampSpaceParse";
import { PromptDistendResult } from "../../Editor/PromptResult";
export declare class ClampSpaceParseDist extends ClampSpaceParse {
GetSignalDist(): Promise<PromptDistendResult>;
}
//# sourceMappingURL=ClampSpaceParseDist.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ClampSpaceParseDist.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseDist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAG9E,qBAAa,mBAAoB,SAAQ,eAAe;IAG9C,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;CActD"}

View File

@@ -0,0 +1,10 @@
import { ClampSpaceParse } from "./ClampSpaceParse";
import { PromptDistendResult } from "../../Editor/PromptResult";
import { Box3Ext, SplitType } from "../Box";
export declare class ClampSpaceParseFix extends ClampSpaceParse {
set SignalDist(v: number);
get SignalDist(): number;
GetSignalDist(): Promise<PromptDistendResult>;
SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
}
//# sourceMappingURL=ClampSpaceParseFix.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ClampSpaceParseFix.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,eAAe;IAEnD,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,EAGvB;IACD,IAAI,UAAU,IAJI,MAAM,CAOvB;IAGK,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQ7C,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAKhF"}

View File

@@ -0,0 +1,15 @@
import { Box3Ext, SplitType } from "../Box";
import { ClampSpaceParseDist } from "./ClampSpaceParseDist";
/**
* 夹层空间分析重载,使用GetkeyWord来选择合适的盒子.
*/
export declare class ClampSpaceParseKey extends ClampSpaceParseDist {
/**
* virtual (请重载) 当盒子空间被切割时,选择合适的空间
* @param splitBoxs 切割后的盒子(2个)
* @param splitType 切割类型
* @returns box 盒子
*/
SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
}
//# sourceMappingURL=ClampSpaceParseKey.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ClampSpaceParseKey.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,mBAAmB;IAEvD;;;;;MAKE;IACI,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAsBhF"}

View File

@@ -0,0 +1,15 @@
import { Ray } from "three";
import { Box3Ext, SplitType } from "../Box";
import { ClampSpaceParseDist } from "./ClampSpaceParseDist";
export declare class ClampSpaceParseRay extends ClampSpaceParseDist {
private selectRay;
SetRay(ray: Ray): this;
/**
* virtual (请重载) 当盒子空间被切割时,选择合适的空间
* @param splitBoxs 切割后的盒子(2个)
* @param splitType 切割类型
* @returns box 盒子
*/
SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
}
//# sourceMappingURL=ClampSpaceParseRay.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ClampSpaceParseRay.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseRay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qBAAa,kBAAmB,SAAQ,mBAAmB;IAEvD,OAAO,CAAC,SAAS,CAAM;IAEvB,MAAM,CAAC,GAAG,EAAE,GAAG;IAOf;;;;;MAKE;IACI,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAiBhF"}

View File

@@ -0,0 +1,64 @@
import { Matrix4, Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { BoardType } from "../../DatabaseServices/Entity/BoardInterface";
import { Entity } from "../../DatabaseServices/Entity/Entity";
import { Box3Ext, SplitType } from "../Box";
import { VisualSpaceBox } from './../../Editor/VisualSpaceBox';
export declare class ISpaceParse {
/**
* 解析空间成功
*/
ParseOK: boolean;
/**
* 空间占地盒子
*/
SpaceBox: Box3Ext;
/**
* 空间盒子所在的位置矩阵
*/
SpaceOCS: Matrix4;
SpaceOCSInv: Matrix4;
/**
* 板件映射表
*/
BoardMap: Map<BoardType, Board[]>;
/**
* 解析空间所用的板件列表
*/
Boards: Board[];
LeftBoard: Board;
RightBoard: Board;
/**
* 动态中,禁止执行二次操作
*/
IsDynamic: Boolean;
/**选到的虚拟空间 */
VisualSpaceBox: VisualSpaceBox;
Rotation: {
x: number;
y: number;
z: number;
};
IntersectSpaceEntitys: Entity[];
/**
* # 构造后请手动调用Parse()方法.
* @param boards 板件列表
* @param [spaceOCS] 默认空间矩阵,如果不设置将使用第一块板作为空间矩阵
*/
constructor(boards?: Board[], spaceOCS?: Matrix4);
Parse(): Promise<void>;
get Size(): Vector3;
get DrawCS(): Matrix4;
protected GetBoardInSpaceType(br: Board): BoardType;
/**
* 构造板件类型Map
*/
protected GeneralBoardMap(): void;
/**
* 解析板件的盒子,并且(排序,归并)
* @param boardCol
* @param splitType
*/
protected ParseBoardBox(boardCol: Board[], splitType: SplitType): Box3Ext[];
}
//# sourceMappingURL=ISpaceParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ISpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ISpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,WAAW;IAEpB;;OAEG;IACH,OAAO,UAAS;IAEhB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAa;IAE9C;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAS;IAC3B,aAAa;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ;;;;MAAwB;IAGhC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAEhC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO;IAe1C,KAAK;IAEX,IAAI,IAAI,YAKP;IAED,IAAI,MAAM,IAAI,OAAO,CAOpB;IAED,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,SAAS;IAenD;;OAEG;IACH,SAAS,CAAC,eAAe;IAmBzB;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;CAmE9E"}

View File

@@ -0,0 +1,13 @@
import { Matrix4, Vector3 } from "three";
import { ISpaceParse } from "./ISpaceParse";
export declare class Point2SpaceParse extends ISpaceParse {
Parse(): Promise<void>;
}
/**
* @param p1UCS 绘制前视图坐标系 按2点空间UCS来搞
* @param p2UCS
* @param UCSMatrix
* @param lastDepth
*/
export declare function GetSpaceDepth(p1UCS: Vector3, p2UCS: Vector3, UCSMatrix: Matrix4, lastDepth: number): Promise<number>;
//# sourceMappingURL=Point2SpaceParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Point2SpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/Point2SpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,OAAO,EAAE,MAAM,OAAO,CAAC;AAiB9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,gBAAiB,SAAQ,WAAW;IAEvC,KAAK;CAmDd;AAiBD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAsFxG"}

View File

@@ -0,0 +1,5 @@
import { ISpaceParse } from "./ISpaceParse";
export declare class Point3SpaceParse extends ISpaceParse {
Parse(): Promise<void>;
}
//# sourceMappingURL=Point3SpaceParse,.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Point3SpaceParse,.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/Point3SpaceParse,.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,qBAAa,gBAAiB,SAAQ,WAAW;IAEvC,KAAK;CAuFd"}

View File

@@ -0,0 +1,17 @@
import { Intersection, Object3D, Ray, Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Viewer } from "../../GraphicsSystem/Viewer";
/**
* 点选空间拾取板件方法,该方法通过构造射线去拾取板件,并且尝试得到周围的板件.
*/
export declare class PointSelectBoards {
private ptVcs;
private view;
private boardObjects;
SelectBoards: Board[];
Intersection: Intersection;
constructor(ptVcs: Vector3, view: Viewer, boardObjects: Object3D[]);
private Select;
get Ray(): Ray;
}
//# sourceMappingURL=PointSelectBoards.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PointSelectBoards.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectBoards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAW,QAAQ,EAAE,GAAG,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD;;GAEG;AACH,qBAAa,iBAAiB;IAKd,OAAO,CAAC,KAAK;IAAW,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,YAAY;IAHvE,YAAY,EAAE,KAAK,EAAE,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;gBAEd,KAAK,EAAE,OAAO,EAAU,IAAI,EAAE,MAAM,EAAU,YAAY,EAAE,QAAQ,EAAE;IAiB1F,OAAO,CAAC,MAAM;IAwFd,IAAI,GAAG,IAAI,GAAG,CAWb;CACJ"}

View File

@@ -0,0 +1,40 @@
import { Board } from "../../DatabaseServices/Entity/Board";
import { Entity } from "../../DatabaseServices/Entity/Entity";
import { PromptPointResult } from "../../Editor/PromptResult";
import { ISpaceParse } from "./ISpaceParse";
import { PointSelectBoards } from "./PointSelectBoards";
export declare enum EnableSelectType {
Stretch = 1,
Two = 2,
Three = 4,
AutoCutting = 5,
All = 7
}
export declare class PointSelectSpace {
SpaceParse: ISpaceParse;
GetPointRes: PromptPointResult;
Enable: EnableSelectType;
UseUCSSpace: boolean;
AutoCutting: boolean;
Select(callback?: Function): any;
get ParseOK(): boolean;
/**
* Virtual
* @param brs
*/
protected ParseBySelect(brs: Board[]): Promise<void>;
/**
* Virtual
* @param ptSelect
*/
protected ParseByPointSelect(ptSelect: PointSelectBoards, isDynamic?: boolean): Promise<void>;
protected ParseBy2Point(): Promise<void>;
protected ParseBy3Point(): Promise<void>;
private PointParseSpace;
private PointParseVisualSpace;
private ShowSpaceBox;
private TryRotateSpaceToUCS;
}
export declare function FilterVisualSpaceBox(e: Entity): boolean;
export declare function TryRotateSpaceToUCS(spaceParse: ISpaceParse): void;
//# sourceMappingURL=PointSelectSpace.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PointSelectSpace.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectSpace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAI9D,OAAO,EAAE,iBAAiB,EAAgB,MAAM,2BAA2B,CAAC;AAI5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,oBAAY,gBAAgB;IAExB,OAAO,IAAI;IACX,GAAG,IAAI;IACP,KAAK,IAAI;IACT,WAAW,IAAI;IACf,GAAG,IAAa;CACnB;AAUD,qBAAa,gBAAgB;IAEzB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,mBAAwB;IAC9B,WAAW,UAAS;IACpB,WAAW,UAAS;IACd,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAqHhC,IAAI,OAAO,IAAI,OAAO,CAGrB;IAED;;;OAGG;cACa,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;IAI1C;;;OAGG;cACa,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,UAAQ;cAGjE,aAAa;cAGb,aAAa;YAEf,eAAe;IAwB7B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,mBAAmB;CAI9B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,WAG7C;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,QAoC1D"}

View File

@@ -0,0 +1,10 @@
import { Board } from "../../DatabaseServices/Entity/Board";
import { PointSelectBoards } from "./PointSelectBoards";
import { PointSelectSpace } from "./PointSelectSpace";
export declare class PointSelectSpaceClamp extends PointSelectSpace {
protected ParseBySelect(brs: Board[], isDynamic?: boolean): Promise<void>;
protected ParseByPointSelect(ptSelect: PointSelectBoards, isDynamic?: boolean): Promise<void>;
protected ParseBy2Point(isDynamic?: boolean): Promise<void>;
protected ParseBy3Point(isDynamic?: boolean): Promise<void>;
}
//# sourceMappingURL=PointSelectSpaceClamp.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"PointSelectSpaceClamp.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectSpaceClamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,qBAAsB,SAAQ,gBAAgB;cAEvC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,SAAS,UAAQ;cAOpC,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,UAAQ;cAO1E,aAAa,CAAC,SAAS,UAAQ;cAO/B,aAAa,CAAC,SAAS,UAAQ;CAMlD"}

View File

@@ -0,0 +1,13 @@
import { Curve } from "../../DatabaseServices/Entity/Curve";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
import { ISpaceParse } from "./ISpaceParse";
/**
* 板件周围轮廓分析
*/
export declare class SurroundOutlineParse extends ISpaceParse {
Polylines: Polyline[];
Outlines: Curve[];
Parse(): Promise<void>;
private GroupBoards;
}
//# sourceMappingURL=SurroundOutlineParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SurroundOutlineParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/SurroundOutlineParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IAEjD,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,QAAQ,EAAE,KAAK,EAAE,CAAM;IACjB,KAAK;IAiFX,OAAO,CAAC,WAAW;CAuCtB"}

View File

@@ -0,0 +1,8 @@
import { ISpaceParse } from "./ISpaceParse";
/**
* 板件占用空间分析
*/
export declare class TotalSpaceParse extends ISpaceParse {
Parse(): Promise<void>;
}
//# sourceMappingURL=TotalSpaceParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"TotalSpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/TotalSpaceParse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAEtC,KAAK;CAYd"}

63
types/Geometry/SweepGeometry.d.ts vendored Normal file
View File

@@ -0,0 +1,63 @@
import { BufferGeometry, Geometry, Vector2, Vector3 } from "three";
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry";
import { Curve } from "../DatabaseServices/Entity/Curve";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
/**
* 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体.
* 该几何体需要轮廓和路径的起始截面垂直,否则构造的实体将会错误.
*/
export declare class SweepGeometry extends Geometry {
edgePts: number[];
polygonIndexes: any[];
ShapeMaterialSlotData: number[];
constructor(contour: Polyline, path: Curve[] | Curve, ShapeMaterialSlotData?: number[]);
get LineGeom(): LineGeometry;
get EdgeGeom(): BufferGeometry;
AddShape(contour: Polyline, path: Curve): void;
AddShape2(contour: Polyline, paths: Curve[]): void;
/**
* 使用4点构建面
* @param a 左下
* @param b 右下
* @param c 左上
* @param d 右上
* @param uvs
* @param [materialIndex]
*/
protected BuildFace4(a: number, b: number, c: number, d: number, uvs: Vector2[], materialIndex?: number): void;
/**
* 构造边缘面开始标记
* @param dir 前进方向(单位向量)
*/
protected SideStartMark(dir: Vector3): void;
protected BuildSideFaces(shapePts2d: Vector2[], pathPts2d: Vector2[], pathPts: Vector3[], verts: Vector3[][]): void;
protected BuildLid(shapePts2d: Vector2[], verts: Vector3[][]): void;
}
/**
* 将轮廓变换到`路径上某个点`.
*
* @param {Vector3[]} contourPts 原始的轮廓点(在世界坐标系)
* @param {Vector3} normal 路径法向量
* @param {Vector3} curP 路径上当前点
* @param {Vector3} [preP] 路径的前一个点
* @param {Vector3} [nextP] 路径下一个点
* @returns 变换后的轮廓点表
*/
export declare function ProjectionToPlane(contourPts: Vector3[], normal: Vector3, curP: Vector3, preP?: Vector3, nextP?: Vector3): Vector3[];
type Polygon = number[];
export declare class SweepGeometrySimple extends SweepGeometry {
SidePolygons: (Polygon[])[];
private _curSidePolygons;
private _curDir;
TriFaces: (number[])[];
shapeVerts: Vector3[][];
shapePts2d: Vector2[];
computeVertexNormals(): void;
computeFaceNormals(): void;
BuildFace4(a: number, b: number, c: number, d: number, uvs: Vector2[], materialIndex?: number): void;
protected SideStartMark(dir: Vector3): void;
protected BuildSideFaces(shapePts2d: Vector2[], pathPts2d: Vector2[], pathPts: Vector3[], verts: Vector3[][]): void;
protected BuildLid(shapePts2d: Vector2[], verts: Vector3[][]): void;
}
export {};
//# sourceMappingURL=SweepGeometry.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SweepGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SweepGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiC,QAAQ,EAA6F,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7L,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAK/D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IAEvC,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,cAAc,QAAM;IACpB,qBAAqB,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE;IAYtF,IAAI,QAAQ,IAAI,YAAY,CAQ3B;IAED,IAAI,QAAQ,mBAGX;IAED,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;IAoDvC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IAyE3C;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM;IAQvG;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO;IAEpC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAkG5G,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;CAkC/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAiCnI;AAuBD,KAAK,OAAO,GAAG,MAAM,EAAE,CAAC;AAExB,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,OAAO,CAAU;IAEzB,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACvB,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,EAAE,CAAC;IACb,oBAAoB;IACpB,kBAAkB;IAElB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM;cAOnF,aAAa,CAAC,GAAG,EAAE,OAAO;cAS1B,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;cAiBlG,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;CACxE"}

4
types/Geometry/UVUtils.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
import { Geometry, Matrix4 } from "three";
export declare function ScaleUV(geo: Geometry, scale?: number): void;
export declare function ScaleUV2(geo: Geometry, ocs: Matrix4, xScale?: number, yScale?: number, isInvert?: boolean): void;
//# sourceMappingURL=UVUtils.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"UVUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/UVUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAEnD,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,SAAO,QAYlD;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,SAAO,EAAE,MAAM,SAAO,EAAE,QAAQ,UAAQ,QAwBnG"}