T24: Add shared CAD types file (cad.types.ts)
This commit is contained in:
@@ -0,0 +1,75 @@
|
|||||||
|
/**
|
||||||
|
* Shared CAD type definitions — single source of truth.
|
||||||
|
* Import from here instead of duplicating interfaces across services/components.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface CADLayer {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
visible: boolean;
|
||||||
|
locked: boolean;
|
||||||
|
color?: string;
|
||||||
|
lineType?: string;
|
||||||
|
transparency?: number;
|
||||||
|
sortOrder?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CADProperties {
|
||||||
|
fill?: string;
|
||||||
|
stroke?: string;
|
||||||
|
strokeWidth?: number;
|
||||||
|
rotation?: number;
|
||||||
|
lineType?: 'solid' | 'dashed' | 'dotted';
|
||||||
|
radius?: number;
|
||||||
|
x1?: number;
|
||||||
|
y1?: number;
|
||||||
|
x2?: number;
|
||||||
|
y2?: number;
|
||||||
|
points?: Array<{ x: number; y: number }>;
|
||||||
|
text?: string;
|
||||||
|
fontSize?: number;
|
||||||
|
startAngle?: number;
|
||||||
|
endAngle?: number;
|
||||||
|
[key: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CADElement {
|
||||||
|
id: string;
|
||||||
|
type: string;
|
||||||
|
layerId: string;
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
properties: CADProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExportData {
|
||||||
|
version: string;
|
||||||
|
exportedAt: number;
|
||||||
|
projectMeta: Record<string, unknown>;
|
||||||
|
layers: CADLayer[];
|
||||||
|
elements: CADElement[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportData {
|
||||||
|
version: string;
|
||||||
|
exportedAt: number;
|
||||||
|
projectMeta: Record<string, unknown>;
|
||||||
|
layers: CADLayer[];
|
||||||
|
elements: CADElement[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExportOptions {
|
||||||
|
includeHiddenLayers?: boolean;
|
||||||
|
includeInvisibleElements?: boolean;
|
||||||
|
pageSize?: 'a4' | 'a3' | 'letter';
|
||||||
|
landscape?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Unified return type for all export functions. */
|
||||||
|
export interface ExportResult {
|
||||||
|
success: boolean;
|
||||||
|
data?: string;
|
||||||
|
error?: string;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user