import { Matrix3, Matrix4, Shape as TShape, Vector3 } from 'three';
import { ObjectSnapMode } from '../Editor/ObjectSnapMode';
import { CADFiler } from './CADFiler';
import { Contour } from './Contour';
import { Curve } from './Entity/Curve';
export declare class Shape {
    private _Outline;
    private _Holes;
    private _DisplayAccuracy;
    constructor(_Outline?: Contour, _Holes?: Contour[]);
    get DisplayAccuracy(): number;
    set DisplayAccuracy(v: number);
    get Outline(): Contour;
    get Holes(): Contour[];
    get Area(): number;
    get BoundingBox(): import("../Geometry/Box").Box3Ext;
    set Outline(con: Contour);
    set Holes(holes: Contour[]);
    get Shape(): TShape;
    get Position(): Vector3;
    set Position(p: Vector3);
    Z0(): this;
    MatrixPlanarizere(): void;
    ApplyMatrix(m: Matrix4): this;
    ApplyScaleMatrix(m: Matrix4): this;
    Explode(): Curve[];
    Clone(): Shape;
    SetColor(color: number): void;
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
    GetGripPoints(): Vector3[];
    MoveGripPoints(indexList: Array<number>, vec: Vector3): void;
    GetStretchPoints(): Vector3[];
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    IntersectionBoolOperation(targetShape: Shape): Shape[];
    UnionBoolOperation(targetShape: Shape, checkIntersect?: boolean): Shape[];
    /**
     * 如果完全被减掉,就返回0个.其他的返回1个或者n个
     * @param targetShapes 已经是合并后的形状数组
     */
    SubstactBoolOperation(targetShapes: Shape[]): Shape[];
    Equal(targetShape: Shape): boolean;
    private targetOutlinesSubHoles;
    /**
     * 目标轮廓减去洞
     *
     * @private
     * @param {Contour[]} tarContours 轮廓列表
     * @param {Contour[]} holes 洞列表
     * @returns {Contour[]} 新的轮廓列表
     * @memberof Shape
     */
    private targetOutlineSubHoleOutline;
    static pairHoleAndOutline(contours: Contour[]): Shape[];
    /**
     * 合并洞,本质是使用(并集算法)将可以并集的洞合并在一起,减少洞的数量.
     * canSidewipe 用于走刀,擦边的,包含的,是否合并
     */
    static mergeContours(holes: Contour[], canSidewipe?: boolean): Contour[];
    /**
     * 移除被包含的洞.(移除无效的洞,已经被更大的洞包含)
     *
     * @private
     * @param {Contour[]} tmpHoles 洞列表
     * @returns {Contour[]} 返回的洞列表都不会互相包含.
     * @memberof Shape
     */
    private static removeBeContaineredHoles;
    ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=Shape.d.ts.map