TAM‑CNC Rectagular Pocket G-Code Generator

Rectangle Pocket G-code Creator

Rectangular Pocket Diagram

This program will create G-code for a simple rectangular pocket based on the parameters you input.

import js from pyscript import display def generate_rect_pocket_gcode(event): try: tool_no = js.document.getElementById("rp-tool-no").value tool_dia = float(js.document.getElementById("rp-tool-dia").value) tool_rad = tool_dia / 2.0 wrk_ofset = js.document.getElementById("rp-work-offset").value spdle_rpm = js.document.getElementById("rp-spindle-rpm").value x_pos = float(js.document.getElementById("rp-x-position").value) y_pos = float(js.document.getElementById("rp-y-position").value) z_rapid = float(js.document.getElementById("rp-z-rapid").value) z_start = float(js.document.getElementById("rp-z-start").value) tz_cut = float(js.document.getElementById("rp-tz-cut").value) z_depth = float(js.document.getElementById("rp-z-depth").value) nosteps = int(z_depth / tz_cut) z_cut = z_depth / nosteps if nosteps > 0 else z_depth x_dist = float(js.document.getElementById("rp-x-distance").value) y_dist = float(js.document.getElementById("rp-y-distance").value) step_over_percent = float(js.document.getElementById("rp-step-over").value) step_over = (step_over_percent / 100) * tool_dia feedrate = float(js.document.getElementById("rp-feed-rate").value) x_cut_inner = (x_dist / 2.0) - tool_rad y_cut_inner = (y_dist / 2.0) - tool_rad if x_cut_inner > y_cut_inner: side_steps = x_cut_inner / step_over else: side_steps = y_cut_inner / step_over side_steps = max(1, int(side_steps)) gcode_lines = [] gcode_lines.append("%") gcode_lines.append("M97 P8000") gcode_lines.append("M05") gcode_lines.append(f"T{tool_no} M06") gcode_lines.append(f"M03 S{spdle_rpm}") gcode_lines.append(f"G{wrk_ofset}") gcode_lines.append("G40") gcode_lines.append("G98 G17") gcode_lines.append(f"G00 X{x_pos + step_over:.2f} Y{y_pos:.2f}") gcode_lines.append(f"G{wrk_ofset} G00 Z{z_rapid:.2f} G43 H{tool_no} M08") gcode_lines.append(f"G01 Z{z_start:.2f} F{feedrate / 2:.2f}") gcode_lines.append(f"G91 G02 I-{step_over:.2f} Z-{z_cut / 2.0:.2f} L{2 * nosteps} F{feedrate / 2.0:.2f}") gcode_lines.append(f"G02 I-{step_over:.2f}") gcode_lines.append(f"G90 G01 X{x_pos:.2f} F{feedrate:.2f}") gcode_lines.append(f"G01 Z{z_start:.2f} F{feedrate:.2f}") gcode_lines.append(f"M97 P701 L{nosteps}") gcode_lines.append(f"G00 Z{z_rapid:.2f} M09") gcode_lines.append("M05") gcode_lines.append("M97 P8000") gcode_lines.append("M30") gcode_lines.append("\nN701") gcode_lines.append(f"G91 G01 Z-{z_cut:.2f} F{feedrate / 2.0:.2f}") gcode_lines.append("F" + str(feedrate)) gcode_lines.append("G90") for i in range(1, side_steps + 1): current_x_offset = x_cut_inner * (i / side_steps) current_y_offset = y_cut_inner * (i / side_steps) gcode_lines.append(f"G01 X{x_pos + current_x_offset:.2f}") gcode_lines.append(f"G01 Y{y_pos + current_y_offset:.2f}") gcode_lines.append(f"G01 X{x_pos - current_x_offset:.2f}") gcode_lines.append(f"G01 Y{y_pos - current_y_offset:.2f}") gcode_lines.append(f"G01 X{x_pos + current_x_offset:.2f}") gcode_lines.append(f"G01 Y{y_pos:.2f}") gcode_lines.append(f"G01 X{x_pos:.2f} Y{y_pos:.2f}") gcode_lines.append("M99") gcode_lines.append("\nN8000") gcode_lines.append("G00 G90 M09") gcode_lines.append("G53 G00 G40 Z0") gcode_lines.append("G53 G00 G40 X0 Y0") gcode_lines.append("M01") gcode_lines.append("M99") gcode_lines.append("%") output_element = js.document.querySelector("#rp-gcode-output pre code") output_element.innerText = "\n".join(gcode_lines) except Exception as e: output_element = js.document.querySelector("#rp-gcode-output pre code") output_element.innerText = f"Error generating G-code: {str(e)}\nPlease check your input values." pass














Generated G-code:

Disclaimer: All CNC toolpaths and G‑code generated or displayed by this tool must be reviewed and verified by the machine operator before use. TAM‑CNC and its developers accept no liability for machine damage, material loss, or personal injury resulting from improper use.