diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..74a8f70 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +exe: + pyinstaller main.py --onefile --name ASMBL-dev \ No newline at end of file diff --git a/src/ASMBL_parser.py b/src/ASMBL_parser.py index 7c94b6f..e45e138 100644 --- a/src/ASMBL_parser.py +++ b/src/ASMBL_parser.py @@ -219,41 +219,31 @@ def split_cam_operations(self, gcode_sub): def assign_cam_layer_height(self, cam_layer, later_cam_layers, layer_overlap): """ Calculate the additive layer height that should be printed to before the CAM layer happens """ - if len(later_cam_layers) > 0: - next_cam_layer_height = min([layer.cutting_height for layer in later_cam_layers]) - later_additive = [layer for layer in self.gcode_add_layers[:-1] - if layer.layer_height > next_cam_layer_height] + later_planar_layers = [layer for layer in later_cam_layers if layer.planar] - if layer_overlap == 0: - cam_layer.layer_height = next_cam_layer_height - - elif len(later_additive) == 0: - cam_layer.layer_height = next_cam_layer_height - - elif len(later_additive) >= layer_overlap: - cam_layer.layer_height = later_additive[layer_overlap - 1].layer_height - - else: - cam_layer.layer_height = later_additive[-1].layer_height + if (not cam_layer.planar) or (len(later_planar_layers) == 0): + cutting_height = cam_layer.cutting_height + else: + cutting_height = min([layer.cutting_height for layer in later_planar_layers]) - else: # no later ops - later_additive = [layer for layer in self.gcode_add_layers[:-1] - if layer.layer_height > cam_layer.cutting_height] + later_additive = [layer for layer in self.gcode_add_layers[:-1] + if layer.layer_height > cutting_height] - if len(later_additive) == 0: # no further printing - # add 10 since it is unlikely that the printed layer height will exceed 10 mm - # but still want to place cutting after a print at the same height - cam_layer.layer_height = cam_layer.cutting_height + 10 + if (layer_overlap == 0) or (len(later_additive) == 0): + cam_layer_height = cutting_height - elif len(later_additive) >= layer_overlap: - cam_layer.layer_height = later_additive[layer_overlap - 1].layer_height + elif len(later_additive) >= layer_overlap: + cam_layer_height = later_additive[layer_overlap - 1].layer_height - else: - cam_layer.layer_height = later_additive[-1].layer_height + else: + cam_layer_height = later_additive[-1].layer_height - if cam_layer.layer_height == inf: + if cam_layer_height == inf: raise ValueError("CAM op height can't be 'inf'") + cam_layer.layer_height = cam_layer_height + return + def order_cam_operations_by_layer(self, operations): """ Takes a list of cam operations and calculates the layer that they should be executed """ unordered_cam_layers = [] diff --git a/src/fusion_api/Handlers.py b/src/fusion_api/Handlers.py index d381f72..ec2fad0 100644 --- a/src/fusion_api/Handlers.py +++ b/src/fusion_api/Handlers.py @@ -4,6 +4,8 @@ import traceback import time import os +import sys +import subprocess from ..ASMBL_parser import Parser @@ -391,10 +393,11 @@ def notify(self, args): outputFolder = os.path.expanduser('~/Asmbl/output/') asmbl_parser.create_output_file(asmbl_parser.merged_gcode_script, outputFolder) - if (os.name == 'posix'): - os.system('open "%s"' % outputFolder) - elif (os.name == 'nt'): + if sys.platform == 'win32': os.startfile(outputFolder) + else: + opener = 'open' if sys.platform == 'darwin' else 'xdg-open' + subprocess.call([opener, outputFolder]) except: ui.messageBox('Failed combing gcode files:\n{}'.format(traceback.format_exc())) return @@ -484,9 +487,10 @@ def notify(self, args): ui.messageBox('Failed posting toolpaths:\n{}'.format(traceback.format_exc())) return - if (os.name == 'posix'): - os.system('open "%s"' % output_folder) - elif (os.name == 'nt'): + if sys.platform == 'win32': os.startfile(output_folder) + else: + opener = 'open' if sys.platform == 'darwin' else 'xdg-open' + subprocess.call([opener, output_folder]) ui.messageBox('Milling Setup Post Processing Complete.\nFile saved in \'{}\''.format(output_folder)) diff --git a/src/operations.py b/src/operations.py deleted file mode 100644 index 8b128a1..0000000 --- a/src/operations.py +++ /dev/null @@ -1,12 +0,0 @@ -class Operations: - category = { - 'planar': [ - 'adaptive2d', - 'contour2d', - 'contour_new' - ], - 'non_planar': [ - 'parallel_new', - 'radial_new', - ] - }