149 lines
4.7 KiB
TypeScript
149 lines
4.7 KiB
TypeScript
import { BufferGeometry, Vector3 } from "three";
|
|
import { Contour } from "../DatabaseServices/Contour";
|
|
import { ExtrudeSolid, ExtureContourCurve } 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;
|
|
constructor(contour: Contour, children?: ContourTreeNode[]);
|
|
SetParent(node: ContourTreeNode): void;
|
|
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 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: ExtureContourCurve;
|
|
depthType: DepthType;
|
|
depth: number;
|
|
allDepth: number;
|
|
wallType: DirectionType;
|
|
private Tape;
|
|
constructor(curve: ExtureContourCurve, 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[];
|
|
}
|
|
declare type Range = [number, number];
|
|
export declare class ExtrudeGeometryBuilder {
|
|
private br;
|
|
verticesArray: number[];
|
|
uvArray: number[];
|
|
edgeAndLidBuilder: EdgeGeometryBuild;
|
|
constructor(br: ExtrudeSolid);
|
|
protected GenerateMeshData(br: ExtrudeSolid): void;
|
|
get MeshGeometry(): BufferGeometry;
|
|
get EdgeGeometry(): BufferGeometry;
|
|
protected ParseGrooves(): Groove[];
|
|
}
|
|
export {};
|
|
//# sourceMappingURL=ExtrudeEdgeGeometry2.d.ts.map
|