import { Box3, Material, Matrix3, Matrix4, Object3D, Vector2, Vector3 } from "three";
import { ObjectSnapMode } from "../../Editor/ObjectSnapMode";
import { RenderType } from "../../GraphicsSystem/RenderType";
import { CADFiler } from "../CADFiler";
import { Entity } from "../Entity/Entity";
import { Line } from "../Entity/Line";
import { Text, TextAligen } from "../Text/Text";
interface DefaultValue {
    offset: Vector2;
    isFlipped: boolean;
}
/**
 * 对齐标注
 *   存在子类重载(线性标注 LinearDimension)
 * @class AlignedDimension
 */
export declare class AlignedDimension extends Entity {
    protected m_FootP1: Vector3;
    protected m_FootP2: Vector3;
    protected m_ArmP1: Vector3;
    protected m_ArmP2: Vector3;
    protected m_TextRotation: number;
    protected m_LeadOutVisible: boolean;
    private _Text;
    private _TextString;
    private _TextBoundingBox;
    private _LeadOutLine;
    private _LeadOutOffsetY;
    private _LeadOutOffsetX;
    private _DefaultVal;
    private _LeadOutPts;
    private _LeadOutIsFlipped;
    private isDragLeadOutPt;
    constructor(m_FootP1?: Vector3, m_FootP2?: Vector3, m_ArmP1?: Vector3, m_ArmP2?: Vector3, m_TextRotation?: number, m_LeadOutVisible?: boolean);
    set FootP1(v: Vector3);
    get FootP1(): Vector3;
    set FootP2(v: Vector3);
    get FootP2(): Vector3;
    set ArmP1(v: Vector3);
    get ArmP1(): Vector3;
    set ArmP2(v: Vector3);
    get ArmP2(): Vector3;
    get TextPosition(): Vector3;
    set TextPosition(p: Vector3);
    get DalUcs(): Matrix4;
    RaiseFooters(num: number): void;
    set TextRotation(angle: number);
    set TextAligen(al: TextAligen);
    get Text(): Text;
    set TextString(txt: string);
    get TextBoundingBox(): Box3;
    set TextBoundingBox(box: Box3);
    set LeadOutVisible(visible: boolean);
    set LeadOutFlipped(isFlipped: boolean);
    get LeadOutFlipped(): boolean;
    toggleLeadOutVisible(): void;
    toggleLeadOutFlipped(): void;
    set LeadOutOffsetY(size: number);
    get LeadOutOffsetY(): number;
    set LeadOutOffsetX(size: number);
    get LeadOutOffsetX(): number;
    set DefaultValue(val: DefaultValue);
    get DefaultValue(): DefaultValue;
    set TextSize(size: number);
    get TextSize(): number;
    Explode(): (Line | Text)[];
    protected ApplyMirrorMatrix(m: Matrix4): this;
    Clone(): this;
    CloneDrawObject(from: this): void;
    protected OnlyRenderType: boolean;
    InitDrawObject(renderType?: RenderType): Object3D;
    UpdateDrawObject(renderType: RenderType, obj: Object3D): void;
    /**
     * 更新引线并返回textPosition
     * @returns textPosition(Vector3)
     * @memberof AlignedDimension
     */
    UpdateLeadOutLine(): Vector3;
    UpdateText(pos?: Vector3): void;
    GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[];
    UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D, material?: Material): void;
    GetGripPoints(): Array<Vector3>;
    MoveGripPoints(indexList: number[], vec: Vector3): void;
    GetStretchPoints(): Array<Vector3>;
    MoveStretchPoints(indexList: Array<number>, vec: Vector3): void;
    protected ChangeFootPt(): void;
    protected _ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
}
export {};
//# sourceMappingURL=AlignedDimension.d.ts.map