From 52b4e99833bcb13f8d3e1cd7c001af13df1f71b8 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Saura Date: Sun, 28 Jul 2013 13:57:16 -0700 Subject: [PATCH] Code now supports python3 too --- Software/1_GenerateGcode.py | 5 +- Software/2_Zprobe.py | 23 +-- Software/3_Send.py | 34 ++-- Software/Compare_optimization.py | 23 +-- Software/CycloneHost/Controller.py | 72 +++---- Software/CycloneHost/GcodeParser.py | 18 +- Software/CycloneHost/GcodeViewer.py | 12 +- .../pyGerber2Gcode_CUI/gerber_merge.py | 98 ++++----- .../out/GNBoard_drill.gcode | 2 +- .../pyGerber2Gcode_CUI/out/GNBoard_edge.gcode | 2 +- .../pyGerber2Gcode_CUI/out/GNBoard_etch.gcode | 2 +- .../out/GNBoard_etch2pass.gcode | 2 +- .../out/GNBoard_etch3pass.gcode | 2 +- .../pygerber2gcode_cui_MOD.py | 186 +++++++++--------- Software/Z_probing_data.p | Bin 669 -> 415 bytes Software/configuration.py | 4 +- Software/misc.py | 4 +- 17 files changed, 244 insertions(+), 245 deletions(-) diff --git a/Software/1_GenerateGcode.py b/Software/1_GenerateGcode.py index e5aff67..f38c5e2 100644 --- a/Software/1_GenerateGcode.py +++ b/Software/1_GenerateGcode.py @@ -58,7 +58,7 @@ grid_len_X += N_copies_X*margin_copies_X grid_len_Y *= N_copies_Y grid_len_Y += N_copies_Y*margin_copies_Y -print "PANELIZING: There will be",str(N_copies_X)+"x"+str(N_copies_Y),"copies of this board" +print("PANELIZING: There will be " + str(N_copies_X)+"x"+str(N_copies_Y) + " copies of this board") Z_probing_data['grid_len'] = (grid_len_X,grid_len_Y) @@ -67,5 +67,6 @@ saveToFile(Z_probing_data,Z_PROBING_FILE) pltRefresh(gcodeviewer) # Draw the figure contents, still no window pltShow() # Open the window showing our figure -raw_input("Press enter to exit...") +print("Press enter to exit...") +val = sys.stdin.readline() diff --git a/Software/2_Zprobe.py b/Software/2_Zprobe.py index 7a23b42..ef9e85b 100644 --- a/Software/2_Zprobe.py +++ b/Software/2_Zprobe.py @@ -47,7 +47,7 @@ grid_len = Z_probing_data['grid_len'] cy.moveZrelSafe(initial_Z_lowering_distance,F_slowMove) # Move Z towards the PCB (saves some probing time for the first coord) # Do the probing itself -(x_points, y_points, probe_result, Z_offset, probe_duration) = cy.probeGrid(grid_origin, grid_len, GRID_N_POINTS, Zlift) +(x_points, y_points, probe_result, Z_offset, probe_duration) = cy.probeGrid(grid_origin, grid_len, GRID_N_POINTS, Zlift, F_fastMove, F_slowMove) #x_points = [0.0, 17.5, 35.0, 52.5, 70.0] #y_points = [0.0, 13.333333333333334, 26.666666666666668, 40.0] @@ -62,12 +62,12 @@ Z_probing_data['probe_duration'] = probe_duration saveToFile(Z_probing_data,Z_PROBING_FILE) # Show our grid -print "#-------- Probing results ---------" -print "x_points = ", x_points -print "y_points = ", y_points -print "probe_result = ", probe_result -print "probe_duration = ", probe_duration -print "#--------------------------------------" +print("#-------- Probing results ---------") +print("x_points = " + str(x_points) ) +print("y_points = " + str(y_points) ) +print("probe_result = " + str(probe_result) ) +print("probe_duration = " + str(probe_duration) ) +print("#--------------------------------------") # Display values @@ -89,10 +89,10 @@ pltShowNonBlocking() Z_workbed_surface = interpolate.RectBivariateSpline(y_points, x_points, probe_result) # Evaluate the interpolation in a 50x50 grid for display -x_points = np.linspace(min(x_points),max(x_points),50) -y_points = np.linspace(min(y_points),max(y_points),50) +x_points = np.linspace(min(x_points),max(x_points),100) +y_points = np.linspace(min(y_points),max(y_points),100) z_points = Z_workbed_surface(y_points,x_points) -#print z_points +#print( str(z_points) ) plt.figure() plt.pcolor(x_points, y_points, z_points) @@ -103,5 +103,6 @@ pltShowNonBlocking() cy.close() # Close the connection with Cyclone -raw_input("Press enter to exit...") +print("Press enter to exit...") +val = sys.stdin.readline() diff --git a/Software/3_Send.py b/Software/3_Send.py index 50d484c..e698b9c 100644 --- a/Software/3_Send.py +++ b/Software/3_Send.py @@ -74,7 +74,7 @@ gcodeviewer = pltNewFig() # Define a new figure, this doesnt open a window by it # Load the probing results (this will plot the copper level in the background too) probingResults() -#print "Must be zero, otherwise the interpolation is wrong!:",floats(getZoffset(0,0)) +#print("Must be zero, otherwise the interpolation is wrong!: " + floats(getZoffset(0,0))) # Display the Gcode that is going to be etched (etch_moves, travel_moves, gcode_minXY, gcode_maxXY) = gcv.view(filePath,fileName,0,showEtch,showEtch,showEtch2,showDrill,showEdge) @@ -86,9 +86,9 @@ probingResults() (boardSizeX,boardSizeY,gcode_minXY_global, gcode_maxXY_global) = gcv.boardSize(filePath,fileName) # Show delimiter rectangle -x_dat = [gcode_minXY_global[0],gcode_minXY_global[0],gcode_maxXY_global[0],gcode_maxXY_global[0],gcode_minXY_global[0]] -y_dat = [gcode_minXY_global[1],gcode_maxXY_global[1],gcode_maxXY_global[1],gcode_minXY_global[1],gcode_minXY_global[1]] -plt.plot(x_dat,y_dat) +#x_dat = [gcode_minXY_global[0],gcode_minXY_global[0],gcode_maxXY_global[0],gcode_maxXY_global[0],gcode_minXY_global[0]] +#y_dat = [gcode_minXY_global[1],gcode_maxXY_global[1],gcode_maxXY_global[1],gcode_minXY_global[1],gcode_minXY_global[1]] +#plt.plot(x_dat,y_dat) pltRefresh(gcodeviewer) # Draw the figure contents, still no window pltShow() # Open the window showing our figure @@ -140,7 +140,7 @@ initial_Z_lowering_distance = -10 cy.moveZrelSafe(initial_Z_lowering_distance,F_slowMove) # Move Z towards the PCB (saves some probing time for the first coord) Z_origin_offset = cy.probeZ() -print "Z offset:", Z_origin_offset +print("Z offset: " + str(Z_origin_offset) ) toolPos_X = 0 @@ -170,9 +170,9 @@ def splitLongEtchMove(distance): #distance = distance**0.5 # [mm] N_steps = int((distance/maxDistance)**0.5) # **must be** >= 1 - print "Splitting", distance**0.5, "mm segment into", N_steps, "steps" + print("Splitting " + str(distance**0.5) + "mm segment into " + str(N_steps) + " steps") -# print "Orig:", toolPos_X, toolPos_Y, toolPos_Z, "Dest:", X_dest, Y_dest, Z_dest +# print("Orig: " + (toolPos_X,toolPos_Y,toolPos_Z) + " Dest: " + (X_dest, Y_dest, Z_dest)) X_step = (X_dest-toolPos_X)/float(N_steps) Y_step = (Y_dest-toolPos_Y)/float(N_steps) @@ -189,7 +189,7 @@ def splitLongEtchMove(distance): cy.moveXYZ(X_dest_tmp, Y_dest_tmp, Z_real, F_dest_tmp) toolPos_refresh(X_dest_tmp, Y_dest_tmp, etching=1) -# print "Move:",X_dest_tmp, Y_dest_tmp, Z_dest_tmp +# print("Move: " + (X_dest_tmp, Y_dest_tmp, Z_dest_tmp) ) toolPos_X = X_dest_tmp toolPos_Y = Y_dest_tmp @@ -197,7 +197,8 @@ def splitLongEtchMove(distance): toolPos_F = F_dest_tmp -raw_input("Turn on the spindle and press enter to begin...") +print("Turn on the spindle and press enter to begin...") +val = sys.stdin.readline() def doPath(X_offset=0, Y_offset=0): global toolPos_X, toolPos_Y, toolPos_Z, toolPos_F, X_dest, Y_dest, Z_dest, F_dest @@ -208,7 +209,7 @@ def doPath(X_offset=0, Y_offset=0): X_dest = path[0][0]+X_offset Y_dest = path[0][1]+Y_offset F_dest = F_fastMove - print " Traveling to:", str([X_dest, Y_dest]), "at Z:", Z_global_offset+Zlift_milling + print(" Traveling to: " + str([X_dest, Y_dest]) + " at Z:" + str(Z_global_offset+Zlift_milling) ) cy.moveXY(X_dest, Y_dest, F_dest) toolPos_draw(X_dest, Y_dest, etching=0) Z_dest = path[0][2] @@ -217,14 +218,14 @@ def doPath(X_offset=0, Y_offset=0): else: F_dest = path[0][3] # We set the original speed if it is etching/drill cy.moveZ(Z_dest+Z_origin_offset+getZoffset(X_dest, Y_dest)+Z_global_offset,F_dest) - # print "Speed:",F_dest - print " Etching at Z:",Z_dest+Z_global_offset + # print("Speed:",F_dest) + print(" Etching at Z: " + str(Z_dest+Z_global_offset) ) toolPos_X = X_dest toolPos_Y = Y_dest toolPos_Z = Z_dest # Not sure.. toolPos_F = F_dest - # print path + # print(path) for coord in path[1:] : X_dest = coord[0]+X_offset @@ -236,11 +237,11 @@ def doPath(X_offset=0, Y_offset=0): if distance >= maxDistance : splitLongEtchMove(distance) if distance < minDistance and (Z_dest-toolPos_Z)**2 < 0.001**2 : # Make sure it is not a Z movement - print "Ignoring", distance**0.5, "mm segment!" + print("Ignoring " + str(distance**0.5) + "mm segment!") continue Z_real = Z_dest+Z_origin_offset+getZoffset(X_dest, Y_dest)+Z_global_offset cy.moveXYZ(X_dest, Y_dest, Z_real, F_dest) - # print "Coords: Speed:",F_dest + # print("Coords: Speed: " + str(F_dest)) toolPos_refresh(X_dest, Y_dest, etching=1) toolPos_X = X_dest @@ -256,5 +257,6 @@ for x_i in range(N_copies_X): cy.homeZXY() # It is important to send a blocking command in the end cy.close() # Close the connection with Cyclone -raw_input("Done. Press enter to exit...") +print("Done. Press enter to exit...") +val = sys.stdin.readline() diff --git a/Software/Compare_optimization.py b/Software/Compare_optimization.py index 2766b8c..30d10f4 100644 --- a/Software/Compare_optimization.py +++ b/Software/Compare_optimization.py @@ -58,31 +58,31 @@ plt.hold(True) plt.title("Original Gcode") plt.axis('equal') # 1:1 aspect ratio -print "\n Loading etch..." +print("\n Loading etch...") gcode_file = filePath+fileName+"_etch.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) plotPoints(etch_moves, etch_color, etch_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading etch (2nd pass)..." +print("\n Loading etch (2nd pass)...") gcode_file = filePath+fileName+"_etch2pass.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) plotPoints(etch_moves, etch2pass_color, etch2pass_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading etch (3nd pass)..." +print("\n Loading etch (3nd pass)...") gcode_file = filePath+fileName+"_etch3pass.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) plotPoints(etch_moves, etch3pass_color, etch3pass_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading drill..." +print("\n Loading drill...") gcode_file = filePath+fileName+"_drill.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) plotPoints(etch_moves, drill_color, drill_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading edge..." +print("\n Loading edge...") gcode_file = filePath+fileName+"_edge.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) plotPoints(etch_moves, edge_color, edge_diam) @@ -95,35 +95,35 @@ plt.hold(True) plt.title("Optimized (closest neighbour)") plt.axis('equal') # 1:1 aspect ratio -print "\n Loading etch..." +print("\n Loading etch...") gcode_file = filePath+fileName+"_etch.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) plotPoints(etch_moves, etch_color, etch_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading etch (2nd pass)..." +print("\n Loading etch (2nd pass)...") gcode_file = filePath+fileName+"_etch2pass.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) plotPoints(etch_moves, etch2pass_color, etch2pass_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading etch (3nd pass)..." +print("\n Loading etch (3nd pass)...") gcode_file = filePath+fileName+"_etch3pass.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) plotPoints(etch_moves, etch3pass_color, etch3pass_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading drill..." +print("\n Loading drill...") gcode_file = filePath+fileName+"_drill.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) plotPoints(etch_moves, drill_color, drill_diam) plotPoints(travel_moves, travel_color, linewidth_travel_move) -print "\n Loading edge..." +print("\n Loading edge...") gcode_file = filePath+fileName+"_edge.gcode" (etch_moves, travel_moves, gcode_originXY, grid_sizeXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) @@ -134,5 +134,6 @@ plotPoints(travel_moves, travel_color, linewidth_travel_move) plt.ion() # Enable real-time plotting to avoid blocking behaviour for pyplot plt.show() -raw_input("Press enter to exit...") +print("Press enter to exit...") +val = sys.stdin.readline() diff --git a/Software/CycloneHost/Controller.py b/Software/CycloneHost/Controller.py index 8db8b99..3c71d03 100644 --- a/Software/CycloneHost/Controller.py +++ b/Software/CycloneHost/Controller.py @@ -38,7 +38,7 @@ from datetime import datetime import random -from helper import * +from CycloneHost.helper import * # End modules # Begin configuration. It is overwritten when running setup(baudrate, device) @@ -60,39 +60,39 @@ def connect(baudrate, device, emulate = 0): global CNC_Machine, Emulate BAUDRATE = baudrate DEVICE = device - print "Connecting to Cyclone..." + print("Connecting to Cyclone...") if emulate == 0: CNC_Machine = serial.Serial(DEVICE, BAUDRATE, timeout = serial_timeout) Emulate = 0 else: Emulate = 1 - print "EMULATING MACHINE!" - print "Serial port opened, checking connection..." + print("EMULATING MACHINE!") + print("Serial port opened, checking connection...") time.sleep(2) checkConnection() - print "Connected!" + print("Connected!") def flushRecvBuffer(): # We could also use flushInput(), but showing the data that is being discarded is useful for debugging if Emulate: return while CNC_Machine.inWaiting() > 0: response = CNC_Machine.readline() -# if response != '': print "IGNO: ", response +# if response != '': print("IGNO: " + response) time.sleep(seconds_wait) # Wait some milliseconds between attempts def sendLine(line): if Emulate == 0: flushRecvBuffer() CNC_Machine.write(line) -# print "SENT: ", line +# print("SENT: " + line) def recvLine(): if Emulate: response = "ok\n" # Asume OK else: response = CNC_Machine.readline() -# if response != '': print "RECV: ", response -# else: print "RECV: Receive timed out!" +# if response != '': print("RECV: " + response) +# else: print("RECV: Receive timed out!") return response def recvOK(): @@ -102,19 +102,19 @@ def recvOK(): return 0 def waitForOK(command="",timeoutResend=30): # This is a blocking function -# print "Waiting for confirmation" +# print("Waiting for confirmation") i = 0 cmnd = command[:3].lower() timeoutResend = float(timeoutResend) #timeoutResend = 5.0 # Resend command every 5 seconds, error recovery #if cmnd == "g28": timeoutResend = 60.0 # Homing moves will take more than 5 seconds i_timeout = int(timeoutResend/float(serial_timeout+seconds_wait)) -# print "i_timeout",i_timeout +# print("i_timeout = " + str(i_timeout)) while recvOK() != 1: - print " Checking again... timeout:",i_timeout + print(" Checking again... timeout: " + str(i_timeout) ) time.sleep(seconds_wait) # Wait some milliseconds between attempts if cmnd != "g30" and i >= i_timeout: # WARNING: Commands that take >5s may have problems here! - print " WATCHOUT! RESENDING:",command + print(" WATCHOUT! RESENDING: " + str(command) ) sendLine(command) i = 0 else: @@ -125,7 +125,7 @@ def sendCommand(command,timeoutResend=15): # Send command and wait for OK waitForOK(command,timeoutResend) def checkConnection(): -# print "Checking the connection..." +# print("Checking the connection...") sendLine("G21\n") # We check the connection setting millimiters as the unit and waiting for the OK response time.sleep(0.5) while recvOK() != 1: @@ -134,7 +134,7 @@ def checkConnection(): def homeZXY(): global lastDrillPos - print "Homing all axis..." + print("Homing all axis...") timeoutResend=30 sendCommand("G28 Z0\n",timeoutResend) # move Z to min endstop sendCommand("G28 X0\n",timeoutResend) # move X to min endstop @@ -142,13 +142,13 @@ def homeZXY(): if Emulate: time.sleep(2) lastDrillPos = [0,0,0] - print "Done homing" + print("Done homing") def moveXYZ(X, Y, Z, F): global lastDrillPos -# print "Moving to:" +# print("Moving to:") if F <= 0: - print "ERROR: F <= 0" + print("ERROR: F <= 0") sendCommand("G1 X"+floats(X)+" Y"+floats(Y)+" Z"+floats(Z)+" F"+floats(F)+"\n") if Emulate: dist = ((X-lastDrillPos[0])**2+(Y-lastDrillPos[1])**2+(Z-lastDrillPos[2])**2)**0.5 # [mm] @@ -158,9 +158,9 @@ def moveXYZ(X, Y, Z, F): def moveXY(X, Y, F): global lastDrillPos -# print "Moving to:" +# print("Moving to:") if F <= 0: - print "ERROR: F <= 0" + print("ERROR: F <= 0") sendCommand("G1 X"+floats(X)+" Y"+floats(Y)+" F"+floats(F)+"\n") if Emulate: dist = ((X-lastDrillPos[0])**2+(Y-lastDrillPos[1])**2)**0.5 # [mm] @@ -170,9 +170,9 @@ def moveXY(X, Y, F): def moveZ(Z, F): global lastDrillPos -# print "Moving Z absolute:" +# print("Moving Z absolute:") if F <= 0: - print "ERROR: F <= 0" + print("ERROR: F <= 0") sendCommand("G1 Z"+floats(Z)+" F"+floats(F)+"\n") if Emulate: dist = abs(Z-lastDrillPos[2]) # [mm] @@ -182,9 +182,9 @@ def moveZ(Z, F): def moveZrel(Z, F): global lastDrillPos -# print "Moving Z relative:" +# print("Moving Z relative:") if F <= 0: - print "ERROR: F <= 0" + print("ERROR: F <= 0") sendCommand("G91\n") # Set relative positioning sendCommand("G1 Z"+floats(Z)+" F"+floats(F)+"\n") if Emulate: @@ -196,23 +196,23 @@ def moveZrel(Z, F): def moveZrelSafe(Z, F): if F <= 0: - print "ERROR: F <= 0" - print "Moving Z", Z, "mm safely..." + print("ERROR: F <= 0") + print("Moving Z " + str(Z) + "mm safely...") sendCommand("M121\n") # Enable endstops (for protection! usually it should **NOT** hit neither the endstop nor the PCB) moveZrel(Z, F) dist = abs(Z) # [mm] speed = float(F)/60.0 # [mm/s] wait = float(dist)/speed # [s] time.sleep(wait) # Wait for the movement to finish, this way the M121 command is effective - print " Done moving Z!" + print(" Done moving Z!") sendCommand("M120\n") # Disable endstops (we only use them for homing) def probeZ(): - print "Probing Z" + print("Probing Z") sendLine("G30\n") # Launch probe command response = recvLine() # Read the response, it is a variable run time so we may need to make multiple attempts while response == '': - #print "." + #print(".") time.sleep(seconds_wait) # Wait some milliseconds between attempts response = recvLine() if Emulate: @@ -220,7 +220,7 @@ def probeZ(): response_vals = response.split() # Split the response (i.e. "ok Z1.23") if response_vals[0][:2].lower() == OK_response.lower(): Zres = response_vals[1][2:] # Ignore the "Z:" and read the coordinate value - print "Result is Z=",Zres + print("Result is Z = " + str(Zres)) return float(Zres) return 400 # Error case, don't worry: it has never happened :) @@ -230,7 +230,7 @@ def close(): if Emulate == 0: CNC_Machine.close() # Close the serial port connection -def probeGrid(grid_origin, grid_len, grid_N, Zlift, F_fastMove = 400, F_slowMove = 100): +def probeGrid(grid_origin, grid_len, grid_N, Zlift, F_fastMove, F_slowMove): grid_origin_X = float(grid_origin[0]) # Initial point of the grid [mm] grid_origin_Y = float(grid_origin[1]) @@ -252,10 +252,10 @@ def probeGrid(grid_origin, grid_len, grid_N, Zlift, F_fastMove = 400, F_slowMove # Show our grid (initialised as zeros) for row in probe_result: - print row + print(str(row)) - print "Probing begins!" - print "WARNING: Keep an eye on the machine, unplug if something goes wrong!" + print("Probing begins!") + print("WARNING: Keep an eye on the machine, unplug if something goes wrong!") beginTime = datetime.now() # Store current time in a variable, will be used to measure duration of the probing # Move to grid's origin @@ -274,7 +274,7 @@ def probeGrid(grid_origin, grid_len, grid_N, Zlift, F_fastMove = 400, F_slowMove # Once we have all the points, we set the origin as (0,0) and offset the rest of values Z_offset = probe_result[0][0] - print "The origin Z height is", Z_offset + print("The origin Z height is " + str(Z_offset)) probe_result = [[elem - Z_offset for elem in row] for row in probe_result] # Return to the grid's origin @@ -282,7 +282,7 @@ def probeGrid(grid_origin, grid_len, grid_N, Zlift, F_fastMove = 400, F_slowMove moveXY(grid_origin_X, grid_origin_Y, F_fastMove) # Move to grid's origin duration = datetime.now() - beginTime - print "Probing duration:", str(duration) + print("Probing duration:" + str(duration)) duration_s = duration.total_seconds() return (x_points, y_points, probe_result, Z_offset, duration_s) diff --git a/Software/CycloneHost/GcodeParser.py b/Software/CycloneHost/GcodeParser.py index f97a06a..da4632a 100644 --- a/Software/CycloneHost/GcodeParser.py +++ b/Software/CycloneHost/GcodeParser.py @@ -84,7 +84,7 @@ def parseGcodeRaw(filePath, etch_definition = 0, close_shapes = 0): # Gcode pars totalLines = len(lines) for line in lines:# check each line currentLine = currentLine + 1 - #print "({0:.1f}%)".format((currentLine / totalLines)*100), "Reading:", line[:-1] + #print("({0:.1f}%)".format((currentLine / totalLines)*100), "Reading:", line[:-1]) X_start = X_dest Y_start = Y_dest @@ -155,11 +155,11 @@ def parseGcodeRaw(filePath, etch_definition = 0, close_shapes = 0): # Gcode pars gcode_maxXY = [X_max, Y_max] gcode_minXY = [X_min, Y_min] - print "Gcode XY min:",str(gcode_minXY) - print "Gcode XY max:",str(gcode_maxXY) + print("Gcode XY min: " + str(gcode_minXY)) + print("Gcode XY max: " + str(gcode_maxXY)) else : - print "No etch moves found!" + print("No etch moves found!") return etch_moves, travel_moves, [0,0], [0,0] gcode.close() return etch_moves, travel_moves, gcode_minXY, gcode_maxXY @@ -179,7 +179,7 @@ def optimize(etch_moves_in, origin=[0,0], travel_height = 5): # Optimizes the to minDistance = 1e9 while len(etch_moves_in) > 0 : # While there are remaining moves - closest = [1e9,1e9] + closest = 1e9 distance = 1e9 closestMove_i = 0 i = 0 @@ -197,13 +197,13 @@ def optimize(etch_moves_in, origin=[0,0], travel_height = 5): # Optimizes the to closest = distance closestMove_i = i reverse = 1 # Flag set to reverse the path - #print "Using a reverse path did optimize!" + #print("Using a reverse path did optimize!") i = i + 1 path = etch_moves_in[closestMove_i] # Select the closest that has been found if reverse : path = path[::-1] # If the closest one was from the end, we reverse the path - #print "Reverse!" + #print("Reverse!") firstPoint = path[0] @@ -211,7 +211,7 @@ def optimize(etch_moves_in, origin=[0,0], travel_height = 5): # Optimizes the to travel_moves.append([toolPosition, [firstPoint[0], firstPoint[1], travel_height, firstPoint[3]] ]) # Travel to the initial point of the etching else : travel_moves.append([toolPosition, firstPoint]) # Travel to the initial point of the etching (without lifting) - print "Joining etching paths!" # TODO: This needs to join also the paths in etch_moves! otherwise it makes no difference! + print("Joining etching paths!") # TODO: This needs to join also the paths in etch_moves! otherwise it makes no difference! if distance < minDistance : minDistance = distance @@ -221,7 +221,7 @@ def optimize(etch_moves_in, origin=[0,0], travel_height = 5): # Optimizes the to toolPosition = path[-1] # Set our endpoint as the initial one for the next move - print "Minimum XY travel distance:", minDistance**0.5 + print("Minimum XY travel distance: " + str(minDistance**0.5) ) travel_moves.append([toolPosition, [origin[0], origin[1], travel_height, 10]]) # Return to the origin return etch_moves, travel_moves diff --git a/Software/CycloneHost/GcodeViewer.py b/Software/CycloneHost/GcodeViewer.py index 8f9f78b..4a71716 100644 --- a/Software/CycloneHost/GcodeViewer.py +++ b/Software/CycloneHost/GcodeViewer.py @@ -18,7 +18,7 @@ import numpy as np from scipy import interpolate import matplotlib.pyplot as plt -import GcodeParser as gcp +import CycloneHost.GcodeParser as gcp # End modules def plotPoints(path_list, color, linewidth): # Thanks to pprzemek (http://stackoverflow.com/questions/2282727/draw-points-using-matplotlib-pyplot-x1-y1-x2-y2) @@ -85,7 +85,7 @@ def view(filePath,fileName,showAll=0,showEtch=0,showEtch2=0,showEtch3=0,showDril plt.hold(True) if showAll or showEtch: - print "\n Loading etch..." + print("\n Loading etch...") gcode_file = filePath+fileName+"_etch.gcode" (etch_moves, travel_moves, gcode_minXY, gcode_maxXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) @@ -93,7 +93,7 @@ def view(filePath,fileName,showAll=0,showEtch=0,showEtch2=0,showEtch3=0,showDril checkMinMax(gcode_minXY,gcode_maxXY) if showAll or showEtch2: - print "\n Loading etch (2nd pass)..." + print("\n Loading etch (2nd pass)...") gcode_file = filePath+fileName+"_etch2pass.gcode" (etch_moves, travel_moves, gcode_minXY, gcode_maxXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) @@ -101,7 +101,7 @@ def view(filePath,fileName,showAll=0,showEtch=0,showEtch2=0,showEtch3=0,showDril checkMinMax(gcode_minXY,gcode_maxXY) if showAll or showEtch3: - print "\n Loading etch (3rd pass)..." + print("\n Loading etch (3rd pass)...") gcode_file = filePath+fileName+"_etch3pass.gcode" (etch_moves, travel_moves, gcode_minXY, gcode_maxXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) @@ -109,7 +109,7 @@ def view(filePath,fileName,showAll=0,showEtch=0,showEtch2=0,showEtch3=0,showDril checkMinMax(gcode_minXY,gcode_maxXY) if showAll or showDrill: - print "\n Loading drill..." + print("\n Loading drill...") gcode_file = filePath+fileName+"_drill.gcode" (etch_moves, travel_moves, gcode_minXY, gcode_maxXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) @@ -117,7 +117,7 @@ def view(filePath,fileName,showAll=0,showEtch=0,showEtch2=0,showEtch3=0,showDril checkMinMax(gcode_minXY,gcode_maxXY) if showAll or showEdge: - print "\n Loading edge..." + print("\n Loading edge...") gcode_file = filePath+fileName+"_edge.gcode" (etch_moves, travel_moves, gcode_minXY, gcode_maxXY) = gcp.parseGcodeRaw(gcode_file) (etch_moves, travel_moves) = gcp.optimize(etch_moves) diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/gerber_merge.py b/Software/GcodeGenerators/pyGerber2Gcode_CUI/gerber_merge.py index bfe478f..b609f22 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/gerber_merge.py +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/gerber_merge.py @@ -35,7 +35,7 @@ class LINE: self.inside = inside self.delete = delete def merge_lines(gGCODES): - print "merge lines ..." + print("merge lines ...") i = 0 while i< len(gGCODES)-1: if(gGCODES[i].gtype <= 2): @@ -62,7 +62,7 @@ def merge_lines(gGCODES): a1 = (dy1)/(dx1) b1 = gGCODES[i].y1 - a1 * gGCODES[i].x1 j = i + 1 - #print "i =",i,", j =",j + #print("i =",i,", j =",j while j< len(gGCODES): if(gGCODES[j].gtype <= 2): j += 1 @@ -150,19 +150,19 @@ def merge_lines(gGCODES): gGCODES[i].gtype = 0 break elif abs(gGCODES[i].y1 - gGCODES[j].y1) <= (w2/2 + w1/2): - #print w2/2 + w1/2, gGCODES[i].y1 - gGCODES[j].y1 + #print(w2/2 + w1/2, gGCODES[i].y1 - gGCODES[j].y1 # x2min = gGCODES[j].x1 x2max = gGCODES[j].x2 if(gGCODES[j].x2 < gGCODES[j].x1): x2min = gGCODES[j].x2 x2max = gGCODES[j].x1 - #print "near" + #print("near" #if gGCODES[i].gtype == 4 and gGCODES[j].gtype == 4: if abs((x1max-x1min) - (x2max-x2min)) < SMALL: #same length - #print "same" + #print("same" if abs((x1max+x1min)/2 - (x2max+x2min)/2) < SMALL: #same center - #print "center" + #print("center" tmp_ymin = gGCODES[i].y1 - w1/2 tmp_ymax = gGCODES[j].y1 + w2/2 if tmp_ymin > gGCODES[j].y1 - w2/2: @@ -345,7 +345,7 @@ def merge_lines(gGCODES): return gGCODES def check_duplication(gGCODES): #global gGCODES,TINY - print "Check overlapping lines ..." + print("Check overlapping lines ...") i = 0 while i< len(gGCODES)-1: @@ -413,11 +413,11 @@ def check_duplication(gGCODES): aj=dyj/dxj bj=yj1-aj*xj1 if(abs(aj-ai) < TINY and abs(bj-bi) < TINY): - #print "a=" + str(ai) + #print("a=" + str(ai) if(xj_min>=xi_min): - #print "a" + #print("a" if(xj_max<=xi_max): - #print "aa" + #print("aa" #overlap if(gGCODES[i].mod1 >= gGCODES[j].mod1): gGCODES[j].gtype=0 @@ -425,7 +425,7 @@ def check_duplication(gGCODES): continue elif(xi_max >= xj_min): # xj_max > xi_max if(gGCODES[i].mod1 == gGCODES[j].mod1): - #print "ab i=" +str(i) + ", j=" + str(j) + #print("ab i=" +str(i) + ", j=" + str(j) gGCODES[j].gtype=0 #gGCODES[i].x1 = xi_min #gGCODES[i].y1 = gGCODES[i].y1 @@ -440,18 +440,18 @@ def check_duplication(gGCODES): #j += 1 #continue elif(xj_min<=xi_min): - #print "b" + #print("b" if(xj_max>=xi_max): - #print "ba" + #print("ba" #overlap if(gGCODES[i].mod1 <= gGCODES[j].mod1): gGCODES[i].gtype=0 break elif(xj_max >= xi_min): # xj_max < xi_max if(gGCODES[i].mod1 == gGCODES[j].mod1): - #print "bb i=" +str(i) + ", j=" + str(j) + #print("bb i=" +str(i) + ", j=" + str(j) gGCODES[j].gtype=0 - #print "x1=" +str(gGCODES[i].x1) +", y1=" +str(gGCODES[i].y1) +", x2=" +str(gGCODES[i].x2) +", y2=" +str(gGCODES[i].y2) + #print("x1=" +str(gGCODES[i].x1) +", y1=" +str(gGCODES[i].y1) +", x2=" +str(gGCODES[i].x2) +", y2=" +str(gGCODES[i].y2) #gGCODES[i].x2 = xi_max #gGCODES[i].y2 = gGCODES[i].y2 #if(m_x1_flag): #if xi_max = gGCODES[i].x1 @@ -465,7 +465,7 @@ def check_duplication(gGCODES): if(xj1>xj2): #if xi_min = xj2 gGCODES[i].y1 = gGCODES[j].y2 xi_min = xj_min - #print "x1=" +str(gGCODES[i].x1) +", y1=" +str(gGCODES[i].y1) +", x2=" +str(gGCODES[i].x2) +", y2=" +str(gGCODES[i].y2) + #print("x1=" +str(gGCODES[i].x1) +", y1=" +str(gGCODES[i].y1) +", x2=" +str(gGCODES[i].x2) +", y2=" +str(gGCODES[i].y2) #j += 1 #continue else: #dxi==0 @@ -512,11 +512,11 @@ def check_duplication(gGCODES): else: #ti != tj if(ti == 2): if(tj == 3 or tj == 4): - #print "rect ti" + #print("rect ti" if(gGCODES[j].x1 == gGCODES[j].x2 and gGCODES[i].x1 == gGCODES[j].x1): #Vertical - #print "ti check x" + #print("ti check x" if(gGCODES[i].mod1 == gGCODES[j].mod1): - #print "ti check x mod1" + #print("ti check x mod1" #line = [gGCODES[i].x1,gGCODES[i].y1-gGCODES[i].mod2/2,gGCODES[i].x1,gGCODES[i].y1+gGCODES[i].mod2/2] x1=gGCODES[i].x1 y1=gGCODES[i].y1-gGCODES[i].mod2/2 @@ -532,11 +532,11 @@ def check_duplication(gGCODES): gGCODES[j].gtype=0 if(ovflag == 3): gGCODES[i].gtype=0 - print "ti overlap =" + str(ovflag) - #print line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) + print("ti overlap =" + str(ovflag)) + #print(line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) tx1,ty1,tx2,ty2=line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) if(tj == 4): #Rect - print "Rect-Rect" + print("Rect-Rect") gGCODES[j].gtype = 0 gGCODES[i].gtype = 4 gGCODES[i].x1 = tx1 @@ -544,7 +544,7 @@ def check_duplication(gGCODES): gGCODES[i].x2 = tx2 gGCODES[i].y2 = ty2 elif(tj == 3): - print "rect-cir" + print("rect-cir") gGCODES[j].gtype = 0 gGCODES[i].gtype = 5 gGCODES[i].mod1 =gGCODES[j].mod1 @@ -558,9 +558,9 @@ def check_duplication(gGCODES): gGCODES[i].x2 = tx1 gGCODES[i].y2 = ty1 if(gGCODES[j].y1 == gGCODES[j].y2 and gGCODES[i].y1 == gGCODES[j].y1): #Horizontal - #print "ti check y" + #print("ti check y" if(gGCODES[i].mod2 == gGCODES[j].mod1): - #print "ti check y mod1" + #print("ti check y mod1" #line = [gGCODES[i].x1-gGCODES[i].mod1/2,gGCODES[i].y1,gGCODES[i].x1+gGCODES[i].mod1/2,gGCODES[i].y1] x1=gGCODES[i].x1-gGCODES[i].mod1/2 y1=gGCODES[i].y1 @@ -576,11 +576,11 @@ def check_duplication(gGCODES): gGCODES[j].gtype=0 if(ovflag == 7): gGCODES[i].gtype=0 - print "ti overlap =" + str(ovflag) + print("ti overlap =" + str(ovflag)) tx1,ty1,tx2,ty2=line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) if(tj == 4): #Rect - print "Rect-Rect" + print("Rect-Rect") gGCODES[j].gtype = 0 gGCODES[i].gtype = 4 gGCODES[i].x1 = tx1 @@ -588,7 +588,7 @@ def check_duplication(gGCODES): gGCODES[i].x2 = tx2 gGCODES[i].y2 = ty2 elif(tj == 3): - print "rect-cir" + print("rect-cir") gGCODES[j].gtype = 0 gGCODES[i].gtype = 5 gGCODES[i].mod1 =gGCODES[j].mod1 @@ -603,11 +603,11 @@ def check_duplication(gGCODES): gGCODES[i].y2 = ty1 if(tj == 2): if(ti == 3 or ti == 4): - #print "rect tj" + #print("rect tj" if(gGCODES[i].x1 == gGCODES[i].x2 and gGCODES[i].x1 == gGCODES[j].x1): #Vertical - #print "ti check x" + #print("ti check x" if(gGCODES[i].mod1 == gGCODES[j].mod1): - #print "ti check x mod1" + #print("ti check x mod1" #line = [gGCODES[i].x1,gGCODES[i].y1-gGCODES[i].mod2/2,gGCODES[i].x1,gGCODES[i].y1+gGCODES[i].mod2/2] x1=gGCODES[j].x1 y1=gGCODES[j].y1-gGCODES[j].mod2/2 @@ -623,11 +623,11 @@ def check_duplication(gGCODES): gGCODES[j].gtype=0 if(ovflag == 3): gGCODES[i].gtype=0 - print "tj overlap =" + str(ovflag) - #print line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) + print("tj overlap =" + str(ovflag)) + #print(line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) tx1,ty1,tx2,ty2=line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) if(tj == 4): #Rect - print "Rect-Rect" + print("Rect-Rect") gGCODES[j].gtype = 0 gGCODES[i].gtype = 4 gGCODES[i].x1 = tx1 @@ -635,7 +635,7 @@ def check_duplication(gGCODES): gGCODES[i].x2 = tx2 gGCODES[i].y2 = ty2 elif(tj == 3): - print "rect-cir" + print("rect-cir") gGCODES[j].gtype = 0 gGCODES[i].gtype = 5 gGCODES[i].mod1 =gGCODES[j].mod1 @@ -649,7 +649,7 @@ def check_duplication(gGCODES): gGCODES[i].x2 = tx1 gGCODES[i].y2 = ty1 if(gGCODES[i].y1 == gGCODES[i].y2 and gGCODES[i].y1 == gGCODES[j].y1): #Horizontal - #print "ti check y" + #print("ti check y" if(gGCODES[i].mod1 == gGCODES[j].mod2): x1=gGCODES[j].x1-gGCODES[j].mod1/2 @@ -666,11 +666,11 @@ def check_duplication(gGCODES): gGCODES[j].gtype=0 if(ovflag == 7): gGCODES[i].gtype=0 - print "tj overlap =" + str(ovflag) + print("tj overlap =" + str(ovflag)) tx1,ty1,tx2,ty2=line_joint(x1,y1,x2,y2,xa,ya,xb,yb,ovflag) if(tj == 4): #Rect - print "Rect-Rect" + print("Rect-Rect") gGCODES[j].gtype = 0 gGCODES[i].gtype = 4 gGCODES[i].x1 = tx1 @@ -678,7 +678,7 @@ def check_duplication(gGCODES): gGCODES[i].x2 = tx2 gGCODES[i].y2 = ty2 elif(tj == 3): - print "rect-cir" + print("rect-cir") gGCODES[j].gtype = 0 gGCODES[i].gtype = 5 gGCODES[i].mod1 =gGCODES[j].mod1 @@ -826,7 +826,7 @@ def merge(gPOLYGONS, LINE, gLINES,gLINES2): #del all polygons poly3.delete = 1 gPOLYGONS = line_merge(gPOLYGONS, gLINES) - print "End merge polygons" + print("End merge polygons") return gPOLYGONS def line_merge(gPOLYGONS, gLINES): @@ -853,7 +853,7 @@ def line_merge(gPOLYGONS, gLINES): def merge_polygons(gPOLYGONS): #global gPOLYGONS - print " Start merge lines 2" + print(" Start merge lines 2") for poly1 in gPOLYGONS: if(poly1.delete): continue @@ -878,7 +878,7 @@ def merge_polygons(gPOLYGONS): def IsLineOverlap(x1,y1,x2,y2,xa,ya,xb,yb): global TINY - #print "check overlap" + #print("check overlap" dx1 = x2-x1 #dy1 = y2-y1 dx2 = xb-xa @@ -900,9 +900,9 @@ def IsLineOverlap(x1,y1,x2,y2,xa,ya,xb,yb): if(abs(a1-a2) < TINY): b1 = y1-a1*x1 b2 = ya-a2*xa - #print "same angle " + str(a1 )+ ", b1=" + str(b1)+ ", b2=" + str(b2) + ", b2-b1=" + str(abs(b2-b1)) +", y1=" +str(y1) + ", ya=" + str(ya) + #print("same angle " + str(a1 )+ ", b1=" + str(b1)+ ", b2=" + str(b2) + ", b2-b1=" + str(abs(b2-b1)) +", y1=" +str(y1) + ", ya=" + str(ya) if(abs(b2-b1) < TINY): #Horizontal - #print "same b " + str(b1) + #print("same b " + str(b1) if (xa - x1)*(xa - x2) <= 0 or (xb - x1)*(xb - x2): return 1 return 0 @@ -946,7 +946,7 @@ def CrossAndIn(line_id,spoints, gLINES, LINE): #global gLINES, gCCOUNT1, gCCOUNT2,TEST_POINTS1,TEST_POINTS2 global gCCOUNT1, gCCOUNT2,TEST_POINTS1,TEST_POINTS2 #check in or out - #print line_id + #print(line_id if(gLINES[line_id].inside): return 0 xa = gLINES[line_id].x1 @@ -973,7 +973,7 @@ def CrossAndIn(line_id,spoints, gLINES, LINE): (cross_flag,cross_x,cross_y)=find_cross_point(xa,ya,xb,yb,xp1,yp1,xp2,yp2) cross_num+=cross_flag if(cross_flag): - #print "cross" + #print("cross" cross_points.extend([cross_x,cross_y]) cross_nums.append(si) @@ -1029,9 +1029,9 @@ def CrossAndIn(line_id,spoints, gLINES, LINE): if(cross_num>1): cross_points = sort_points_by_dist(xa,ya,cross_points) - #print calc_dist(gLINES[line_id].x1,gLINES[line_id].y1,cross_points[0],cross_points[1]) + #print(calc_dist(gLINES[line_id].x1,gLINES[line_id].y1,cross_points[0],cross_points[1]) if(calc_dist(gLINES[line_id].x1,gLINES[line_id].y1,cross_points[0],cross_points[1])<=0.0): - #print "the cross point is same as p1 in_flag1=" + str(in_flag1) + "in_flag2=" + str(in_flag2) + #print("the cross point is same as p1 in_flag1=" + str(in_flag1) + "in_flag2=" + str(in_flag2) if(in_flag1 != in_flag2): gLINES[line_id].inside = 1 else: @@ -1065,7 +1065,7 @@ def CrossAndIn(line_id,spoints, gLINES, LINE): if(in_flag1 == in_flag2): #in in gLINES[line_id].inside=in_flag1 - #print "in-in or Out-OUT:flag="+str(in_flag1)+ ", id=" +str(line_id) + #print("in-in or Out-OUT:flag="+str(in_flag1)+ ", id=" +str(line_id) else: #in out if(ovflag <=0): diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_drill.gcode b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_drill.gcode index c9d0652..0128b8f 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_drill.gcode +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_drill.gcode @@ -1,5 +1,5 @@ (Generated by ./pygerber2gcode_cui_MOD.py ) -( 2013-07-28 02:00:01 ) +( 2013-07-28 13:51:51 ) (Initialize) (Start form here) diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_edge.gcode b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_edge.gcode index 286b359..75c63c2 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_edge.gcode +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_edge.gcode @@ -1,5 +1,5 @@ (Generated by ./pygerber2gcode_cui_MOD.py ) -( 2013-07-28 02:00:01 ) +( 2013-07-28 13:51:51 ) (Initialize) (Start form here) diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch.gcode b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch.gcode index 24092e1..fa653d1 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch.gcode +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch.gcode @@ -1,5 +1,5 @@ (Generated by ./pygerber2gcode_cui_MOD.py ) -( 2013-07-28 02:00:01 ) +( 2013-07-28 13:51:51 ) (Initialize) (Start form here) diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch2pass.gcode b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch2pass.gcode index 4dd7de7..7a79358 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch2pass.gcode +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch2pass.gcode @@ -1,5 +1,5 @@ (Generated by ./pygerber2gcode_cui_MOD.py ) -( 2013-07-28 02:00:01 ) +( 2013-07-28 13:51:51 ) (Initialize) (Start form here) diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch3pass.gcode b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch3pass.gcode index 74543a5..cfa52ea 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch3pass.gcode +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/out/GNBoard_etch3pass.gcode @@ -1,5 +1,5 @@ (Generated by ./pygerber2gcode_cui_MOD.py ) -( 2013-07-28 02:00:01 ) +( 2013-07-28 13:51:51 ) (Initialize) (Start form here) diff --git a/Software/GcodeGenerators/pyGerber2Gcode_CUI/pygerber2gcode_cui_MOD.py b/Software/GcodeGenerators/pyGerber2Gcode_CUI/pygerber2gcode_cui_MOD.py index f9c5282..3106beb 100644 --- a/Software/GcodeGenerators/pyGerber2Gcode_CUI/pygerber2gcode_cui_MOD.py +++ b/Software/GcodeGenerators/pyGerber2Gcode_CUI/pygerber2gcode_cui_MOD.py @@ -246,54 +246,54 @@ def main(): front_poly_3pass = [] back_poly_3pass = [] if FRONT_FILE: - #print "Front file =",FRONT_FILE + #print("Front file =",FRONT_FILE front_gerber = read_Gerber(GERBER_DIR,FRONT_FILE) #front_gerber = gm.merge_lines(front_gerber) front_gerber = gm.check_duplication(front_gerber) - #print len(front_gerber) + #print(len(front_gerber) front_poly = gerber2polygon(front_gerber) - #print len(front_poly) + #print(len(front_poly) front_poly = gm.merge(front_poly, LINE, gLINES,gLINES2) if abs(float(ROT_ANG)) > TINY: front_poly = rot_poly(front_poly) if MIRROR_FRONT: front_poly = mirror_poly(front_poly) - print len(front_poly) + print(len(front_poly)) if TOOL_2PASS_D > 0: - print "Processing 2nd pass..." + print("Processing 2nd pass...") PREV_TOOL_D = TOOL_D TOOL_D = TOOL_2PASS_D # Set the thicker tool - #print "Front file =",FRONT_FILE + #print("Front file =",FRONT_FILE front_gerber_2pass = read_Gerber(GERBER_DIR,FRONT_FILE) #front_gerber = gm.merge_lines(front_gerber) front_gerber_2pass = gm.check_duplication(front_gerber_2pass) - #print len(front_gerber) + #print(len(front_gerber) front_poly_2pass = gerber2polygon(front_gerber_2pass) - #print len(front_poly) + #print(len(front_poly) front_poly_2pass = gm.merge(front_poly_2pass, LINE, gLINES,gLINES2) if abs(float(ROT_ANG)) > TINY: front_poly_2pass = rot_poly(front_poly_2pass) if MIRROR_FRONT: front_poly_2pass = mirror_poly(front_poly_2pass) - print len(front_poly_2pass) + print(len(front_poly_2pass)) TOOL_D = PREV_TOOL_D if TOOL_3PASS_D > 0: - print "Processing 3nd pass..." + print("Processing 3nd pass...") PREV_TOOL_D = TOOL_D TOOL_D = TOOL_3PASS_D # Set the thicker tool - #print "Front file =",FRONT_FILE + #print("Front file =",FRONT_FILE front_gerber_3pass = read_Gerber(GERBER_DIR,FRONT_FILE) #front_gerber = gm.merge_lines(front_gerber) front_gerber_3pass = gm.check_duplication(front_gerber_3pass) - #print len(front_gerber) + #print(len(front_gerber) front_poly_3pass = gerber2polygon(front_gerber_3pass) - #print len(front_poly) + #print(len(front_poly) front_poly_3pass = gm.merge(front_poly_3pass, LINE, gLINES,gLINES2) if abs(float(ROT_ANG)) > TINY: front_poly_3pass = rot_poly(front_poly_3pass) if MIRROR_FRONT: front_poly_3pass = mirror_poly(front_poly_3pass) - print len(front_poly_3pass) + print(len(front_poly_3pass)) TOOL_D = PREV_TOOL_D if BACK_FILE: back_gerber = read_Gerber(GERBER_DIR,BACK_FILE) @@ -305,9 +305,9 @@ def main(): back_poly = rot_poly(back_poly) if MIRROR_BACK: back_poly = mirror_poly(back_poly) - print len(back_poly) + print(len(back_poly)) if TOOL_2PASS_D > 0: - print "Processing 2nd pass..." + print("Processing 2nd pass...") PREV_TOOL_D = TOOL_D TOOL_D = TOOL_2PASS_D # Set the thicker tool back_gerber_2pass = read_Gerber(GERBER_DIR,BACK_FILE) @@ -319,10 +319,10 @@ def main(): back_poly_2pass = rot_poly(back_poly_2pass) if MIRROR_BACK: back_poly_2pass = mirror_poly(back_poly_2pass) - print len(back_poly_2pass) + print(len(back_poly_2pass)) TOOL_D = PREV_TOOL_D if TOOL_3PASS_D > 0: - print "Processing 3nd pass..." + print("Processing 3nd pass...") PREV_TOOL_D = TOOL_D TOOL_D = TOOL_3PASS_D # Set the thicker tool back_gerber_3pass = read_Gerber(GERBER_DIR,BACK_FILE) @@ -334,7 +334,7 @@ def main(): back_poly_3pass = rot_poly(back_poly_3pass) if MIRROR_BACK: back_poly_3pass = mirror_poly(back_poly_3pass) - print len(back_poly_3pass) + print(len(back_poly_3pass)) TOOL_D = PREV_TOOL_D if DRILL_FILE: read_Drill_file(GERBER_DIR,DRILL_FILE) @@ -353,22 +353,18 @@ def read_config(config_file): global INI_X, INI_Y, INI_Z, MOVE_HEIGHT, OUT_INCH_FLAG, IN_INCH_FLAG, MCODE_FLAG, XY_SPEED, Z_SPEED, LEFT_X, LOWER_Y, DRILL_SPEED, DRILL_DEPTH, CUT_DEPTH, TOOL_D, TOOL_2PASS_D, TOOL_3PASS_D, DRILL_D, CAD_UNIT, EDGE_TOOL_D, EDGE_DEPTH, EDGE_SPEED, EDGE_Z_SPEED, MERGE_DRILL_DATA, Z_STEP_DRILL, Z_STEP_EDGE, GERBER_COLOR, DRILL_COLOR, EDGE_COLOR , CONTOUR_COLOR, GERBER_EXT, DRILL_EXT, EDGE_EXT, GCODE_EXT, GDRILL_EXT, GEDGE_EXT, DRILL_UNIT, EDGE_UNIT, CUT_FLAG, CUT_OV global GERBER_DIR,FRONT_FILE,BACK_FILE,DRILL_FILE,EDGE_FILE,MIRROR_FRONT,MIRROR_BACK,MIRROR_DRILL,MIRROR_EDGE,ROT_ANG global OUT_DIR,OUT_FRONT_FILE,OUT_FRONT_2PASS_FILE,OUT_FRONT_3PASS_FILE,OUT_BACK_FILE,OUT_BACK_2PASS_FILE,OUT_BACK_3PASS_FILE,OUT_DRILL_FILE,OUT_EDGE_FILE - try: - f = open(config_file,'r') - except IOError, (errno, strerror): - print "Unable to open the file =" + config_file + "\n" - else: + with open(config_file,'r') as f: while 1: config = f.readline() - #print config + #print(config if not config: break #cfg = re.search("([A-Z\_]+)[\d\s\ ]*\=[\ \"]*([\s\/\-\d\.\_]+)\"*",config) cfg = re.search("([A-Z0-9\_]+)[\d\s\ ]*\=[\ \"]*([^\ \"\n\r]+)\"*",config) # FIXED: Now variable names can have numbers if (cfg): - #print str(cfg.group(1)),"=",str(cfg.group(2)) + #print(str(cfg.group(1)),"=",str(cfg.group(2)) if(cfg.group(1)=="INI_X"): - #print "ini x =",cfg.group(2) + #print("ini x =",cfg.group(2) INI_X = float(cfg.group(2)) if(cfg.group(1)=="INI_Y"): INI_Y = float(cfg.group(2)) @@ -450,10 +446,10 @@ def read_config(config_file): GEDGE_EXT = str(cfg.group(2)) if(cfg.group(1)=="GERBER_DIR"): - #print "dir =",cfg.group(2) + #print("dir =",cfg.group(2) GERBER_DIR = str(cfg.group(2)) if(cfg.group(1)=="FRONT_FILE"): - #print "front =",cfg.group(2) + #print("front =",cfg.group(2) FRONT_FILE = str(cfg.group(2)) if(cfg.group(1)=="BACK_FILE"): BACK_FILE = str(cfg.group(2)) @@ -490,6 +486,8 @@ def read_config(config_file): if(cfg.group(1)=="OUT_EDGE_FILE"): OUT_EDGE_FILE = str(cfg.group(2)) f.close() + return + raise Exception("Unable to open the file " + config_file + "\n") def set_unit(): global IN_INCH_FLAG, OUT_INCH_FLAG, gUNIT, INCH @@ -542,26 +540,26 @@ def read_Gerber(dirname,filename): #global IN_INCH_FLAG global gGCODES gGCODES = [] - print "Parse Gerber data" + print("Parse Gerber data") (data,f) = open_file(dirname, filename) for gerber in data: if not gerber: break - # print gerber - if (find(gerber, "%MOIN") != -1): + # print(gerber + if (gerber.find("%MOIN") != -1): IN_INCH_FLAG = 1 - if (find(gerber, "%ADD") != -1): + if (gerber.find("%ADD") != -1): parse_add(gerber) - if(find(gerber, "%AM") != -1): + if(gerber.find("%AM") != -1): #do nothing - print "Ignoring %AM..." - if (find(gerber, "D") == 0): + print("Ignoring %AM...") + if (gerber.find("D") == 0): parse_d(gerber) - if (find(gerber, "G") != -1): + if (gerber.find("G") != -1): parse_g(gerber) #if (find(gerber, "X") != -1 or find(gerber, "Y") != -1): - if (find(gerber, "X") == 0): + if (gerber.find("X") == 0): parse_xy(gerber) f.close() return gGCODES @@ -586,16 +584,16 @@ def parse_add(gerber): gDCODE[int(d_num)] = D_DATA(aperture_type,mod1,mod2) def parse_d(gerber): global g54_FLAG, gFIG_NUM - #print gerber - index_d=find(gerber, "D") - index_ast=find(gerber, "*") + #print(gerber + index_d=gerber.find("D") + index_ast=gerber.find("*") g54_FLAG = 1 gFIG_NUM=gerber[index_d+1:index_ast] def parse_g(gerber): global gTMP_X, gTMP_Y, gTMP_Z, g54_FLAG, gFIG_NUM - index_d=find(gerber, "D") - index_ast=find(gerber, "*") - if (find(gerber, "54",1,index_d) !=-1): + index_d=gerber.find("D") + index_ast=gerber.find("*") + if (gerber.find("54",1,index_d) !=-1): g54_FLAG = 1 else: g54_FLAG = 0 @@ -641,8 +639,8 @@ def parse_data(x,y,d): gGCODES.append(GCODE(x,y,0,0,2,mod1,mod2)) elif(gDCODE[int(gFIG_NUM)].atype == "O"): gGCODES.append(GCODE(x,y,0,0,6,mod1,mod2)) - #print "Oval 03" - else: print "UNSUPPORTED SHAPE TYPE:",gDCODE[int(gFIG_NUM)].atype + #print("Oval 03" + else: print("UNSUPPORTED SHAPE TYPE: " + str(gDCODE[int(gFIG_NUM)].atype)) elif(d == "02" or d == "2"): #move w light off gGERBER_TMP_X = x @@ -656,8 +654,8 @@ def parse_data(x,y,d): gGCODES.append(GCODE(gGERBER_TMP_X,gGERBER_TMP_Y,x,y,4,mod1,mod2)) elif(gDCODE[int(gFIG_NUM)].atype == "O"): gGCODES.append(GCODE(gGERBER_TMP_X,gGERBER_TMP_Y,x,y,4,mod1,mod2)) # TODO FIX: This oval will be shown as a rectangle! - print "Oval pad will appear as a rectangle!" - else: print "UNSUPPORTED SHAPE TYPE:",gDCODE[int(gFIG_NUM)].atype + print("Oval pad will appear as a rectangle!") + else: print("UNSUPPORTED SHAPE TYPE: " + str(gDCODE[int(gFIG_NUM)].atype)) gGERBER_TMP_X = x gGERBER_TMP_Y = y @@ -760,7 +758,7 @@ def polygon(points): y_max=-HUGE y_min=HUGE if(len(points)<=2): - print "Error: polygon point" + print("Error: polygon point") return i = 0 while i< len(points): @@ -794,12 +792,12 @@ def circle_points(cx,cy,r,points_num): elif new_points_num > 50 : new_points_num = 50 - #print "Modifying CIRCLE points_num from",points_num,"to",new_points_num + #print("Modifying CIRCLE points_num from",points_num,"to",new_points_num points_num = new_points_num -# print "Circle: Radius:", str(r), "Points:", points_num +# print("Circle: Radius:", str(r), "Points:", points_num points=[] # if(points_num <= 2): -# print "Too small angle at Circle" +# print("Too small angle at Circle" # return i = points_num while i > 0: @@ -867,15 +865,15 @@ def end(front_poly,back_poly,front_poly_2pass,back_poly_2pass,front_poly_3pass,b def polygon2gcode(gPOLYGONS,height,xy_speed,z_speed): #global gPOLYGONS - print "Convert to G-code" - #print len(gPOLYGONS) + print("Convert to G-code") + #print(len(gPOLYGONS) #i=0 ret_data = "" for poly in gPOLYGONS: if (poly.delete): continue ret_data += path(height,xy_speed,z_speed,poly.points) - #print i + #print(i #i+=1 return ret_data def path(height,xy_speed,z_speed,points): @@ -884,7 +882,7 @@ def path(height,xy_speed,z_speed,points): out_data = "G1" gcode_tmp_flag = 0 if(len(points) % 2): - print "Number of points is illegal " + print("Number of points is illegal ") #move to Start position ret_data += move(points[0]+float(gXSHIFT),points[1]+float(gYSHIFT)) #move to cuting heght @@ -910,7 +908,7 @@ def path(height,xy_speed,z_speed,points): out_data ="G1" gcode_tmp_flag=0 i += 2 - #print gFRONT_DATA + #print(gFRONT_DATA return ret_data def move(x,y): global gFRONT_DATA, MOVE_HEIGHT, gTMP_X, gTMP_Y, gTMP_Z @@ -947,15 +945,15 @@ def arc_points(cx,cy,r,s_angle,e_angle,kaku): elif new_kaku > 50 : new_kaku = 50 if kaku != new_kaku: - #print "Modifying ARC points from",kaku,"to",new_kaku + #print("Modifying ARC points from",kaku,"to",new_kaku kaku = new_kaku -# print "Arc: Radius:", str(r), "Points:", kaku +# print("Arc: Radius:", str(r), "Points:", kaku points=[] if(s_angle == e_angle): - print "Start and End angle are same" + print("Start and End angle are same") if(kaku <= 2): - print "Too small angle" + print("Too small angle") arc_x=float(cx+r*cos(float(s_angle))) # Draw a line arc_y=float(cy+r*sin(float(s_angle))) points.extend([arc_x,arc_y]) @@ -977,7 +975,7 @@ def calc_shift(): global gXSHIFT, gYSHIFT, gXMIN, gYMIN, LEFT_X, LOWER_Y gXSHIFT = LEFT_X - gXMIN gYSHIFT = LOWER_Y - gYMIN - #print "x_shift=" + str(gXSHIFT) + "y_shift=" + str(gYSHIFT) + #print("x_shift=" + str(gXSHIFT) + "y_shift=" + str(gYSHIFT) def polygon2line(points,sw): global gLINES,gLINES2 @@ -1028,7 +1026,7 @@ def mirror_poly(polygons): i += 2 return polygons def rot_point(x,y): - #print "rot ang =",ang + #print("rot ang =",ang add_ang = pi * float(ROT_ANG)/180 xc = (gXMIN+gXMAX)/2 yc = (gYMIN+gYMAX)/2 @@ -1039,7 +1037,7 @@ def rot_point(x,y): rot_ang = ini_ang + add_ang new_x =xc + r * cos(rot_ang) new_y =yc + r * sin(rot_ang) - #print new_x + #print(new_x return new_x,new_y def mirror_point(x,y): @@ -1051,7 +1049,7 @@ def mirror_point(x,y): def read_Drill_file(dirname,drill_file): global gDRILL_D, gDRILL_TYPE, DRILL_UNIT,gUNIT,INCH (data,f) = open_file(dirname, drill_file) - print "Read and Parse Drill data" + print("Read and Parse Drill data") drill_d_unit = DRILL_UNIT for drill in data: if not drill: @@ -1061,24 +1059,24 @@ def read_Drill_file(dirname,drill_file): if(drill_data): gDRILL_TYPE[int(drill_data.group(1))] = drill_data.group(2) if(drill_num): - #print drill_d_unit + #print(drill_d_unit gDRILL_D=float(gDRILL_TYPE[int(drill_num.group(1))]) * drill_d_unit #gDRILL_D=float(gDRILL_TYPE[int(drill_num.group(1))]) * gUNIT - if (find(drill, "G") != -1): + if (drill.find("G") != -1): parse_drill_g(drill) - elif (find(drill, "X") != -1 or find(drill, "Y") != -1): + elif (drill.find("X") != -1 or drill.find("Y") != -1): parse_drill_xy(drill) - if (find(drill, "INCH") != -1): + if (drill.find("INCH") != -1): drill_d_unit = INCH - #print "Drill Diameter = INCH" - if (find(drill, "M72") != -1): - #print "Drill unit = INCH" + #print("Drill Diameter = INCH" + if (drill.find("M72") != -1): + #print("Drill unit = INCH" DRILL_UNIT = INCH f.close() def parse_drill_g(drill): global gDRILL_LINES, gDRILL_D, DRILL_UNIT - #print "Drill G"; + #print("Drill G"; #xx = re.search("X([\d\.-]+)\D",drill) #yy = re.search("Y([\d\.-]+)\D",drill) xy = re.search("X([\d\.-]+)Y([\d\.-]+)\D[\d]+X([\d\.-]+)Y([\d\.-]+)",drill) @@ -1091,8 +1089,8 @@ def parse_drill_g(drill): y1=float(xy.group(2)) * DRILL_UNIT x2=float(xy.group(3)) * DRILL_UNIT y2=float(xy.group(4)) * DRILL_UNIT - #print "x1=" + str(x1) + "y1=" + str(y1) + "x2=" + str(x2) + "y2=" + str(y2) - #print "gDRILL_D =",gDRILL_D + #print("x1=" + str(x1) + "y1=" + str(y1) + "x2=" + str(x2) + "y2=" + str(y2) + #print("gDRILL_D =",gDRILL_D gDRILL_LINES.append(DRILL_LINE(x1,y1,x2,y2,gDRILL_D,0)) def parse_drill_xy(drill): @@ -1103,7 +1101,7 @@ def parse_drill_xy(drill): x=float(xx.group(1)) * DRILL_UNIT if(yy): y=float(yy.group(1)) * DRILL_UNIT - #print "gDRILL_D =",gDRILL_D + #print("gDRILL_D =",gDRILL_D gDRILLS.append(DRILL(x,y,gDRILL_D,0)) def do_drill(): @@ -1124,12 +1122,12 @@ def do_drill(): x,y = mirror_point(x,y) x = x + gXSHIFT y = y + gYSHIFT - #print "drill.d=" + str(drill.d) + ", DRILL_D=" + str(DRILL_D) + #print("drill.d=" + str(drill.d) + ", DRILL_D=" + str(DRILL_D) #move to hole position - #print "drill_d =", drill.d, " , DRILL_D =",DRILL_D + #print("drill_d =", drill.d, " , DRILL_D =",DRILL_D if(drill.d > DRILL_D + drill_mergin): cir_r = drill.d/2 - DRILL_D/2 - #print cir_r + #print(cir_r #drill_data += move_drill(drill.x-cir_r,drill.y) drill_data += drill_hole(x,y,cir_r) else: @@ -1142,7 +1140,7 @@ def do_drill(): #Goto moving Z position drill_data += "G0 Z" + floats(MOVE_HEIGHT) + "\n" gTMP_DRILL_Z = MOVE_HEIGHT - #print "len gDRILL_LINES=" +str(len(gDRILL_LINES)) + #print("len gDRILL_LINES=" +str(len(gDRILL_LINES)) for drill_l in gDRILL_LINES: x1 = drill_l.x1 y1 = drill_l.y1 @@ -1173,7 +1171,7 @@ def move_drill(x,y): global MOVE_HEIGHT, gTMP_DRILL_X, gTMP_DRILL_Y, gTMP_DRILL_Z xy_data = "G0" out_data = "" - #print out_data + #print(out_data gcode_tmp_flag = 0 if(x != gTMP_DRILL_X): gTMP_DRILL_X = x @@ -1255,8 +1253,8 @@ def drill_line(x1,y1,x2,y2,d): tmp_y = y2 #gDRAWDRILL_LINE.append(DRAWPOLY(points,"",0)) out_data += "G0 X" + floats(tmp_x) + " Y" + floats(tmp_y) + "\n" - #print z_step_n - #print len(points) + #print(z_step_n + #print(len(points) i = 1 while i <= z_step_n: gTMP_DRILL_Z = i*z_step @@ -1294,7 +1292,7 @@ def drill_hole(cx,cy,r): # r = r/2.0 # REDUCE DRILL SIZE z_step_n = int(float(DRILL_DEPTH)/float(Z_STEP_DRILL)) + 1 z_step = float(DRILL_DEPTH)/z_step_n - #print "r=" + str(r) + #print("r=" + str(r) if(MOVE_HEIGHT != gTMP_DRILL_Z): gTMP_DRILL_Z = MOVE_HEIGHT out_data += "G0 Z" + floats(gTMP_DRILL_Z) + " F" + floats(DRILL_SPEED) + "\n" # MOD @@ -1339,7 +1337,7 @@ def drill_hole_test(cx,cy,r): gcode_tmp_flag = 0 z_step_n = int(DRILL_DEPTH/Z_STEP_DRILL) + 1 z_step = DRILL_DEPTH/z_step_n - #print "r=" + str(r) + #print("r=" + str(r) if(MOVE_HEIGHT != gTMP_DRILL_Z): gTMP_DRILL_Z = MOVE_HEIGHT out_data += "G0 Z" + floats(gTMP_DRILL_Z) + "\n" @@ -1441,9 +1439,9 @@ def edge2gcode(): points = edge.points if(len(points) % 2): error_dialog("Error:Number of points is illegal ",0) - #print "Number of points is illegal " - #print "x=" + str(gTMP_EDGE_X) + ", y=" + str(gTMP_EDGE_Y) - #print "x=" + str(float(points[0])+float(gXSHIFT)) + ", y=" + str(float(points[1])+float(gYSHIFT)) + #print("Number of points is illegal " + #print("x=" + str(gTMP_EDGE_X) + ", y=" + str(gTMP_EDGE_Y) + #print("x=" + str(float(points[0])+float(gXSHIFT)) + ", y=" + str(float(points[1])+float(gYSHIFT)) #move to Start position gEDGE_DATA += move_edge(float(points[0]),float(points[1])) #move to cuting heght @@ -1486,7 +1484,7 @@ def move_edge(x,y): y=y+float(gYSHIFT) xy_data = "G0" out_data = "" - #print out_data + #print(out_data gcode_tmp_flag = 0 if(x != gTMP_EDGE_X): gTMP_EDGE_X = x @@ -1514,14 +1512,10 @@ def points_revers(points): return return_points def open_file(dirname, filename): file_name = os.path.join(dirname, filename) - try: - f = open(file_name,'r') - except IOError, (errno, strerror): - print "Unable to open the file" + file_name + "\n" - return [] - else: + with open(file_name,'r') as f: ret = f.read() return (ret.split("\n"),f) + raise Exception("Unable to open the file " + file_name + "\n") def write_file(dirname,filename,datas): file_name = os.path.join(dirname, filename) if(datas): @@ -1529,6 +1523,6 @@ def write_file(dirname,filename,datas): f.write(datas) f.close() else: - print "ERROR : No save data" + print("ERROR : No save data") if __name__ == "__main__": main() diff --git a/Software/Z_probing_data.p b/Software/Z_probing_data.p index a931ef6f06768d726a939da81d17bbd881a864ac..0e0e8893860e7a7267a1ccfa20df725eecff4143 100644 GIT binary patch literal 415 zcmZo*sx4&Dh~QyhU??ccPfCq1N-ZwUDJf)(Eo9P&Eo9bk2g-nf`~C}2E9$h@zjC*q zZ|D$UT%zE<|FHWTi74H#sj-DD8t(hoFP!7%x9EZU{*B)vj5L3ixZAH<`djzj;v4S! zw|3rPG}G(>Dr5yJ+&UvRg-G(GaPSFy1B{u9ySS**r4fC||( z-0e4-t=*Qr{fqnlwKLB~F3xIkx8Iz8u;JQs7N8rh30=5bJ|Q(Vf&=Kh%J_o(%)FA~ zLiX4~4h?q)UgmSl4leL?cW_vCB@yr*M&E(H$>3gA*PU_E3@jIyF;q{U!!BHuORx;i!xK4ln8F1EZBtn WqRjNnyh6U%LVje+p{`FY)dK(>U7?Wx literal 669 zcmY*XTaMc>4E)zcvOg906v+$t0(*eKMS_KaU}Gd%puK%b+uNf25F~0iLvi$WS)sk3 zJ|4^Ee19w-%jc=B*xqg{wTU~04fQtXcF=H*Hb37_zs~D@`FuSS$_17Gpz2*2_cBE8 z$#5Ko_lVdI$+AA~Kd@9mWNxHhIkx$GyKd&DyHncJEvGqUpB-W=E`p5qT9Mjce=c8- z`L*1)N=`ge_v~(1L4N=H2qNPp_y@_(@ G+5Z4k3Y!f8 diff --git a/Software/configuration.py b/Software/configuration.py index d3486f6..f9a1500 100644 --- a/Software/configuration.py +++ b/Software/configuration.py @@ -13,8 +13,8 @@ GRID_N_POINTS = (4,4) # Number of points (AT LEAST 4 IN EACH DIRECTION, OTHERWIS Zlift = 0.5 # mm # Lift between probings, it is relative so should be enough # For Zprobe and Send -F_fastMove = 700 # mm/s -F_slowMove = 200 # mm/s +F_fastMove = 70000 # mm/s +F_slowMove = 20000 # mm/s initial_Z_lowering_distance = -5 # Warning: Do not lower too much or you will potentially cause damage! N_copies_X = 2 # Panelizing options! diff --git a/Software/misc.py b/Software/misc.py index 0811eaf..ff9cc39 100644 --- a/Software/misc.py +++ b/Software/misc.py @@ -12,13 +12,13 @@ import pickle # For file saving def saveToFile(data,path): with open(path, 'wb') as path_file: - ret = pickle.dump(data, path_file) + ret = pickle.dump(data, path_file, protocol=2) path_file.close() return ret raise Exception("Could not save " + path) def loadFromFile(path): - with open(path) as path_file: + with open(path, 'rb') as path_file: ret = pickle.load(path_file) path_file.close() return ret