CoolFace
Apppublic

fredlef/cnc-depthmap

sourceHugging Facemitupdated 11mo agoView on Hugging Face
0likes
gcode_writer.py26 linesDownload Raw Back to root
1def write_gcode(stl_path, x_mm, y_mm, z_mm, tool_d=6.0, step_over=0.5, feed=1200, plunge=300, safe_z=5):
2    import trimesh
3    mesh = trimesh.load(stl_path)
4    z_min, z_max = mesh.bounds[0][2], mesh.bounds[1][2]
5    z_range = z_max - z_min
6    num_passes = int(np.ceil(z_range / (tool_d * step_over)))
7    g = ["G90", "G21", f"G0 Z{safe_z}", f"G0 X0 Y0"]
8    for p in range(num_passes):
9        z_cut = z_max - (p+1)*(tool_d*step_over)
10        if z_cut < z_min:
11            z_cut = z_min
12        g.append(f"( pass {p+1} Z={z_cut:.2f} )")
13        # simple raster along X
14        y_steps = int(np.ceil(y_mm / (tool_d * step_over)))
15        for yi in range(y_steps+1):
16            y = yi * tool_d * step_over
17            if yi % 2 == 0:
18                g.append(f"G0 X0 Y{y:.3f}")
19                g.append(f"G1 Z{z_cut:.3f} F{plunge}")
20                g.append(f"G1 X{x_mm:.3f} F{feed}")
21            else:
22                g.append(f"G0 X{x_mm:.3f} Y{y:.3f}")
23                g.append(f"G1 X0 F{feed}")
24        g.append(f"G0 Z{safe_z}")
25    g.append("M30")
26    return "\n".join(g)