import { Vector3 } from 'three';
import { Entity } from '../DatabaseServices/Entity/Entity';
import { ObjectSnapMode } from './ObjectSnapMode';
import { GetPointPrompt } from "./PromptOptions";
/**
 * 轴线捕捉模式
 */
export declare enum AxisSnapMode {
    None = 0,//禁用
    Polar = 1,//极轴
    Ortho = 2,//正交
    Custom = 3
}
export declare class SnapServices {
    Disabled: boolean;
    FilterErase: boolean;
    FilterEntitys: Set<Entity>;
    SnapSize: number;
    AxisSnapMode: AxisSnapMode;
    SnapPoint: Vector3;
    AxisSnapBasePoint: Vector3;
    SnapModeEnable: ObjectSnapMode;
    EnablePolarSnap: boolean;
    CustomAxis: Vector3[];
    SnapEntity: Entity;
    private _SnapType;
    private _DynPrompt;
    private _HasBasePoint;
    private _IsZAxis;
    private _SupportSnapPoints;
    private _LockSuppotPointIndex;
    private _UCS;
    private _Prompt;
    /** 切线捕捉时使用的基点 */
    TanBasePoint: Vector3;
    Start(prompt: GetPointPrompt): void;
    Stop(): void;
    /**
     * 返回当前拾取点的捕捉类型
     */
    get SnapType(): ObjectSnapMode;
    private set SnapType(value);
    private UpdateCursort;
    /**
     * 返回合适的捕捉点,如果有的话.
     * @returns 捕捉点或空
     */
    GetSnapPoint(): Vector3 | undefined;
    private _DelaySupportSnapId;
    /**
     * 获得实体捕捉点.
     *
     * 前期:
     * 如果鼠标还在旧的捕捉点时,则返回旧的捕捉点.
     * 清理辅助捕捉点定时器.
     *
     * 1.先计算了(端点,中点,圆心,垂点,切点).=>(进行辅助捕捉点添加)
     * 2.计算了交点.
     * 3.计算了最近点.
     * @returns
     */
    private GetEntitySnapPoint;
    private CalcClosestSnapPoint;
    private GetSupportEntity;
    /**
     * 轴线捕捉
     * 1.尝试轴线捕捉.
     * 2.尝试延伸轴捕捉.
     * 3.返回较近捕捉轴.{捕捉类型,捕捉轴,捕捉点}
     *
     * @param supportSnapPt 辅助的捕捉点.
     * @param [isFirst]
     * @returns SnapAxis
     */
    private AxisSnap;
    GetAxisSnapPoint(): Vector3;
    /**
     * 十字光标组
     */
    private _CrossCursor;
    /**
     * 初始化捕捉光标(十字)
     */
    private InitCrossCursor;
    /**
     * 更新所有的十字光标
     */
    private UpdateCrossCursor;
    private _SquareCursor;
    private InitSquareCursor;
    private UpdateSquareCursor;
    private UpdateSquareCursorMode;
    private _ObliqueCrossCursor;
    private InitObliqueCrossCursor;
    private UpdateObliqueCrossCursor;
    private _ObliqueOutline;
    private InitObliqueOutline;
    private UpdateObliqueOutline;
    private UpdateObjectPosition;
    private _SupportExtLine;
    _SupportExtLinePts: Vector3[];
    private InitSupportExtLine;
    private UpdateSupportExtLine;
    private DrawExtend;
    InitDynPrompt(): void;
    UpdateDynPrompt(): void;
}
export declare function PtCPToAxis(axisSpWcs: Vector3, axisEpWcs: Vector3, ptVcs: Vector3): {
    dist: number;
    cp: Vector3;
};
//# sourceMappingURL=SnapServices.d.ts.map