import { BufferGeometry, Material, Object3D, Vector3 } from "three";
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry";
import { SweepGeometry } from "../../../../Geometry/SweepGeometry";
import { RenderType } from "../../../../GraphicsSystem/RenderType";
import { CADFiler } from "../../../CADFiler";
import { Curve } from "../../../Entity/Curve";
import { Polyline } from "../../../Entity/Polyline";
import { ObjectId } from "../../../ObjectId";
import { PhysicalMaterialRecord } from "../../../PhysicalMaterialRecord";
import { TemplateRecord } from "../../../Template/TemplateRecord";
import { RoomFlatBase } from "../Flat/RoomFlatBase";
import { RoomBase } from "../RoomBase";
export declare enum BulkheadCeiling_ContourType {
    Hole = 0,
    Land = 1,
    Sweep = 2
}
export interface BulkheadCeiling_ContourData {
    ContourType: BulkheadCeiling_ContourType;
    Path: Curve;
    SweepShapeTempalteId: ObjectId<TemplateRecord>;
    Materials: ObjectId<PhysicalMaterialRecord>[];
    Contour: Polyline;
    ContourId: number;
    ShapeMaterialSlotData: number[];
    OverWriteMaterial?: Map<number, ObjectId<PhysicalMaterialRecord>>;
    Deviation: number;
    Height: number;
}
/**
 * 吊顶(灯带)
 */
export declare class BulkheadCeiling extends RoomBase {
    constructor();
    private _ContourData;
    _GemoIdMap: Map<number, number>;
    get ContourData(): BulkheadCeiling_ContourData[];
    set ContourData(value: BulkheadCeiling_ContourData[]);
    private _Height;
    get Height(): number;
    set Height(value: number);
    RelativeRoomFlatTop: ObjectId<RoomFlatBase>;
    get MeshMaterial(): Material;
    private _EdgeGeometrys;
    get EdgeGeometrys(): BufferGeometry[];
    private _LineGeometry;
    get LineGeometry(): LineGeometry[];
    private _FaceGeometry;
    get FaceGeometry(): BufferGeometry;
    private _MeshGeometry;
    get MeshGeometry(): SweepGeometry[];
    get MeshGeometry2(): BufferGeometry;
    get Materials2(): Material[];
    GetLineGeometry(pts: number[]): void;
    InitDrawObject(renderType?: RenderType): Object3D;
    /**
     * 重载:更新绘制的实体
     * @param {RenderType} renderType
     * @param {Object3D} obj
     */
    UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
    SetMaterialAtSlot(mtl: ObjectId<PhysicalMaterialRecord>, slotIndex: number, geoId?: number): void;
    GetMaterials(index: number): Material[];
    UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D, material?: Material): void;
    IsMtlLockAtSlot(slotIndex: number, geoId?: number): boolean;
    GetMtlLockedStatus(): {
        allMtlLocked: boolean;
        partMtlLocked: boolean;
    };
    GetPhyMtlRecords(containErased?: boolean): PhysicalMaterialRecord[];
    SetAllMaterialAtSlot(mtl: ObjectId<PhysicalMaterialRecord>): void;
    UpdateDrawGeometry(): void;
    ClearDraw(): this;
    GetGripPoints(): Array<Vector3>;
    GetStretchPoints(): Vector3[];
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    MoveGripPoints(indexList: number[], moveVec: Vector3): void;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
//# sourceMappingURL=BulkheadCeiling.d.ts.map