Files
S4-P3-Projet/pcbdevice/main.py
Marc-Antoine Lafreniere 7469e58cdf #55-UI frame
Refactor main the ease usage in the UI
2019-03-20 13:48:58 -04:00

58 lines
2.1 KiB
Python

import math
from pcbdevice.gcode.GcodeBuilder import listToGCode
from pcbdevice.gcode.GcodeCreator import createSequence
from pcbdevice.gcode.path import path
from pcbdevice.utils.FileUtils import FileUtils
import argparse
import subprocess
def main(inputPath, outputPath, converterPath, isAscii, heightReal, widthReal, tool, unit):
if outputPath.rfind('\\') != -1:
asciiPbmPath = outputPath[0:outputPath.rfind('\\')] + '\\pcbImageAscii.pbm'
elif outputPath.rfind('/') != -1:
asciiPbmPath = outputPath[0:outputPath.rfind('/')] + '/pcbImageAscii.pbm'
else:
asciiPbmPath = '.\\pcbdevice\\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()
converter = '.\\pcbdevice\\utils\\convertiseur.exe'
unitValue = 'mm'
isAscii = args.imgTypeisAscii
if args.u:
unitValue = args.u
if isAscii:
asciiPbmPath = args.i
main(args.i, args.o, converter, isAscii, args.wi, args.he, args.t, unitValue)