From 9c91c58c6e6cab99f4c854643c7d1acee5650fa6 Mon Sep 17 00:00:00 2001 From: Daid Date: Sun, 29 Apr 2012 11:35:36 +0200 Subject: [PATCH] Move extruder offset and extruder head size to preferences. --- Cura/gui/preferencesDialog.py | 16 ++++++++++++++++ Cura/gui/projectPlanner.py | 26 +++++++++++++++----------- Cura/gui/sliceProgessPanel.py | 9 ++++++--- Cura/util/profile.py | 11 +++++++++++ 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/Cura/gui/preferencesDialog.py b/Cura/gui/preferencesDialog.py index ec315979..41bded92 100644 --- a/Cura/gui/preferencesDialog.py +++ b/Cura/gui/preferencesDialog.py @@ -7,6 +7,7 @@ import ConfigParser from gui import configBase from gui import validators from gui import machineCom +from util import profile class preferencesDialog(configBase.configWindowBase): def __init__(self, parent): @@ -14,6 +15,8 @@ class preferencesDialog(configBase.configWindowBase): wx.EVT_CLOSE(self, self.OnClose) + self.oldExtruderAmount = int(profile.getPreference('extruder_amount')) + left, right, main = self.CreateConfigPanel(self) configBase.TitleRow(left, 'Machine settings') c = configBase.SettingRow(left, 'Steps per E', 'steps_per_e', '0', 'Amount of steps per mm filament extrusion', type = 'preference') @@ -25,6 +28,13 @@ class preferencesDialog(configBase.configWindowBase): c = configBase.SettingRow(left, 'Machine height (mm)', 'machine_height', '200', 'Size of the machine in mm', type = 'preference') validators.validFloat(c, 10.0) c = configBase.SettingRow(left, 'Extruder count', 'extruder_amount', ['1', '2', '3', '4'], 'Amount of extruders in your machine.', type = 'preference') + + for i in xrange(1, self.oldExtruderAmount): + configBase.TitleRow(left, 'Extruder %d' % (i+1)) + c = configBase.SettingRow(left, 'Offset X', 'extruder_offset_x%d' % (i), '0.0', 'The offset of your secondary extruder compared to the primary.', type = 'preference') + validators.validFloat(c) + c = configBase.SettingRow(left, 'Offset Y', 'extruder_offset_y%d' % (i), '0.0', 'The offset of your secondary extruder compared to the primary.', type = 'preference') + validators.validFloat(c) configBase.TitleRow(left, 'Filament settings') c = configBase.SettingRow(left, 'Filament density (kg/m3)', 'filament_density', '1300', 'Weight of the filament per m3. Around 1300 for PLA. And around 1040 for ABS. This value is used to estimate the weight if the filament used for the print.', type = 'preference') @@ -42,10 +52,16 @@ class preferencesDialog(configBase.configWindowBase): #c = configBase.SettingRow(left, 'Slicer selection', 'slicer', ['Cura (Skeinforge based)', 'Slic3r'], 'Which slicer to use to slice objects. Usually the Cura engine produces the best results. But Slic3r is developing fast and is faster with slicing.', type = 'preference') c = configBase.SettingRow(left, 'Save profile on slice', 'save_profile', False, 'When slicing save the profile as [stl_file]_profile.ini next to the model.', type = 'preference') + self.okButton = wx.Button(left, -1, 'Ok') + left.GetSizer().Add(self.okButton, (left.GetSizer().GetRows(), 1)) + self.okButton.Bind(wx.EVT_BUTTON, self.OnClose) + self.MakeModal(True) main.Fit() self.Fit() def OnClose(self, e): + if self.oldExtruderAmount != int(profile.getPreference('extruder_amount')): + wx.MessageBox('After changing the amount of extruders you need to restart Cura for full effect.', 'Extruder amount warning.', wx.OK | wx.ICON_INFORMATION) self.MakeModal(False) self.Destroy() diff --git a/Cura/gui/projectPlanner.py b/Cura/gui/projectPlanner.py index 538ea47c..448b31b2 100644 --- a/Cura/gui/projectPlanner.py +++ b/Cura/gui/projectPlanner.py @@ -40,10 +40,14 @@ class projectPlanner(wx.Frame): self.selection = None self.machineSize = util3d.Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height'))) - self.headSizeMin = util3d.Vector3(70,18,0) - self.headSizeMax = util3d.Vector3(18,35,0) + self.headSizeMin = util3d.Vector3(float(profile.getPreference('extruder_head_size_min_x')), float(profile.getPreference('extruder_head_size_min_y')),0) + self.headSizeMax = util3d.Vector3(float(profile.getPreference('extruder_head_size_max_x')), float(profile.getPreference('extruder_head_size_max_y')),0) - self.extruderOffset = [util3d.Vector3(0,0,0), util3d.Vector3(-22,0,0), util3d.Vector3(0,0,0), util3d.Vector3(0,0,0)] + self.extruderOffset = [ + util3d.Vector3(0,0,0), + util3d.Vector3(float(profile.getPreference('extruder_offset_x1')), float(profile.getPreference('extruder_offset_y1')), 0), + util3d.Vector3(float(profile.getPreference('extruder_offset_x2')), float(profile.getPreference('extruder_offset_y2')), 0), + util3d.Vector3(float(profile.getPreference('extruder_offset_x3')), float(profile.getPreference('extruder_offset_y3')), 0)] self.toolbar = toolbarUtil.Toolbar(self) @@ -467,14 +471,14 @@ class PreviewGLCanvas(glcanvas.GLCanvas): if item != None: item.centerX += float(e.GetX() - self.oldX) * self.zoom / self.GetSize().GetHeight() * 2 item.centerY -= float(e.GetY() - self.oldY) * self.zoom / self.GetSize().GetHeight() * 2 - if item.centerX < -item.getMinimum().x * item.scale: - item.centerX = -item.getMinimum().x * item.scale - if item.centerY < -item.getMinimum().y * item.scale: - item.centerY = -item.getMinimum().y * item.scale - if item.centerX > self.parent.machineSize.x - item.getMaximum().x * item.scale: - item.centerX = self.parent.machineSize.x - item.getMaximum().x * item.scale - if item.centerY > self.parent.machineSize.y - item.getMaximum().y * item.scale: - item.centerY = self.parent.machineSize.y - item.getMaximum().y * item.scale + if item.centerX < -item.getMinimum().x * item.scale + self.parent.extruderOffset[item.extruder].x: + item.centerX = -item.getMinimum().x * item.scale + self.parent.extruderOffset[item.extruder].x + if item.centerY < -item.getMinimum().y * item.scale + self.parent.extruderOffset[item.extruder].y: + item.centerY = -item.getMinimum().y * item.scale + self.parent.extruderOffset[item.extruder].y + if item.centerX > self.parent.machineSize.x + self.parent.extruderOffset[item.extruder].x - item.getMaximum().x * item.scale: + item.centerX = self.parent.machineSize.x + self.parent.extruderOffset[item.extruder].x - item.getMaximum().x * item.scale + if item.centerY > self.parent.machineSize.y + self.parent.extruderOffset[item.extruder].y - item.getMaximum().y * item.scale: + item.centerY = self.parent.machineSize.y + self.parent.extruderOffset[item.extruder].y - item.getMaximum().y * item.scale self.Refresh() else: self.allowDrag = False diff --git a/Cura/gui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.py index 5923693e..b56fc5ed 100644 --- a/Cura/gui/sliceProgessPanel.py +++ b/Cura/gui/sliceProgessPanel.py @@ -60,11 +60,13 @@ class sliceProgessPanel(wx.Panel): cmdList = [] oldProfile = profile.getGlobalProfileString() for filename in self.filelist: - print filename, self.filelist.index(filename) - if self.filelist.index(filename) > 0: + idx = self.filelist.index(filename) + print filename, idx + if idx > 0: profile.putProfileSetting('fan_enabled', 'False') profile.putProfileSetting('skirt_line_count', '0') - profile.putProfileSetting('machine_center_x', profile.getProfileSettingFloat('machine_center_x') + 22) + profile.putProfileSetting('machine_center_x', profile.getProfileSettingFloat('machine_center_x') + float(profile.getPreference('extruder_offset_x%d' % (idx)))) + profile.putProfileSetting('machine_center_y', profile.getProfileSettingFloat('machine_center_y') + float(profile.getPreference('extruder_offset_y%d' % (idx)))) if len(self.filelist) > 1: profile.putProfileSetting('add_start_end_gcode', 'False') profile.putProfileSetting('gcode_extension', 'multi_extrude_tmp') @@ -197,6 +199,7 @@ class WorkerThread(threading.Thread): resultFile.write(';EXTRUDER:%d\n' % (nextExtruder)) if nextExtruder != currentExtruder: resultFile.write("G1 E-5 F5000\n") + resultFile.write("G92 E0\n") resultFile.write("T%d\n" % (nextExtruder)) resultFile.write("G1 E5 F5000\n") resultFile.write("G92 E0\n") diff --git a/Cura/util/profile.py b/Cura/util/profile.py index b7450a6c..046617cb 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -128,6 +128,12 @@ preferencesDefaultSettings = { 'machine_depth': '205', 'machine_height': '200', 'extruder_amount': '1', + 'extruder_offset_x1': '-22.0', + 'extruder_offset_y1': '0.0', + 'extruder_offset_x2': '0.0', + 'extruder_offset_y2': '0.0', + 'extruder_offset_x3': '0.0', + 'extruder_offset_y3': '0.0', 'filament_density': '1300', 'steps_per_e': '0', 'serial_port': 'AUTO', @@ -136,6 +142,11 @@ preferencesDefaultSettings = { 'save_profile': 'False', 'filament_cost_kg': '0', 'filament_cost_meter': '0', + + 'extruder_head_size_min_x': '70.0', + 'extruder_head_size_min_y': '18.0', + 'extruder_head_size_max_x': '18.0', + 'extruder_head_size_max_y': '35.0', } ######################################################### -- 2.30.2