import { AcDbPolyline, AcGePoint2dLike } from '@mlightcad/data-model'; import { AcApContext } from '../../app'; import { AcEdBaseView, AcEdCommand, AcEdPreviewJig } from '../../editor'; interface RectSettings { chamferDist1: number; chamferDist2: number; filletRadius: number; width: number; elevation: number; thickness: number; rotation: number; } /** * Dynamic preview jig for RECT command. */ export declare class AcApRectJig extends AcEdPreviewJig { /** * Preview polyline entity reused across cursor updates. */ private _rect; /** * Fixed first-corner point captured at jig start. */ private _firstPoint; /** * Lazily supplies latest rectangle settings (fillet/chamfer/rotation...). */ private _settingsProvider; /** * Creates a dynamic rectangle preview jig. * * @param view - Active editor view used to render transient geometry. * @param start - First corner point of the rectangle. * @param settingsProvider - Callback that returns current command settings. */ constructor(view: AcEdBaseView, start: AcGePoint2dLike, settingsProvider: () => RectSettings); /** * Gets the transient polyline entity displayed by the jig. */ get entity(): AcDbPolyline; /** * Rebuilds preview geometry from the current cursor point. * * @param secondPoint - Dynamic opposite corner point under the cursor. */ update(secondPoint: AcGePoint2dLike): void; } /** * Command to create one rectangle with AutoCAD-like branching options. */ export declare class AcApRectCmd extends AcEdCommand { /** * Last-used rectangle settings persisted between command invocations. */ private static _settings; /** * Creates RECT command instance. */ constructor(); /** * Command entry point. * * Flow: * 1. Prompt first corner and first-stage options. * 2. Prompt second-corner input, dimensions, or area workflow. * 3. Build final polyline and append it to model space. * * @param context - Current application/document context. */ execute(context: AcApContext): Promise; /** * Prompts for the first rectangle corner while handling setup keywords. * * Supported options at this step: Chamfer, Elevation, Fillet, Thickness, Width. * * @param settings - Mutable settings object updated in-place by options. * @returns First corner point, or `undefined` when user cancels. */ private promptFirstCorner; /** * Prompts for rectangle completion input after first corner is known. * * Supports direct opposite corner pick or switching to Area/Dimensions/Rotation * branches through a point-prompt state machine. * * @param context - Current application/document context. * @param firstPoint - First corner point. * @param settings - Mutable rectangle settings used by preview/build. * @returns Final rectangle build input, or `undefined` on cancel. */ private promptSecondInput; /** * Prompts for a strictly positive numeric value. * * @param message - Prompt message text. * @param jig - Optional preview jig displayed during input. * @returns Positive number, or `undefined` when canceled. */ private promptPositiveDouble; /** * Prompts chamfer distances and updates settings. * * Also clears fillet mode, because chamfer and fillet are mutually exclusive. * * @param settings - Mutable rectangle settings. * @returns `true` when values are accepted, otherwise `false`. */ private promptChamfer; /** * Prompts fillet radius and updates settings. * * Also clears chamfer values, because fillet and chamfer are mutually exclusive. * * @param settings - Mutable rectangle settings. * @returns `true` when value is accepted, otherwise `false`. */ private promptFillet; /** * Prompts segment width and updates settings. * * @param settings - Mutable rectangle settings. * @returns `true` when value is accepted, otherwise `false`. */ private promptWidth; /** * Prompts elevation and updates settings. * * @param settings - Mutable rectangle settings. * @returns `true` when value is accepted, otherwise `false`. */ private promptElevation; /** * Prompts thickness and updates settings. * * @param settings - Mutable rectangle settings. * @returns `true` when value is accepted, otherwise `false`. */ private promptThickness; /** * Prompts rectangle rotation angle and updates settings. * * @param context - Current application/document context. * @param firstPoint - First corner used as angle base point. * @param settings - Mutable rectangle settings. * @returns `true` when value is accepted, otherwise `false`. */ private promptRotation; /** * Prompts rectangle length and width explicitly. * * @param context - Current application/document context. * @param firstPoint - First corner point. * @param settings - Mutable rectangle settings. * @returns Dimension-based build input, or `undefined` on cancel. */ private promptDimensions; /** * Prompts rectangle area, then asks for either known length or known width. * * @param context - Current application/document context. * @param firstPoint - First corner point. * @param settings - Mutable rectangle settings. * @returns Dimension-based build input derived from area, or `undefined`. */ private promptArea; } export {}; //# sourceMappingURL=AcApRectCmd.d.ts.map