TAM‑CNC Rectangle Generator

Rectangle G-code Generator

Rectangle Diagram

Enter your parameters below to generate G-code for a simple rectangle.

import js from pyscript import display def generate_rectangle_gcode(event): try: tool_no = js.document.getElementById("rect-tool-no").value tool_dia = float(js.document.getElementById("rect-tool-dia").value) tool_rad = tool_dia / 2 wrk_ofset = js.document.getElementById("rect-work-offset").value spdle_rpm = js.document.getElementById("rect-spindle-rpm").value x_pos = float(js.document.getElementById("rect-x-position").value) y_pos = float(js.document.getElementById("rect-y-position").value) z_rapid = float(js.document.getElementById("rect-z-rapid").value) z_start = float(js.document.getElementById("rect-z-start").value) z_cut = float(js.document.getElementById("rect-z-cut").value) nosteps = int(js.document.getElementById("rect-nosteps").value) x_dist = float(js.document.getElementById("rect-x-distance").value) x_cut = x_dist / 2 y_dist = float(js.document.getElementById("rect-y-distance").value) y_cut = y_dist / 2 con_rad = float(js.document.getElementById("rect-corner-radius").value) lead_in = float(js.document.getElementById("rect-lead-in").value) feedrate = float(js.document.getElementById("rect-feed-rate").value) gcode_lines = [] gcode_lines.append("%") gcode_lines.append("M97 P8000") gcode_lines.append("G21 (G21 for millimeters, G20 for inches)") 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 - lead_in:.2f} Y{y_cut + tool_rad + lead_in:.2f}") gcode_lines.append(f"G{wrk_ofset} G00 Z{z_rapid} G43 H{tool_no} M08") gcode_lines.append(f"G01 Z{z_start} F{feedrate/2:.2f}") gcode_lines.append(f"M97 P301 L{nosteps}") gcode_lines.append(f"G01 Z{z_start} F{feedrate/2:.2f}") gcode_lines.append(f"G00 Z{z_rapid} M09") gcode_lines.append("M05") gcode_lines.append("M97 P8000") gcode_lines.append("M30") gcode_lines.append("\nN301") gcode_lines.append(f"G91 G01 Z-{z_cut:.2f} F{feedrate/2:.2f}") gcode_lines.append(f"G90 G03 X{x_pos:.2f} Y{y_cut + tool_rad:.2f} R{lead_in:.2f} F{feedrate:.2f}") gcode_lines.append(f"G01 X{x_cut - con_rad:.2f}") gcode_lines.append(f"G02 X{x_cut + tool_rad:.2f} Y{y_cut - con_rad:.2f} R{tool_rad + con_rad:.2f}") gcode_lines.append(f"G01 Y-{y_cut - con_rad:.2f}") gcode_lines.append(f"G02 X{x_cut - con_rad:.2f} Y-{y_cut + tool_rad:.2f} R{tool_rad + con_rad:.2f}") gcode_lines.append(f"G01 X-{x_cut - con_rad:.2f}") gcode_lines.append(f"G02 X-{x_cut + tool_rad:.2f} Y-{y_cut - con_rad:.2f} R{tool_rad + con_rad:.2f}") gcode_lines.append(f"G01 Y{y_cut - con_rad:.2f}") gcode_lines.append(f"G02 X-{x_cut - con_rad:.2f} Y{y_cut + tool_rad:.2f} R{tool_rad + con_rad:.2f}") gcode_lines.append(f"G01 X{x_pos:.2f}") gcode_lines.append(f"G03 X{x_pos + lead_in:.2f} Y{y_cut + tool_rad + lead_in:.2f} R{lead_in:.2f}") gcode_lines.append(f"G01 X{x_pos - lead_in:.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("#rect-gcode-output pre code") output_element.innerText = "\n".join(gcode_lines) except Exception as e: output_element = js.document.querySelector("#rect-gcode-output pre code") output_element.innerText = f"Error generating G-code: {str(e)}"















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.