Files
S4-P3-Projet/gcodeextractor/main.py
Marc-Antoine Lafreniere 31c8ae3470 Rename modules
Rename modules with better name and move the arduino code to its own folder
2019-04-06 15:17:02 -04:00

58 lines
2.1 KiB
Python

import math
from gcodeextractor.gcode.GcodeBuilder import listToGCode
from gcodeextractor.gcode.GcodeCreator import createSequence
from gcodeextractor.gcode.path import path
from gcodeextractor.utils.FileUtils import FileUtils
import argparse
import subprocess
def main(inputPath, outputPath, isAscii, heightReal, widthReal, tool, unit):
converterPath = '.\\gcodeextractor\\utils\\convertiseur.exe'
if outputPath.rfind('\\') != -1:
asciiPbmPath = outputPath[0:outputPath.rfind('\\')] + '\\pcbImageAscii.pbm'
elif outputPath.rfind('/') != -1:
asciiPbmPath = outputPath[0:outputPath.rfind('/')] + '/pcbImageAscii.pbm'
else:
asciiPbmPath = '.\\gcodeextractor\\resources\\output\\pcbImageAscii.pbm'
if not isAscii:
subprocess.check_call([converterPath, inputPath, asciiPbmPath])
matrix, height, width = FileUtils.pbmToMatrix(asciiPbmPath)
pxHeight, pxWidth = FileUtils.getPixelSize(height, width, heightReal, widthReal, unit = unit)
if pxHeight > pxWidth:
rTool = int(math.ceil(tool * pxHeight))
else:
rTool = int(math.ceil(tool * pxWidth))
matrixUpdated = path(matrix, rTool)
listIndexes = createSequence(matrixUpdated)
gcode = listToGCode(listIndexes, pxHeight, pxWidth)
FileUtils.saveStringListToFile(gcode, outputPath)
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog = 'main.py')
parser.add_argument('-i', required = True, help = 'PCB image path')
parser.add_argument('--ascii', required = False, dest='imgTypeisAscii', action = 'store_true', help = 'If the image is in ascii(True) or binary(False)')
parser.add_argument('-o', required = True, help = 'Gcode output path')
parser.add_argument('-wi', required = True, type = int, help = 'Width of the PCB')
parser.add_argument('-he', required = True, type = int, help = 'Height of the PCB')
parser.add_argument('-t', required = True, type = int, help = 'Tool\'s radius in mm')
parser.add_argument('-u', required = False, help = 'PCB dimension unit')
args = parser.parse_args()
unitValue = 'mm'
isAscii = args.imgTypeisAscii
if args.u:
unitValue = args.u
if isAscii:
asciiPbmPath = args.i
main(args.i, args.o, isAscii, args.wi, args.he, args.t, unitValue)