TAM‑CNC Bolt Hole G-Code Generator

Bolt Hole on PCD G-code Generator

Bolt Holes

This program will create G-code for peck drilling a series of bolt holes based on the parameters you input. Please follow the prompts to input the necessary parameters.

import js from pyscript import display def generate_bolt_hole_gcode(event): try: tool_no = js.document.getElementById("bh-tool-no").value wrk_ofset = js.document.getElementById("bh-work-offset").value spdle_rpm = js.document.getElementById("bh-spindle-rpm").value x_pos = float(js.document.getElementById("bh-x-position").value) y_pos = float(js.document.getElementById("bh-y-position").value) z_rapid = float(js.document.getElementById("bh-z-rapid").value) peck = float(js.document.getElementById("bh-peck-size").value) z_depth = float(js.document.getElementById("bh-z-depth").value) pcd = float(js.document.getElementById("bh-pcd").value) noholes = int(js.document.getElementById("bh-no-holes").value) feedrate = float(js.document.getElementById("bh-feed-rate").value) gcode_lines = [] gcode_lines.append("%") # Start of program 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:.2f} Y{y_pos:.2f}") gcode_lines.append(f"G{wrk_ofset} G00 Z{z_rapid} G43 H{tool_no} M08") # G83 Z-depth R-rapid Q-peck F-feedrate L0 (L0 means it will repeat based on G70) gcode_lines.append(f"G83 Z-{z_depth:.2f} R{z_rapid:.2f} Q{peck:.2f} F{feedrate:.2f} L0") # G70 I-radius J0 L-number_of_holes gcode_lines.append(f"G70 I{pcd/2:.2f} J0 L{noholes}") gcode_lines.append("G80") # Cancel canned cycle gcode_lines.append(f"G00 Z{z_rapid} M09") # Retract to rapid position and turn off coolant gcode_lines.append("M05") # Spindle stop gcode_lines.append("M97 P8000") # Call subprogram for program stop/reset gcode_lines.append("M30") # Program end and reset gcode_lines.append("\nN8000") # Subprogram for program stop/reset gcode_lines.append("G00 G90 M09") gcode_lines.append("G53 G00 G40 Z0") # Move Z to machine zero gcode_lines.append("G53 G00 G40 X0 Y0") # Move X/Y to machine zero gcode_lines.append("M01") # Optional program stop gcode_lines.append("M99") # End of subprogram gcode_lines.append("%") # End of program output_element = js.document.querySelector("#bh-gcode-output pre code") output_element.innerText = "\n".join(gcode_lines) except Exception as e: output_element = js.document.querySelector("#bh-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:

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.