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, rotateUv: boolean); protected GenerateMeshData(br: ExtrudeSolid): void; get MeshGeometry(): BufferGeometry; get EdgeGeometry(): BufferGeometry; protected ParseGrooves(): Groove[]; } export { }; //# sourceMappingURL=ExtrudeEdgeGeometry2.d.ts.map