TAM‑CNC Rectangle Generator
Rectangle G-code Generator
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("M05") gcode_lines.append(f"T{tool_no} M06") gcode_lines.append(f"M03 P{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)}"
Tool Number:
Tool Diameter:
Work Offset:
Spindle RPM:
X Center:
Y Center:
Z Rapid:
Z Start:
Z Cut Increment:
Number of Steps:
X Distance:
Y Distance:
Corner Radius:
Lead In Radius:
Feed Rate:
Generate Rectangle G-code
Generated G-code:
Back