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