# gcode_analyzer_ui.py import gradio as gr from python_gcode_checker import run_checks from settings_report_details import generate_detailed_report def analyze_gcode(gcode, depth_max=0.1): errors, warnings = run_checks(gcode, depth_max) error_count = len(errors) warning_count = len(warnings) config_report = generate_detailed_report(gcode) return f"Errors: {error_count}\n\n{format_issues(errors)}", f"Warnings: {warning_count}\n\n{format_issues(warnings)}", config_report def format_issues(issues): formatted = [] for line_num, message in issues: if line_num > 0: formatted.append(f"Line {line_num}: {message}") else: formatted.append(message) return "\n".join(formatted) with gr.Blocks() as app: gr.Markdown(""" ### G-code Programming Assistant (v0.1) Welcome to the G-code Assistant! This tool is solely for educational purposes, helping you verify and analyze your G-code for potential errors and warnings before actually running it on your machine. **Note:** This tool is limited to simple carving operations on a CNC milling machine. This is a beta version, and you're free to use it for checking your G-codes. If you encounter any issues or unexpected behavior, please contact the developer at **nico.aspra@bicol-u.edu.ph**. """) depth_input = gr.Number(value=0.1, label="Maximum Depth of Cut", precision=1) gcode_input = gr.Textbox(lines=20, label="Input G-code", placeholder="Enter G-code here...") analyze_button = gr.Button("Analyze G-code") with gr.Row(): output_errors = gr.Textbox(label="Errors", interactive=False) output_warnings = gr.Textbox(label="Warnings", interactive=False) output_config = gr.Textbox(label="Configuration Settings", interactive=False) analyze_button.click( fn=analyze_gcode, inputs=[gcode_input, depth_input], outputs=[output_errors, output_warnings, output_config] ) gr.Markdown("---") gr.Markdown("Developed by **Aspra, N.**") app.launch()