TAM‑CNC Hexagonal G-Code Generator

Hexagon G-code Generator

Hexagon Diagram

Enter your parameters below to generate G-code for milling a hexagonal profile.

import js from pyscript import display def generate_hexagon_gcode(event): try: # Get values from HTML input elements tool_no = js.document.getElementById("hex-tool-no").value tool_dia = float(js.document.getElementById("hex-tool-dia").value) tool_rad = tool_dia / 2 wrk_ofset = js.document.getElementById("hex-work-offset").value spdle_rpm = js.document.getElementById("hex-spindle-rpm").value x_pos = float(js.document.getElementById("hex-x-position").value) y_pos = float(js.document.getElementById("hex-y-position").value) z_rapid = float(js.document.getElementById("hex-z-rapid").value) z_start = float(js.document.getElementById("hex-z-start").value) z_cut = float(js.document.getElementById("hex-z-cut").value) nosteps = int(js.document.getElementById("hex-nosteps").value) diam = float(js.document.getElementById("hex-diameter").value) rad = diam / 2 diam_t = diam + tool_dia rad_t = diam_t / 2 point_dt = diam_t / 0.86602540378 point_dth = point_dt / 2 point_dtq = point_dt / 4 lead_in = float(js.document.getElementById("hex-lead-in").value) feedrate = float(js.document.getElementById("hex-feed-rate").value) # Pre-calculated positions for G-code generation pxdthr = float(f"{x_pos + point_dth:.2f}") nxdthr = float(f"{x_pos - point_dth:.2f}") pxdtqr = float(f"{x_pos + point_dtq:.2f}") nxdtqr = float(f"{x_pos - point_dtq:.2f}") pyrtr = float(f"{y_pos + rad_t:.2f}") nyrtr = float(f"{y_pos - rad_t:.2f}") # --- G-code generation logic based on provided Python script --- gcode_lines = [] gcode_lines.append("Welcome to Tonys Basic external Hexagonal Milling G-Code Creator") gcode_lines.append("Generating G-code...") gcode_lines.append("%") # Start of program 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{point_dth + lead_in:.2f} Y{y_pos + 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 P501 L{nosteps}") gcode_lines.append(f"G00 Z{z_rapid + 20} M09") gcode_lines.append("M05") gcode_lines.append("M97 P8000") gcode_lines.append("M30") gcode_lines.append("\nN501") gcode_lines.append(f"G91 G01 Z-{z_cut:.2f} F{feedrate/2:.2f}") gcode_lines.append("G90") gcode_lines.append(f"G03 X{pxdthr:.2f} Y{y_pos:.2f} J-{lead_in:.2f} F{feedrate:.2f}") gcode_lines.append(f"G01 X{pxdtqr:.2f} Y{nyrtr:.2f}") gcode_lines.append(f"G01 X{nxdtqr:.2f} Y{nyrtr:.2f}") gcode_lines.append(f"G01 X{nxdthr:.2f} Y{y_pos:.2f}") gcode_lines.append(f"G01 X{nxdtqr:.2f} Y{pyrtr:.2f}") gcode_lines.append(f"G01 X{pxdtqr:.2f} Y{pyrtr:.2f}") gcode_lines.append(f"G01 X{pxdthr:.2f} Y{y_pos:.2f}") gcode_lines.append(f"G03 X{pxdthr + lead_in:.2f} Y{y_pos - lead_in:.2f} I{lead_in:.2f}") gcode_lines.append(f"G01 X{pxdthr + lead_in:.2f} Y{y_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("%") # End of program # Display the generated G-code output_element = js.document.querySelector("#hex-gcode-output pre code") output_element.innerText = "\n".join(gcode_lines) except Exception as e: output_element = js.document.querySelector("#hex-gcode-output pre code") output_element.innerText = f"Error generating G-code: {str(e)}\nPlease check your input values." # Placeholder for the function definition itself, as py-click handles the event. pass













Generated G-code: