Example #1
0
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
    for path in etch_moves:
        toolRefresh = 0
        toolPos_draw(toolPos_X, toolPos_Y, etching=0)
        cy.moveZ(Z_origin_offset + getZoffset(X_dest, Y_dest) +
                 Z_global_offset + Zlift_milling,
                 F_fastMove)  # Raise and move to next point
        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:" +
              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]
        if Z_dest > 0:
            F_dest = F_slowMove
        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: " + 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)

        for coord in path[1:]:
            X_dest = coord[0] + X_offset
            Y_dest = coord[1] + Y_offset
            Z_dest = coord[2]
            F_dest = coord[3]

            distance = (X_dest - toolPos_X)**2 + (Y_dest - toolPos_Y)**2
            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 " + 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: " + str(F_dest))
            toolPos_refresh(X_dest, Y_dest, etching=1)

            toolPos_X = X_dest
            toolPos_Y = Y_dest
            toolPos_Z = Z_dest
            toolPos_F = F_dest
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
	for path in etch_moves :
		toolRefresh = 0
		#toolPos_draw(toolPos_X, toolPos_Y, etching=0)
		cy.moveZ(Z_origin_offset+getZoffset(X_dest, Y_dest)+Z_global_offset+Zlift_milling,F_fastMove) # Raise and move to next point
		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:" + str(Z_global_offset+Zlift_milling) )
		sys.stdout.flush()
		cy.moveXY(X_dest, Y_dest, F_dest)
		toolPos_draw(X_dest, Y_dest, etching=0)
		Z_dest = path[0][2]
		if Z_dest > 0:
			F_dest = F_slowMove
		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: " + str(Z_dest+Z_global_offset) )
		sys.stdout.flush()
		toolPos_X = X_dest
		toolPos_Y = Y_dest
		toolPos_Z = Z_dest # Not sure..
		toolPos_F = F_dest
	
	#	print(path)
	
		for coord in path[1:] :
			X_dest = coord[0]+X_offset
			Y_dest = coord[1]+Y_offset
			Z_dest = coord[2]
			F_dest = coord[3]
		
			distance = (X_dest-toolPos_X)**2+(Y_dest-toolPos_Y)**2
			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 " + 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: " + str(F_dest))
			toolPos_refresh(X_dest, Y_dest, etching=1)
		
			toolPos_X = X_dest
			toolPos_Y = Y_dest
			toolPos_Z = Z_dest
			toolPos_F = F_dest
			sys.stdout.flush()
Example #3
0
def splitLongEtchMove(distance):
    global toolPos_X, toolPos_Y, toolPos_Z, toolPos_F, X_dest, Y_dest, Z_dest, F_dest

    X_dest_tmp = toolPos_X
    Y_dest_tmp = toolPos_Y
    Z_dest_tmp = toolPos_Z
    F_dest_tmp = toolPos_Z

    #distance = distance**0.5 # [mm]
    N_steps = int((distance / maxDistance)**0.5)  # **must be** >= 1

    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))

    X_step = (X_dest - toolPos_X) / float(N_steps)
    Y_step = (Y_dest - toolPos_Y) / float(N_steps)
    Z_step = (Z_dest - toolPos_Z) / float(N_steps)
    F_step = (F_dest - toolPos_F) / float(N_steps)

    for i in range(N_steps):
        X_dest_tmp = toolPos_X + X_step
        Y_dest_tmp = toolPos_Y + Y_step
        Z_dest_tmp = toolPos_Z + Z_step
        F_dest_tmp = toolPos_F + F_step

        Z_real = Z_dest_tmp + Z_origin_offset + getZoffset(
            X_dest_tmp, Y_dest_tmp) + Z_global_offset
        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) )

        toolPos_X = X_dest_tmp
        toolPos_Y = Y_dest_tmp
        toolPos_Z = Z_dest_tmp
        toolPos_F = F_dest_tmp
def splitLongEtchMove(distance):
	global toolPos_X, toolPos_Y, toolPos_Z, toolPos_F, X_dest, Y_dest, Z_dest, F_dest
	
	X_dest_tmp = toolPos_X
	Y_dest_tmp = toolPos_Y
	Z_dest_tmp = toolPos_Z
	F_dest_tmp = toolPos_Z
	
	#distance = distance**0.5 # [mm]
	N_steps = int((distance/maxDistance)**0.5) # **must be** >= 1
	
	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))
	
	X_step = (X_dest-toolPos_X)/float(N_steps)
	Y_step = (Y_dest-toolPos_Y)/float(N_steps)
	Z_step = (Z_dest-toolPos_Z)/float(N_steps)
	F_step = (F_dest-toolPos_F)/float(N_steps)
	
	for i in range(N_steps) :
		X_dest_tmp = toolPos_X + X_step
		Y_dest_tmp = toolPos_Y + Y_step
		Z_dest_tmp = toolPos_Z + Z_step
		F_dest_tmp = toolPos_F + F_step
		
		Z_real = Z_dest_tmp+Z_origin_offset+getZoffset(X_dest_tmp, Y_dest_tmp)+Z_global_offset
		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) )
		
		toolPos_X = X_dest_tmp
		toolPos_Y = Y_dest_tmp
		toolPos_Z = Z_dest_tmp
		toolPos_F = F_dest_tmp
toolRefresh = 0
def toolPos_refresh(x, y, etching=0):
	global toolRefresh
	if toolRefresh >= toolRefreshSteps:
		toolPos_draw(toolPos_X, toolPos_Y, etching)
		toolRefresh = 0
	toolRefresh = toolRefresh + 1

def drawTool(x, y):
	global toolPos_point
	pltSetFig(gcodeviewer)
	toolPos_point, = plt.plot(0, 0, markersize=12, c='g', marker='x')
	pltShowNonBlocking()


cy.connect(BAUDRATE, DEVICE, Emulate)

cy.sendCommand("G90\n") # Set absolute positioning

cy.homeZXY() # Home all the axis

drawTool(10, 20) # Show a marker on the gcode plot


# Move to the origin of the grid
cy.moveXY(x_points[0], y_points[0], F_fastMove)


# Warning: Do not lower too much or you will potentially cause damage!
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)
Example #6
0
def toolPos_refresh(x, y, etching=0):
    global toolRefresh
    if toolRefresh >= toolRefreshSteps:
        toolPos_draw(toolPos_X, toolPos_Y, etching)
        toolRefresh = 0
    toolRefresh = toolRefresh + 1


def drawTool(x, y):
    global toolPos_point
    pltSetFig(gcodeviewer)
    toolPos_point, = plt.plot(0, 0, markersize=12, c='g', marker='x')
    pltShowNonBlocking()


cy.connect(BAUDRATE, DEVICE, Emulate)

cy.sendCommand("G90\n")  # Set absolute positioning

cy.homeZXY()  # Home all the axis

drawTool(10, 20)  # Show a marker on the gcode plot

# Move to the origin of the grid
cy.moveXY(x_points[0], y_points[0], F_fastMove)

# Warning: Do not lower too much or you will potentially cause damage!
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)
Example #7
0
# Begin configuration
from configuration import *  # load settings
# End configuration

# Begin modules
from misc import *

import CycloneHost.Controller as cy
# End modules

# Load the Z data file
Z_probing_data = loadFromFile(Z_PROBING_FILE)

print("connecting...")
cy.connect(BAUDRATE, DEVICE, Emulate)

print("G90...")
cy.sendCommand("G90\n")  # Set absolute positioning

print("homexyz..")
cy.homeZXY()  # Home all the axis

# (x,y)
#grid_origin = (0,0)	# Initial point of the grid [mm]
#grid_len = (135,84)	# Distance to probe [mm]
#GRID_N_POINTS = (12,6)	# Number of points
#grid_origin = (0,0)	# Initial point of the grid [mm]
#grid_len = (80,60)	# Distance to probe [mm]

# Use the max values generated when loading the gerber files
Example #8
0
# Begin configuration
from configuration import * # load settings
# End configuration

# Begin modules
from misc import *

import CycloneHost.Controller as cy
# End modules

# Load the Z data file
Z_probing_data = loadFromFile(Z_PROBING_FILE)

print("connecting...")
cy.connect(BAUDRATE, DEVICE, Emulate)

print("G90...")
cy.sendCommand("G90\n") # Set absolute positioning

print("homexyz..")
cy.homeZXY() # Home all the axis

# (x,y)
#grid_origin = (0,0)	# Initial point of the grid [mm]
#grid_len = (135,84)	# Distance to probe [mm]
#GRID_N_POINTS = (12,6)	# Number of points
#grid_origin = (0,0)	# Initial point of the grid [mm]
#grid_len = (80,60)	# Distance to probe [mm]

# Use the max values generated when loading the gerber files
#   consequential damages resulting from the use, misuse, or inability to use this software,
#   even if Carlosgs has been advised of the possibility of such damages.

# Begin configuration
from configuration import * # load settings
# End configuration

# Begin modules
from misc import *
import ConfigParser

import CycloneHost.Controller as cy
# End modules


cy.connect(BAUDRATE, DEVICE, Emulate)
sys.stdout.flush()

cy.sendCommand("G90\n") # Set absolute positioning
sys.stdout.flush()

#read gcode file
gcodeFileName = sys.argv[1]
print("Executing " + gcodeFileName)
with open(favouritesPath + gcodeFileName + ".gcode", 'r') as gcodeFile:
    for gcode in gcodeFile:
        print("Sending command " + gcode.rstrip())
        sys.stdout.flush()
        cy.sendCommand(gcode + "\n")
    
gcodeFile.close()
# Begin configuration
from configuration import * # load settings
# End configuration

# Begin modules
from misc import *
import ConfigParser

import CycloneHost.Controller as cy
# End modules

# Load the Z data file
Z_probing_data = loadFromFile(Z_PROBING_FILE)


cy.connect(BAUDRATE, DEVICE, Emulate)

cy.sendCommand("G90\n") # Set absolute positioning

cy.homeZXY() # Home all the axis


Z_origin_offset = cy.probeZ()
print("Z offset: " + str(Z_origin_offset) )
sys.stdout.flush()

cy.close() # Close the connection with Cyclone


config = ConfigParser.RawConfigParser()
config.add_section('Z_Probing')