Initial wasm simulator checkpoint

This commit is contained in:
CNC Local
2026-05-22 04:43:21 +08:00
commit 55d9fff9f0
54 changed files with 5523 additions and 0 deletions

62
web/src/index.ts Normal file
View File

@@ -0,0 +1,62 @@
export type CncDialect = "linuxcnc" | "fanuc" | "siemens";
export type CncPose = {
x: number;
y: number;
z: number;
a: number;
b: number;
c: number;
u: number;
v: number;
w: number;
};
export type CncEventType =
| "error"
| "comment"
| "set-units"
| "set-plane"
| "set-feed"
| "set-spindle"
| "tool-change"
| "dwell"
| "rapid"
| "linear-feed"
| "arc-feed"
| "probe"
| "program-end"
| "rtcp-pivot"
| "kinematics-switch"
| "rtcp-state"
| "set-g5x-offset"
| "set-g92-offset"
| "set-xy-rotation";
export type CncEvent = {
type: CncEventType;
line: number;
plane: number;
tool: number;
feed: number;
spindle: number;
dwellSeconds: number;
start: CncPose;
end: CncPose;
center: CncPose;
arcTurns: number;
reserved: number;
};
export type SimulatorCore = {
parse(
program: string,
dialect: CncDialect,
options?: { backend?: string; rtcp?: { enabled: boolean; toolLength: number } },
): Promise<CncEvent[]>;
};
export async function createSimulatorCore(): Promise<SimulatorCore> {
const { createWasmSimulator } = await import("./wasm-core.js");
return createWasmSimulator();
}