import { BufferGeometry, Geometry, Material, Matrix3, Mesh, Object3D, Vector3 } from "three";
import { Line2 } from "three/examples/jsm/lines/Line2";
import { ObjectSnapMode } from "../../../../../Editor/ObjectSnapMode";
import { Box3Ext } from "../../../../../Geometry/Box";
import { RenderType } from "../../../../../GraphicsSystem/RenderType";
import { CADFiler } from "../../../../CADFiler";
import { CADObject } from "../../../../CADObject";
import { Curve } from "../../../../Entity/Curve";
import { Polyline } from "../../../../Entity/Polyline";
import { ObjectId } from "../../../../ObjectId";
import { PhysicalMaterialRecord } from "../../../../PhysicalMaterialRecord";
import { RoomWallBase } from "../RoomWallBase";
import { RoomHoleBase } from "./RoomHoleBase";
/**
 * 折线洞 例如 转角窗 或者U型窗
 */
export declare class RoomHolePolyline extends RoomHoleBase {
    private _Points;
    private _FakerWalls;
    private _WpDists;
    private _WpLeftWall;
    private _WpRightWall;
    get FakerWalls(): RoomWallBase[];
    set FakerWalls(_FakerWalls: RoomWallBase[]);
    set WpDist(wpdists: number[]);
    get WpDist(): number[];
    get WpLeftWall(): boolean;
    get WpRightWall(): boolean;
    set WpLeftWall(v: boolean);
    set WpRightWall(v: boolean);
    UpdateWpDraw(): void;
    /**
     * 根据外飘参数得到区域
     *
     * @param wpdists 外飘距离
     * @cts 窗台石距离
     */
    GetWpRegion(wpdists: number[], cts?: number, ctszytc?: number): Polyline;
    get BoundingBoxInOCS(): Box3Ext;
    get PointsCount(): number;
    get Points(): Vector3[];
    set Points(pts: Vector3[]);
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
    GetGripPoints(): Vector3[];
    MoveGripPoints(ids: number[], vec: Vector3): void;
    GetStretchPoints(): Array<Vector3>;
    MoveStretchPoints(ids: Array<number>, vec: Vector3): void;
    get FakerPoints(): Vector3[];
    UpdatePoints(checkChange?: boolean): void;
    LidCurves: Curve[];
    Regions: Polyline[];
    UpdateDrawGeometry(): void;
    ClearDraw(): this;
    private _EdgeGeometry;
    get EdgeGeometry(): Geometry;
    private _MeshGeometry;
    get MeshGeometry(): BufferGeometry;
    GenWorldUV(geo: BufferGeometry, mtl: PhysicalMaterialRecord, start: number, count: number): void;
    set Material(materialId: ObjectId<PhysicalMaterialRecord>);
    get Material(): ObjectId<PhysicalMaterialRecord>;
    private _OverWriteMaterial;
    get OverWriteMaterial(): Map<number, ObjectId<PhysicalMaterialRecord>>;
    IsMtlLockAtSlot(slotIndex: number): boolean;
    SetMaterialAtSlot(mtl: ObjectId<PhysicalMaterialRecord>, slotIndex: number): void;
    SetAllMaterialAtSlot(mtl: ObjectId<PhysicalMaterialRecord>): void;
    GetMtlLockedStatus(): {
        allMtlLocked: boolean;
        partMtlLocked: boolean;
    };
    GetPhyMtlRecords(containErased?: boolean): PhysicalMaterialRecord[];
    private _GetValidOWMtl;
    protected get MeshMaterial(): Material[];
    get MaterialsIds(): number[];
    GetPrintObject3D(): (Line2 | Mesh<BufferGeometry, import("three").ShaderMaterial>)[];
    InitDrawObject(renderType?: RenderType): Object3D;
    /**
     * 重载:更新绘制的实体
     * @param {RenderType} renderType
     * @param {Object3D} obj
     */
    UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
    UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
    ApplyPartialUndo(undoData: CADObject): void;
}
//# sourceMappingURL=RoomHolePolyline.d.ts.map