import { Singleton } from "../../Common/Singleton";
import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
import { Board, IModeling } from "../../DatabaseServices/Entity/Board";
import { Curve } from "../../DatabaseServices/Entity/Curve";
import { ExtrudeContourCurve, ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
import { Shape } from "../../DatabaseServices/Shape";
import { IOriginSideModelingData } from "../../Production/Product";
/**
 *计算走刀工具类
 */
export declare class FeedingToolPath extends Singleton {
    /**
    * 处理形状,内偏移
     * @param shape 造型Shape
     * @param knifRadius 刀半径/偏移距离
     * @param [isOut=true] 是否是最外轮廓,如果是,洞需要外偏移一个刀半径,多段线偏移保留不闭合轮廓
     */
    private HandleShape;
    /**用于测试走刀路径 */
    TestCalcPath(br: Board, isCd?: boolean, rk?: number): Curve[];
    /**
     * 计算走刀路径
     */
    CalcPath(modelings: IModeling[], br: Board, rk?: number): Curve[];
    GetModelFeedPath(br: {
        Thickness: number;
        ContourCurve: ExtrudeContourCurve;
    }, modeling: IModeling, redundancyKnif?: number): Curve[];
    GetSideModelFeedPath(solid: ExtrudeSolid, faceContour: Polyline, redundancyKnif?: number): Curve[];
    private GrooveAddSize;
    /**
     * 获取所有的轮廓
     * @param cus
     * @param retCus 不能组成轮廓的线被添加到这里
     * @returns
     */
    private GetContours;
    CheckModeling(br: Board): number[];
    CheckSideModeling(br: Board): ExtrudeSolid[];
    CheckCustomHole(br: Board): ExtrudeHole[];
    HandleThoughGroove(brCon: ExtrudeContourCurve, shape: Shape, knifeRadius: number): void;
}
export declare function GetModelingFromCustomDrill(br: Board): {
    modeling: (IModeling & {
        originEn: ExtrudeHole;
    })[];
    sideModeling: IOriginSideModelingData[];
};
//# sourceMappingURL=FeedingToolPath.d.ts.map