From: daid Date: Mon, 5 Aug 2013 13:27:18 +0000 (+0200) Subject: Add support for generating UltiGCode flavor of GCode. X-Git-Tag: 13.10~113 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=f587c51952e51dd2fc6d9edc560ccbc495342423;p=cura.git Add support for generating UltiGCode flavor of GCode. --- diff --git a/Cura/gui/preferencesDialog.py b/Cura/gui/preferencesDialog.py index 1acdfc86..2042defd 100644 --- a/Cura/gui/preferencesDialog.py +++ b/Cura/gui/preferencesDialog.py @@ -27,6 +27,7 @@ class preferencesDialog(wx.Dialog): configBase.SettingRow(left, 'machine_height') configBase.SettingRow(left, 'extruder_amount') configBase.SettingRow(left, 'has_heated_bed') + configBase.SettingRow(left, 'gcode_flavor') configBase.TitleRow(left, 'Printer head size') configBase.SettingRow(left, 'extruder_head_size_min_x') diff --git a/Cura/util/machineCom.py b/Cura/util/machineCom.py index 0eaa39dd..3b554dc8 100644 --- a/Cura/util/machineCom.py +++ b/Cura/util/machineCom.py @@ -256,7 +256,7 @@ class MachineCom(object): return time.time() - self._printStartTime def getPrintTimeRemainingEstimate(self): - if self._printStartTime100 == None or self.getPrintPos() < 200: + if self._printStartTime100 is None or self.getPrintPos() < 200: return None printTime = (time.time() - self._printStartTime100) / 60 printTimeTotal = printTime * (len(self._gcodeList) - 100) / (self.getPrintPos() - 100) diff --git a/Cura/util/profile.py b/Cura/util/profile.py index 15416855..d54e27d7 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -134,7 +134,6 @@ setting('filament_flow', 100., float, 'basic', 'Filament').setRang #setting('retraction_min_travel', 5.0, float, 'advanced', 'Retraction').setRange(0).setLabel('Minimum travel (mm)', 'Minimum amount of travel needed for a retraction to happen at all. To make sure you do not get a lot of retractions in a small area') setting('retraction_speed', 40.0, float, 'advanced', 'Retraction').setRange(0.1).setLabel('Speed (mm/s)', 'Speed at which the filament is retracted, a higher retraction speed works better. But a very high retraction speed can lead to filament grinding.') setting('retraction_amount', 4.5, float, 'advanced', 'Retraction').setRange(0).setLabel('Distance (mm)', 'Amount of retraction, set at 0 for no retraction at all. A value of 4.5mm seems to generate good results.') -#setting('retraction_extra', 0.0, float, 'advanced', 'Retraction').setRange(0).setLabel('Extra length on start (mm)', 'Extra extrusion amount when restarting after a retraction, to better "Prime" your extruder after retraction.') setting('retraction_dual_amount', 16.5, float, 'advanced', 'Retraction').setRange(0).setLabel('Dual extrusion switch amount (mm)', 'Amount of retraction when switching nozzle with dual-extrusion, set at 0 for no retraction at all. A value of 16.0mm seems to generate good results.') setting('bottom_thickness', 0.3, float, 'advanced', 'Quality').setRange(0).setLabel('Initial layer thickness (mm)', 'Layer thickness of the bottom layer. A thicker bottom layer makes sticking to the bed easier. Set to 0.0 to have the bottom layer thickness the same as the other layers.') setting('object_sink', 0.0, float, 'advanced', 'Quality').setLabel('Cut off object bottom (mm)', 'Sinks the object into the platform, this can be used for objects that do not have a flat bottom and thus create a too small first layer.') @@ -299,7 +298,8 @@ setting('machine_type', 'unknown', str, 'preference', 'hidden') setting('machine_center_is_zero', 'False', bool, 'preference', 'hidden') setting('ultimaker_extruder_upgrade', 'False', bool, 'preference', 'hidden') setting('has_heated_bed', 'False', bool, 'preference', 'hidden').setLabel('Heated bed', 'If you have an heated bed, this enabled heated bed settings (requires restart)') -setting('reprap_name', 'RepRap', str, 'preference', 'hidden') +setting('machine_type', 'unknown', str, 'preference', 'hidden') +setting('gcode_flavor', 'RepRap (Marlin/Sprinter)', ['RepRap (Marlin/Sprinter)', 'UltiGCode'], 'preference', 'hidden').setLabel('GCode Flavor', 'Flavor of generated GCode.\nRepRap...') setting('extruder_amount', '1', ['1','2','3','4'], 'preference', 'hidden').setLabel('Extruder count', 'Amount of extruders in your machine.') setting('extruder_offset_x1', '-21.6', float, 'preference', 'hidden').setLabel('Offset X', 'The offset of your secondary extruder compared to the primary.') setting('extruder_offset_y1', '0.0', float, 'preference', 'hidden').setLabel('Offset Y', 'The offset of your secondary extruder compared to the primary.') @@ -367,6 +367,21 @@ settingsDictionary['retraction_dual_amount'].addCondition(lambda : int(getPrefer #Heated bed settingsDictionary['print_bed_temperature'].addCondition(lambda : getPreference('has_heated_bed') == 'True') +#UltiGCode uses less settings +settingsDictionary['print_temperature'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['print_temperature2'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['print_temperature3'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['print_temperature4'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['filament_diameter'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['filament_diameter2'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['filament_diameter3'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['filament_diameter4'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['filament_flow'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['print_bed_temperature'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['retraction_speed'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['retraction_amount'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') +settingsDictionary['retraction_dual_amount'].addCondition(lambda : getPreference('gcode_flavor') != 'UltiGCode') + ######################################################### ## Profile and preferences functions ######################################################### @@ -375,7 +390,7 @@ def getSubCategoriesFor(category): done = {} ret = [] for s in settingsList: - if s.getCategory() == category and not s.getSubCategory() in done: + if s.getCategory() == category and not s.getSubCategory() in done and s.checkConditions(): done[s.getSubCategory()] = True ret.append(s.getSubCategory()) return ret @@ -383,7 +398,7 @@ def getSubCategoriesFor(category): def getSettingsForCategory(category, subCategory = None): ret = [] for s in settingsList: - if s.getCategory() == category and (subCategory is None or s.getSubCategory() == subCategory): + if s.getCategory() == category and (subCategory is None or s.getSubCategory() == subCategory) and s.checkConditions(): ret.append(s) return ret @@ -741,6 +756,8 @@ def getAlterationFileContents(filename, extruderCount = 1): prefix = '' postfix = '' alterationContents = getAlterationFile(filename) + if getPreference('gcode_flavor') == 'UltiGCode': + return '' if filename == 'start.gcode': if extruderCount > 1: alterationContents = getAlterationFile("start%d.gcode" % (extruderCount)) diff --git a/Cura/util/sliceEngine.py b/Cura/util/sliceEngine.py index 9a5db78f..92a63fba 100644 --- a/Cura/util/sliceEngine.py +++ b/Cura/util/sliceEngine.py @@ -298,6 +298,8 @@ class Slicer(object): if settings['layerThickness'] <= 0: settings['layerThickness'] = 1000 + if profile.getPreference('gcode_flavor') == 'UltiGCode': + settings['gcodeFlavor'] = 1 return settings def _runSliceProcess(self, cmdList):