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("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:.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: