增加余料归方算法
This commit is contained in:
		
							
								
								
									
										1
									
								
								types/Add-on/DrawDrilling/HoleUtils.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								types/Add-on/DrawDrilling/HoleUtils.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -14,7 +14,6 @@ export interface IBoardRectHoleType {
 | 
			
		||||
    left: string;
 | 
			
		||||
    right: string;
 | 
			
		||||
}
 | 
			
		||||
export declare const TempRectHoleOption: IBoardRectHoleType;
 | 
			
		||||
/**分析上下左右排钻 */
 | 
			
		||||
export declare function ParseBoardRectHoleType(br: Board, outBrRectHoleType?: IBoardRectHoleType): IBoardRectHoleType;
 | 
			
		||||
export declare function ExtureHoleInBoard(holes: ExtrudeHole[], board: Board, ocs: Matrix4): boolean;
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
{"version":3,"file":"HoleUtils.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/HoleUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAW,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAiB,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAQ5D,eAAO,MAAM,MAAM,MAAM,CAAC;AAE1B,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,UAAQ,WA4H3F;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,kBAKhC,CAAC;AAEF,cAAc;AACd,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAE,kBAA8B,sBA2BlG;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,WAIjF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,WAYlE;AAED,uBAAuB;AACvB,wBAAgB,iCAAiC,CAAC,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,QA+B9F"}
 | 
			
		||||
{"version":3,"file":"HoleUtils.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/HoleUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAW,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAiB,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAQ5D,eAAO,MAAM,MAAM,MAAM,CAAC;AAE1B,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,UAAQ,WA4H3F;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,cAAc;AACd,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAE,kBAA8B,sBA2BlG;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,WAIjF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,WAYlE;AAED,uBAAuB;AACvB,wBAAgB,iCAAiC,CAAC,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,QA+B9F"}
 | 
			
		||||
							
								
								
									
										48
									
								
								types/Add-on/testEntity/LargestInteriorRectangle.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								types/Add-on/testEntity/LargestInteriorRectangle.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
import { Box2, Vector2 } from "three";
 | 
			
		||||
/**
 | 
			
		||||
 * 获取面积最大的矩形
 | 
			
		||||
 * @param rects
 | 
			
		||||
 * @returns
 | 
			
		||||
 */
 | 
			
		||||
declare function GetMaxAreaFn(rects: [number, number, number][]): number;
 | 
			
		||||
declare function GetMaxWidthFn(rects: [number, number, number][]): number;
 | 
			
		||||
declare function GetMaxHeightFn(rects: [number, number, number][]): number;
 | 
			
		||||
/**
 | 
			
		||||
 * @example
 | 
			
		||||
 *
 | 
			
		||||
 * //1. 设置过滤条件(舍弃掉一些无用的矩形)
 | 
			
		||||
 * let lir = new LargestInteriorRectangle;
 | 
			
		||||
 * lir.MinWidth = 200;//设置最小可以接受的矩形宽度
 | 
			
		||||
 * lir.MinHeight = 200;//设置最小可以接受的矩形宽度
 | 
			
		||||
 * lir.MinArea = 200 * 200;//设置最小可以接受的矩形面积
 | 
			
		||||
 *
 | 
			
		||||
 * //除了变量 也可以设置过滤函数
 | 
			
		||||
 * //例如:
 | 
			
		||||
 * lir.FilterRectFn = !(w,h)=> (w>500 || h>500)   //这样将对长或者宽不足500的矩形板过滤(舍弃)
 | 
			
		||||
 *
 | 
			
		||||
 * //2. 可以设置优先模式,默认提供了面积优先,你也可以使用宽度优先或者高度优先,或许默认规则可能不好用,可以自定义传入自定义函数.
 | 
			
		||||
 * lir.GetMaxRectIndexFn = LargestInteriorRectangle.GetMaxAreaFn; //或者 LargestInteriorRectangle.GetMaxWidthFn / LargestInteriorRectangle.GetMaxHeightFn
 | 
			
		||||
 *
 | 
			
		||||
 * //3. 你已经设置好解析器,你现在可以进行解析了
 | 
			
		||||
 * let rects = lir.ParseLir([ new Vector3(0,0,0) , new Vector3(100,0,0) , new Vector3(50,100,0)]) //首尾不需要重复,首尾重复可能造成错误,程序不再校验
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
export declare class LargestInteriorRectangle {
 | 
			
		||||
    MinWidth: number;
 | 
			
		||||
    MinHeight: number;
 | 
			
		||||
    MinArea: number;
 | 
			
		||||
    /** 可以自定义过滤函数,以便过滤掉某些不需要的矩形,当返回true时,我们会过滤它 */
 | 
			
		||||
    FilterRectFn: (width: number, height: number) => boolean;
 | 
			
		||||
    GetMaxRectIndexFn: (rects: [number, number, number][]) => number;
 | 
			
		||||
    static GetMaxAreaFn: typeof GetMaxAreaFn;
 | 
			
		||||
    static GetMaxWidthFn: typeof GetMaxWidthFn;
 | 
			
		||||
    static GetMaxHeightFn: typeof GetMaxHeightFn;
 | 
			
		||||
    constructor();
 | 
			
		||||
    /**
 | 
			
		||||
     * 分析最大内接矩形
 | 
			
		||||
     * @param polygonPts 多边形点表,首尾不要相等
 | 
			
		||||
     */
 | 
			
		||||
    ParseLIR(polygonPts: Vector2[]): Box2[];
 | 
			
		||||
}
 | 
			
		||||
export {};
 | 
			
		||||
//# sourceMappingURL=LargestInteriorRectangle.d.ts.map
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
{"version":3,"file":"LargestInteriorRectangle.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/LargestInteriorRectangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAW/C;;;;GAIG;AACH,iBAAS,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAG/D;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAGhE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAGjE;AAuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,wBAAwB;IAEjC,QAAQ,SAAO;IACf,SAAS,SAAO;IAChB,OAAO,SAAa;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAEzD,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,MAAM,CAAgB;IAGhF,MAAM,CAAC,YAAY,sBAAgB;IACnC,MAAM,CAAC,aAAa,uBAAiB;IACrC,MAAM,CAAC,cAAc,wBAAkB;;IAMvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;CAqS1C"}
 | 
			
		||||
		Reference in New Issue
	
	Block a user