import matplotlib.pyplot as plt import re # Nazev vaseho G-code souboru gcode_file = "kridlo_3_L.nc" # Pocatecni pozice (absolutní souradnice) current_x, current_y, current_z, current_a = 0.0, 0.0, 0.0, 0.0 # Maximalní hodnoty max_y = float('-inf') max_z = float('-inf') min_y = float('+inf') min_z = float('+inf') max_x = float('-inf') max_a = float('-inf') min_x = float('+inf') min_a = float('+inf') # Pocatecni absolutni pozice currenta_x, currenta_y, currenta_z, currenta_a = 0.0, 0.0, 0.0, 0.0 # Seznamy pro ukládani absolutnich souradnic x_coords = [] y_coords = [] z_coords = [] a_coords = [] x_prirez = [] y_prirez = [] x_prirez.append(5) y_prirez.append(0) x_prirez.append(-220) y_prirez.append(0) x_prirez.append(-220) y_prirez.append(-40) x_prirez.append(5) y_prirez.append(-40) x_prirez.append(5) y_prirez.append(0) with open(gcode_file, 'r') as file: for line in file: # Rozpoznani prikazu G1 nebo G0 (pohyby) if line.startswith(('G1', 'G0')): # Vyhledejte hodnoty X, Y, Z a A match_y = re.search(r'Y([-+]?[0-9]*\.?[0-9]+)', line) match_z = re.search(r'Z([-+]?[0-9]*\.?[0-9]+)', line) match_x = re.search(r'X([-+]?[0-9]*\.?[0-9]+)', line) match_a = re.search(r'A([-+]?[0-9]*\.?[0-9]+)', line) # Pokud existuje hodnota X přictete ji k aktualní pozici if match_a: current_a += float(match_a.group(1)) max_a = max(max_a, current_a) min_a = min(min_a, current_a) # Pokud existuje hodnota Z ... if match_z: current_z += float(match_z.group(1)) max_z = max(max_z, current_z) min_z = min(min_z, current_z) # Pokud existuje hodnota X ... if match_x: current_x += float(match_x.group(1)) max_x = max(max_x, current_x) min_x = min(min_x, current_x) # Pokud existuje hodnota Y ... if match_y: current_y += float(match_y.group(1)) max_y = max(max_y, current_y) min_y = min(min_y, current_y) # Ulozeni aktualnich hodnot x_coords.append(current_x) y_coords.append(current_y) z_coords.append(current_z) a_coords.append(current_a) #maxima print(f"X: {round(min_x,1)} {round(max_x,1)}") print(f"A: {round(min_a,1)} {round(max_a,1)}") print(f"Y: {round(min_y,1)} {round(max_y,1)}") print(f"Z: {round(min_z,1)} {round(max_z,1)}") #konce print(f"konce:") print(f"Y: {round(y_coords[-1])}") print(f"Z: {round(z_coords[-1])}") # Vykresleni drah plt.figure(figsize=(12, 3)) # Vykresleni XY a AZ trajektorie plt.subplot(1, 1, 1) plt.plot(x_prirez, y_prirez, color="red") plt.plot(x_coords, y_coords, label="Trajektorie XY", color="blue", marker="o",markersize=1, linewidth=1) plt.plot(a_coords, z_coords, label="Trajektorie AZ", color="green", marker="o", markersize=2, alpha=0.3, linewidth=4) plt.xlabel("X, A") plt.ylabel("Y, Z") plt.title("Trajektorie XY a AZ") plt.grid() plt.legend() # Zobrazeni grafu plt.tight_layout() plt.show()