UNPKG

fullcontrol-js

Version:

FullControl TypeScript rewrite - API parity mirror of Python library (G-code generation & geometry)

354 lines (324 loc) 14.8 kB
interface InitObject<T> { [key: string]: any; } declare abstract class BaseModelPlus { constructor(init?: InitObject<any>, enforceKeys?: readonly string[]); updateFrom(source: any): void; update_from(source: any): void; copy<T extends this>(): T; } declare class Point extends BaseModelPlus { x?: number; y?: number; z?: number; color?: [number, number, number]; extrude?: boolean; speed?: number; static readonly typeName = "Point"; constructor(init?: Partial<Point>); toJSON(): { x: number | undefined; y: number | undefined; z: number | undefined; color: [number, number, number] | undefined; extrude: boolean | undefined; speed: number | undefined; }; static fromJSON(data: any): Point; XYZ_gcode(prev: Point): string | undefined; gcode(state: any): string | undefined; } declare class Vector { x?: number; y?: number; z?: number; constructor(init?: Partial<Vector>); static readonly typeName = "Vector"; toJSON(): { x: number | undefined; y: number | undefined; z: number | undefined; }; static fromJSON(data: any): Vector; } declare class ExtrusionGeometry extends BaseModelPlus { area_model?: 'rectangle' | 'stadium' | 'circle' | 'manual'; width?: number; height?: number; diameter?: number; area?: number; static readonly typeName = "ExtrusionGeometry"; constructor(init?: Partial<ExtrusionGeometry>); update_area(): void; toJSON(): { area_model: "rectangle" | "stadium" | "circle" | "manual" | undefined; width: number | undefined; height: number | undefined; diameter: number | undefined; area: number | undefined; }; static fromJSON(d: any): ExtrusionGeometry; gcode(state: any): undefined; } declare class StationaryExtrusion extends BaseModelPlus { volume: number; speed: number; static readonly typeName = "StationaryExtrusion"; constructor(init?: Partial<StationaryExtrusion>); toJSON(): { volume: number; speed: number; }; static fromJSON(d: any): StationaryExtrusion; gcode(state: any): string; } declare class Extruder extends BaseModelPlus { on?: boolean; units?: 'mm' | 'mm3'; dia_feed?: number; relative_gcode?: boolean; volume_to_e?: number; total_volume?: number; total_volume_ref?: number; travel_format?: 'G1_E0' | 'none'; retraction_length?: number; retraction_speed?: number; static readonly typeName = "Extruder"; constructor(init?: Partial<Extruder>); update_e_ratio(): void; get_and_update_volume(volume: number): number; toJSON(): { on: boolean | undefined; units: "mm" | "mm3" | undefined; dia_feed: number | undefined; relative_gcode: boolean | undefined; }; static fromJSON(d: any): Extruder; e_gcode(point1: Point, state: any): string; gcode(state: any): "M83 ; relative extrusion" | "M82 ; absolute extrusion\nG92 E0 ; reset extrusion position to zero" | undefined; } declare class Retraction extends BaseModelPlus { length?: number; speed?: number; static readonly typeName = "Retraction"; constructor(init?: Partial<Retraction>); toJSON(): { length: number | undefined; speed: number | undefined; }; static fromJSON(d: any): Retraction; gcode(state: any): string | undefined; } declare class Unretraction extends BaseModelPlus { length?: number; speed?: number; static readonly typeName = "Unretraction"; constructor(init?: Partial<Unretraction>); toJSON(): { length: number | undefined; speed: number | undefined; }; static fromJSON(d: any): Unretraction; gcode(state: any): string | undefined; } declare class Printer extends BaseModelPlus { print_speed?: number; travel_speed?: number; command_list?: Record<string, string>; new_command?: Record<string, string>; speed_changed?: boolean; static readonly typeName = "Printer"; constructor(init?: Partial<Printer>); f_gcode(state: any): string; gcode(state: any): undefined; toJSON(): { print_speed: number | undefined; travel_speed: number | undefined; }; static fromJSON(d: any): Printer; } declare class Buildplate extends BaseModelPlus { static readonly typeName = "Buildplate"; temp?: number; wait?: boolean; constructor(init?: Partial<Buildplate>); gcode(): string; } declare class Hotend extends BaseModelPlus { static readonly typeName = "Hotend"; temp?: number; wait?: boolean; tool?: number; constructor(init?: Partial<Hotend>); gcode(): string; } declare class Fan extends BaseModelPlus { static readonly typeName = "Fan"; speed_percent: number; part_fan_index?: number; constructor(init?: Partial<Fan>); gcode(): string; } interface GcodeStateLike { printer: Printer; gcode: string[]; } declare class PrinterCommand extends BaseModelPlus { id?: string; static readonly typeName = "PrinterCommand"; constructor(init?: Partial<PrinterCommand>); gcode(state: GcodeStateLike): string | undefined; } declare class ManualGcode extends BaseModelPlus { text?: string; static readonly typeName = "ManualGcode"; constructor(init?: Partial<ManualGcode>); gcode(): string | undefined; } declare class GcodeComment extends BaseModelPlus { text?: string; end_of_previous_line_text?: string; static readonly typeName = "GcodeComment"; constructor(init?: Partial<GcodeComment>); gcode(state: GcodeStateLike): string | undefined; } declare class GcodeControls extends BaseModelPlus { printer_name?: string; initialization_data?: Record<string, any>; save_as?: string; include_date?: boolean; show_banner: boolean; show_tips: boolean; silent: boolean; static readonly typeName = "GcodeControls"; constructor(init?: Partial<GcodeControls>); initialize(): void; } declare class PlotControls extends BaseModelPlus { color_type: string; line_width?: number; style?: 'tube' | 'line'; tube_type: 'flow' | 'cylinders'; tube_sides: number; zoom: number; hide_annotations: boolean; hide_travel: boolean; hide_axes: boolean; neat_for_publishing: boolean; raw_data: boolean; printer_name: string; initialization_data?: Record<string, any>; static readonly typeName = "PlotControls"; constructor(init?: Partial<PlotControls>); initialize(): void; } declare class PlotAnnotation extends BaseModelPlus { point?: Point; label?: string; static readonly typeName = "PlotAnnotation"; constructor(init?: Partial<PlotAnnotation>); visualize(state: any, plot_data: any, _plot_controls: any): void; } interface PolarPoint { radius: number; angle: number; } declare function polar_to_point(centre: Point, radius: number, angle: number): Point; declare function point_to_polar(target_point: Point, origin_point: Point): PolarPoint; declare function polar_to_vector(length: number, angle: number): Vector; declare function midpoint(p1: Point, p2: Point): Point; declare function interpolated_point(p1: Point, p2: Point, f: number): Point; declare function centreXY_3pt(p1: Point, p2: Point, p3: Point): Point; declare function distance(p1: Point, p2: Point): number; declare function angleXY_between_3_points(start: Point, mid: Point, end: Point): number; declare function path_length(points: Point[]): number; declare function move(geometry: Point | any[], vector: Vector, copy?: boolean, copy_quantity?: number): Point | any[]; declare function move_geometry(geometry: Point | any[], vector: Vector): Point | any[]; declare function copy_geometry(geometry: Point | any[], vector: Vector, quantity: number): any[]; declare function move_polar(geometry: Point | any[], centre: Point, radius: number, angle: number, copy?: boolean, copy_quantity?: number): Point | any[]; declare function move_geometry_polar(geometry: Point | any[], centre: Point, radius: number, angle: number): Point | any[]; declare function copy_geometry_polar(geometry: Point | any[], centre: Point, radius: number, angle: number, quantity: number): any[]; declare function reflectXY_mc(p: Point, m_reflect: number, c_reflect: number): Point; declare function reflectXY(p: Point, p1: Point, p2: Point): Point; declare function reflectXYpolar(p: Point, preflect: Point, angle_reflect: number): Point; declare function segmented_line(p1: Point, p2: Point, segments: number): Point[]; declare function segmented_path(points: Point[], segments: number): Point[]; declare function arcXY(centre: Point, radius: number, start_angle: number, arc_angle: number, segments?: number): Point[]; declare function variable_arcXY(centre: Point, start_radius: number, start_angle: number, arc_angle: number, segments?: number, radius_change?: number, z_change?: number): Point[]; declare function elliptical_arcXY(centre: Point, a: number, b: number, start_angle: number, arc_angle: number, segments?: number): Point[]; declare function arcXY_3pt(p1: Point, p2: Point, p3: Point, segments?: number): Point[]; declare function ramp_xyz(list: Point[], x_change?: number, y_change?: number, z_change?: number): Point[]; declare function ramp_polar(list: Point[], centre: Point, radius_change?: number, angle_change?: number): Point[]; declare function rectangleXY(start: Point, x_size: number, y_size: number, cw?: boolean): Point[]; declare function circleXY(centre: Point, radius: number, start_angle: number, segments?: number, cw?: boolean): Point[]; declare function circleXY_3pt(p1: Point, p2: Point, p3: Point, start_angle?: number, start_at_first_point?: boolean, segments?: number, cw?: boolean): Point[]; declare function ellipseXY(centre: Point, a: number, b: number, start_angle: number, segments?: number, cw?: boolean): Point[]; declare function polygonXY(centre: Point, enclosing_radius: number, start_angle: number, sides: number, cw?: boolean): Point[]; declare function spiralXY(centre: Point, start_radius: number, end_radius: number, start_angle: number, n_turns: number, segments: number, cw?: boolean): Point[]; declare function helixZ(centre: Point, start_radius: number, end_radius: number, start_angle: number, n_turns: number, pitch_z: number, segments: number, cw?: boolean): Point[]; declare function squarewaveXYpolar(start: Point, direction_polar: number, amplitude: number, line_spacing: number, periods: number, extra_half_period?: boolean, extra_end_line?: boolean): Point[]; declare function squarewaveXY(start: Point, direction_vector: Vector, amplitude: number, line_spacing: number, periods: number, extra_half_period?: boolean, extra_end_line?: boolean): Point[]; declare function trianglewaveXYpolar(start: Point, direction_polar: number, amplitude: number, tip_separation: number, periods: number, extra_half_period?: boolean): Point[]; declare function sinewaveXYpolar(start: Point, direction_polar: number, amplitude: number, period_length: number, periods: number, segments_per_period?: number, extra_half_period?: boolean, phase_shift?: number): Point[]; declare function travel_to(geometry: Point | any[]): any[]; declare function flatten<T>(steps: (T | T[])[]): T[]; declare function linspace(start: number, end: number, number_of_points: number): number[]; declare function points_only(steps: any[], track_xyz?: boolean): Point[]; declare function relative_point(reference: Point | any[], x_offset: number, y_offset: number, z_offset: number): Point; declare function first_point(steps: any[], fully_defined?: boolean): Point; declare function last_point(steps: any[], fully_defined?: boolean): Point; declare function export_design(steps: any[], filename?: string): string; declare function import_design(registry: Record<string, any>, jsonOrFilename: string): any[]; declare function build_default_registry(): Record<string, any>; declare function check(steps: any[]): void; declare function fix(steps: any[], result_type: 'gcode' | 'plot', controls: any): any[]; declare function check_points(geometry: Point | any[], checkType: string): void; interface StepContext { prevPoint?: Point; lastGcodeLine?: string; state: State; } type Step = any; declare class State { steps: Step[]; gcodeLines: string[]; points: Point[]; extruders: Extruder[]; printer?: Printer; annotations: any[]; point: Point; extruder: Extruder; extrusion_geometry: ExtrusionGeometry; constructor(steps?: Step[], options?: { initialization_data?: any; printer_name?: string; }); addPoint(p: Point): void; addGcode(line: string): void; register(step: Step): void; } declare function generate_gcode(state: State, controls?: Partial<GcodeControls>): string; interface PlotDataPoint { x?: number; y?: number; z?: number; color?: string; } interface PlotData { points: PlotDataPoint[]; annotations: any[]; } declare function build_plot_data(state: State): PlotData; interface TransformResult { gcode: string; plot: ReturnType<typeof build_plot_data>; state: State; } declare function transform(steps: any[], result_type?: 'gcode' | 'plot', controls?: Partial<GcodeControls>): TransformResult; interface ImportPrinterResult { starting_procedure_steps: any[]; ending_procedure_steps: any[]; [k: string]: any; } declare function import_printer(printer_name: string, user_overrides: Record<string, any>): ImportPrinterResult; export { Buildplate, Extruder, ExtrusionGeometry, Fan, GcodeComment, GcodeControls, type GcodeStateLike, Hotend, ManualGcode, PlotAnnotation, PlotControls, type PlotData, type PlotDataPoint, Point, type PolarPoint, Printer, PrinterCommand, Retraction, State, StationaryExtrusion, type Step, type StepContext, type TransformResult, Unretraction, Vector, angleXY_between_3_points, arcXY, arcXY_3pt, build_default_registry, build_plot_data, centreXY_3pt, check, check_points, circleXY, circleXY_3pt, copy_geometry, copy_geometry_polar, distance, ellipseXY, elliptical_arcXY, export_design, first_point, fix, flatten, generate_gcode, helixZ, import_design, import_printer, interpolated_point, last_point, linspace, midpoint, move, move_geometry, move_geometry_polar, move_polar, path_length, point_to_polar, points_only, polar_to_point, polar_to_vector, polygonXY, ramp_polar, ramp_xyz, rectangleXY, reflectXY, reflectXY_mc, reflectXYpolar, relative_point, segmented_line, segmented_path, sinewaveXYpolar, spiralXY, squarewaveXY, squarewaveXYpolar, transform, travel_to, trianglewaveXYpolar, variable_arcXY };