chiark / gitweb /
Merge tag '15.01-RC7' into upstream
authorYouness Alaoui <kakaroto@kakaroto.homelinux.net>
Fri, 6 Mar 2015 17:31:47 +0000 (12:31 -0500)
committerYouness Alaoui <kakaroto@kakaroto.homelinux.net>
Fri, 6 Mar 2015 17:31:47 +0000 (12:31 -0500)
Conflicts:
Cura/gui/firmwareInstall.py
Cura/gui/mainWindow.py
Cura/gui/sceneView.py
Cura/util/profile.py

1  2 
Cura/gui/configWizard.py
Cura/gui/firmwareInstall.py
Cura/gui/mainWindow.py
Cura/gui/sceneView.py
Cura/util/profile.py
package.sh

index dfa1e003f42c562d4cc978f699308195c39d44b0,f7800911850f5534faae10a4530af41793c82fd8..a4fb81ca01d3527994ef39a6d8afb31de39bb4ec
@@@ -386,15 -418,13 +386,19 @@@ class MachineSelectPage(InfoPage)
                super(MachineSelectPage, self).__init__(parent, _("Select your machine"))
                self.AddText(_("What kind of machine do you have:"))
  
 -              self.Ultimaker2Radio = self.AddRadioButton("Ultimaker2", style=wx.RB_GROUP)
 -              self.Ultimaker2Radio.SetValue(True)
 +              self.LulzbotMiniRadio = self.AddRadioButton("LulzBot Mini", style=wx.RB_GROUP)
 +              self.LulzbotMiniRadio.Bind(wx.EVT_RADIOBUTTON, self.OnLulzbotSelect)
 +              self.LulzbotMiniRadio.SetValue(True)
 +              self.LulzbotTaz5Radio = self.AddRadioButton("LulzBot TAZ 5")
 +              self.LulzbotTaz5Radio.Bind(wx.EVT_RADIOBUTTON, self.OnLulzbotSelect)
 +              self.LulzbotTaz4Radio = self.AddRadioButton("LulzBot TAZ 4")
 +              self.LulzbotTaz4Radio.Bind(wx.EVT_RADIOBUTTON, self.OnLulzbotSelect)
 +              self.Ultimaker2Radio = self.AddRadioButton("Ultimaker2")
                self.Ultimaker2Radio.Bind(wx.EVT_RADIOBUTTON, self.OnUltimaker2Select)
+               self.Ultimaker2ExtRadio = self.AddRadioButton("Ultimaker2extended")
+               self.Ultimaker2ExtRadio.Bind(wx.EVT_RADIOBUTTON, self.OnUltimaker2Select)
+               self.Ultimaker2GoRadio = self.AddRadioButton("Ultimaker2go")
+               self.Ultimaker2GoRadio.Bind(wx.EVT_RADIOBUTTON, self.OnUltimaker2Select)
                self.UltimakerRadio = self.AddRadioButton("Ultimaker Original")
                self.UltimakerRadio.Bind(wx.EVT_RADIOBUTTON, self.OnUltimakerSelect)
                self.UltimakerOPRadio = self.AddRadioButton("Ultimaker Original+")
index 4dd751e709d42e57053b5f2617aef8bdb6b328ea,0b101c82a4fde09d5489f79115cf310fef71041e..03a2d693b50ce84cdc6a2a13d3baa7cf2866515b
@@@ -43,15 -42,21 +42,23 @@@ def getDefaultFirmware(machineIndex = N
                        name += '-dual'
                return resources.getPathForFirmware(name + '.hex')
  
-       if profile.getMachineSetting('machine_type', machineIndex) == 'ultimaker2':
-               if profile.getMachineSettingFloat('extruder_amount', machineIndex) > 2:
+       if machine_type == 'ultimaker2':
+               if extruders > 2:
                        return None
-               if profile.getMachineSettingFloat('extruder_amount', machineIndex) == 2:
+               if extruders > 1:
                        return resources.getPathForFirmware("MarlinUltimaker2-dual.hex")
                return resources.getPathForFirmware("MarlinUltimaker2.hex")
-       if profile.getMachineSetting('machine_type', machineIndex) == 'lulzbot_mini':
++      if machine_type == 'lulzbot_mini':
 +              return resources.getPathForFirmware("marlin_mini_2014Q4.hex")
-       if profile.getMachineSetting('machine_type', machineIndex) == 'Witbox':
+       if machine_type == 'ultimaker2go':
+               return resources.getPathForFirmware("MarlinUltimaker2go.hex")
+       if machine_type == 'ultimaker2extended':
+               if extruders > 2:
+                       return None
+               if extruders > 1:
+                       return resources.getPathForFirmware("MarlinUltimaker2extended-dual.hex")
+               return resources.getPathForFirmware("MarlinUltimaker2extended.hex")
+       if machine_type == 'Witbox':
                return resources.getPathForFirmware("MarlinWitbox.hex")
        return None
  
index 16c215c898f63c55e24e8c714b6c8be0ec23ad77,cc44fb235a6e454291e935f6f45a137551007653..9808ae25658adc38085edd91a47e235cfea18192
@@@ -373,16 -369,9 +373,13 @@@ class mainWindow(wx.Frame)
                        # Enabled sash
                        self.splitter.SetSashSize(4)
                self.defaultFirmwareInstallMenuItem.Enable(firmwareInstall.getDefaultFirmware() is not None)
-               if profile.getMachineSetting('machine_type') == 'ultimaker2' or \
-                  profile.getMachineSetting('machine_type') == 'lulzbot_mini' or \
-                  profile.getMachineSetting('machine_type') == 'lulzbot_TAZ_4' or \
-                  profile.getMachineSetting('machine_type') == 'lulzbot_TAZ_5' or \
-                  profile.getMachineSetting('machine_type') == 'lulzbot_TAZ':
 -              if profile.getMachineSetting('machine_type').startswith('ultimaker2'):
++              if profile.getMachineSetting('machine_type').startswith('ultimaker2') or \
++                 profile.getMachineSetting('machine_type').startswith('lulzbot_'):
                        self.bedLevelWizardMenuItem.Enable(False)
                        self.headOffsetWizardMenuItem.Enable(False)
 +              else:
 +                      self.bedLevelWizardMenuItem.Enable(True)
 +                      self.headOffsetWizardMenuItem.Enable(False)
                if int(profile.getMachineSetting('extruder_amount')) < 2:
                        self.headOffsetWizardMenuItem.Enable(False)
                self.scene.updateProfileToControls()
index 2b1ac3c65a9e02a89aad0466d80bcb4106d8ab4e,799e92c67c08b98e28b9a049391d0693f75d92b5..3d5bfa280f18f7cf16923b36706c6fd868f7debe
@@@ -1276,23 -1238,53 +1278,54 @@@ class SceneView(openglGui.glGuiPanel)
  
                size = [profile.getMachineSettingFloat('machine_width'), profile.getMachineSettingFloat('machine_depth'), profile.getMachineSettingFloat('machine_height')]
  
-               machine = profile.getMachineSetting('machine_type')
-       
 -              machine_type = profile.getMachineSetting('machine_type')
 +              #Due to NC licensing of the stl files, temporarily removing platform mesh loading for Ultimaker and Witbox
-               '''if machine.startswith('ultimaker'):
-                       if machine not in self._platformMesh:
-                               meshes = meshLoader.loadMeshes(resources.getPathForMesh(machine + '_platform.stl'))
++              '''machine_type = profile.getMachineSetting('machine_type')
+               if machine_type not in self._platformMesh:
+                       self._platformMesh[machine_type] = None
+                       filename = None
+                       texture_name = None
+                       offset = [0,0,0]
+                       texture_offset = [0,0,0]
+                       texture_scale = 1.0
+                       if machine_type == 'ultimaker2' or machine_type == 'ultimaker2extended':
+                               filename = resources.getPathForMesh('ultimaker2_platform.stl')
+                               offset = [0,-37,145]
+                               texture_name = 'Ultimaker2backplate.png'
+                               texture_offset = [0,150,-5]
+                       elif machine_type == 'ultimaker2go':
+                               filename = resources.getPathForMesh('ultimaker2go_platform.stl')
+                               offset = [0,-42,145]
+                               texture_offset = [0,105,-5]
+                               texture_name = 'Ultimaker2backplate.png'
+                               texture_scale = 0.9
+                       elif machine_type == 'ultimaker_plus':
+                               filename = resources.getPathForMesh('ultimaker2_platform.stl')
+                               offset = [0,-37,145]
+                               texture_offset = [0,150,-5]
+                               texture_name = 'UltimakerPlusbackplate.png'
+                       elif machine_type == 'ultimaker':
+                               filename = resources.getPathForMesh('ultimaker_platform.stl')
+                               offset = [0,0,2.5]
+                       elif machine_type == 'Witbox':
+                               filename = resources.getPathForMesh('Witbox_platform.stl')
+                               offset = [0,-37,145]
+                       if filename is not None:
+                               meshes = meshLoader.loadMeshes(filename)
                                if len(meshes) > 0:
-                                       self._platformMesh[machine] = meshes[0]
-                               else:
-                                       self._platformMesh[machine] = None
-                               if machine == 'ultimaker2' or machine == 'ultimaker_plus':
-                                       self._platformMesh[machine]._drawOffset = numpy.array([0,-37,145], numpy.float32)
-                               else:
-                                       self._platformMesh[machine]._drawOffset = numpy.array([0,0,2.5], numpy.float32)
+                                       self._platformMesh[machine_type] = meshes[0]
+                                       self._platformMesh[machine_type]._drawOffset = numpy.array(offset, numpy.float32)
+                                       self._platformMesh[machine_type].texture = None
+                                       if texture_name is not None:
+                                               self._platformMesh[machine_type].texture = openglHelpers.loadGLTexture(texture_name)
+                                               self._platformMesh[machine_type].texture_offset = texture_offset
+                                               self._platformMesh[machine_type].texture_scale = texture_scale
+               if self._platformMesh[machine_type] is not None:
+                       mesh = self._platformMesh[machine_type]
                        glColor4f(1,1,1,0.5)
                        self._objectShader.bind()
-                       self._renderObject(self._platformMesh[machine], False, False)
+                       self._renderObject(mesh, False, False)
                        self._objectShader.unbind()
  
                        #For the Ultimaker 2 render the texture on the back plate to show the Ultimaker2 text.
                                glDisable(GL_TEXTURE_2D)
                                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
                                glPopMatrix()
-                               
-               elif machine.startswith('Witbox'):
-                       if machine not in self._platformMesh:
-                               meshes = meshLoader.loadMeshes(resources.getPathForMesh(machine + '_platform.stl'))
-                               if len(meshes) > 0:
-                                       self._platformMesh[machine] = meshes[0]
-                               else:
-                                       self._platformMesh[machine] = None
-                               if machine == 'Witbox':
-                                       self._platformMesh[machine]._drawOffset = numpy.array([0,-37,145], numpy.float32)
-                       glColor4f(1,1,1,0.5)
-                       self._objectShader.bind()
-                       self._renderObject(self._platformMesh[machine], False, False)
-                       self._objectShader.unbind()
-               '''
-               
 -              else:
 -                      glColor4f(0,0,0,1)
 -                      glLineWidth(3)
 -                      glBegin(GL_LINES)
 -                      glVertex3f(-size[0] / 2, -size[1] / 2, 0)
 -                      glVertex3f(-size[0] / 2, -size[1] / 2, 10)
 -                      glVertex3f(-size[0] / 2, -size[1] / 2, 0)
 -                      glVertex3f(-size[0] / 2+10, -size[1] / 2, 0)
 -                      glVertex3f(-size[0] / 2, -size[1] / 2, 0)
 -                      glVertex3f(-size[0] / 2, -size[1] / 2+10, 0)
 -                      glEnd()
++              else:'''
++              # until glEnd() goes inside the else
 +              glColor4f(0,0,0,1)
 +              glLineWidth(3)
 +              glBegin(GL_LINES)
 +              glVertex3f(-size[0] / 2, -size[1] / 2, 0)
 +              glVertex3f(-size[0] / 2, -size[1] / 2, 10)
 +              glVertex3f(-size[0] / 2, -size[1] / 2, 0)
 +              glVertex3f(-size[0] / 2+10, -size[1] / 2, 0)
 +              glVertex3f(-size[0] / 2, -size[1] / 2, 0)
 +              glVertex3f(-size[0] / 2, -size[1] / 2+10, 0)
 +              glEnd()
  
                glDepthMask(False)
  
index 2351a24b6489f2aa0d736de32ce61030203348cf,86f003053284340823907c86d9f73491cda2d216..914245e30434f191e0c8b023f84548a98a8c769b
@@@ -179,15 -179,15 +179,15 @@@ setting('layer_height',              0.
  setting('wall_thickness',            0.8, float, 'basic',    _('Quality')).setRange(0.0).setLabel(_("Shell thickness (mm)"), _("Thickness of the outside shell in the horizontal direction.\nThis is used in combination with the nozzle size to define the number\nof perimeter lines and the thickness of those perimeter lines."))
  setting('retraction_enable',        True, bool,  'basic',    _('Quality')).setExpertSubCategory(_('Retraction')).setLabel(_("Enable retraction"), _("Retract the filament when the nozzle is moving over a none-printed area. Details about the retraction can be configured in the advanced tab."))
  setting('solid_layer_thickness',     0.6, float, 'basic',    _('Fill')).setRange(0).setLabel(_("Bottom/Top thickness (mm)"), _("This controls the thickness of the bottom and top layers, the amount of solid layers put down is calculated by the layer thickness and this value.\nHaving this value a multiple of the layer thickness makes sense. And keep it near your wall thickness to make an evenly strong part."))
 -setting('fill_density',               20, float, 'basic',    _('Fill')).setExpertSubCategory(_('Infill')).setRange(0, 100).setLabel(_("Fill Density (%)"), _("This controls how densely filled the insides of your print will be. For a solid part use 100%, for an empty part use 0%. A value around 20% is usually enough.\nThis won't affect the outside of the print and only adjusts how strong the part becomes."))
 +setting('fill_density',               20, float, 'basic',    _('Fill')).setExpertSubCategory(_('Infill')).setRange(0, 100).setLabel(_("Fill Density (%)"), _("This controls how densely filled the insides of your print will be. For a solid part use 100%, for an empty part use 0%. A value around 20% is usually enough.\nThis will not affect the outside of the print and only adjusts how strong the part becomes."))
  setting('nozzle_size',               0.4, float, 'advanced', _('Machine')).setRange(0.1,10).setLabel(_("Nozzle size (mm)"), _("The nozzle size is very important, this is used to calculate the line width of the infill, and used to calculate the amount of outside wall lines and thickness for the wall thickness you entered in the print settings."))
 -setting('print_speed',                50, float, 'basic',    _('Speed and Temperature')).setRange(1).setLabel(_("Print speed (mm/s)"), _("Speed at which printing happens. A well adjusted Ultimaker can reach 150mm/s, but for good quality prints you want to print slower. Printing speed depends on a lot of factors. So you will be experimenting with optimal settings for this."))
 -setting('print_temperature',         210, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Printing temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_temperature2',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("2nd nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_temperature3',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("3th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_temperature4',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("4th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_bed_temperature',      70, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Bed temperature (C)"), _("Temperature used for the heated printer bed. Set at 0 to pre-heat yourself."))
 -setting('support',                'None', [_('None'), _('Touching buildplate'), _('Everywhere')], 'basic', _('Support')).setExpertSubCategory(_('Support')).setLabel(_("Support type"), _("Type of support structure build.\n\"Touching buildplate\" is the most commonly used support setting.\n\nNone does not do any support.\nTouching buildplate only creates support where the support structure will touch the build platform.\nEverywhere creates support even on top of parts of the model."))
 +setting('print_speed',                50, float, 'basic',    _('Speed and Temperature')).setRange(1).setLabel(_("Print speed (mm/s)"), _("Speed at which printing happens. A well adjusted 3D printer can reach high speeds. However, for high quality prints slower speeds are required. Printing speed depends on a lot of factors. You will be experimenting with optimal settings for this."))
- setting('print_temperature',         220, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Printing temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
++setting('print_temperature',         210, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Printing temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_temperature2',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("2nd nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_temperature3',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("3th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_temperature4',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("4th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_bed_temperature',      70, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Bed temperature (C)"), _("Temperature used for the heated printer bed. Set at 0 to pre-heat yourself.\nFor PLA 60C is recommended.\nFor ABS and HIPS 110C is recommended."))
 +setting('support',                'None', [_('None'), _('Touching buildplate'), _('Everywhere')], 'basic', _('Support')).setExpertSubCategory(_('Support')).setLabel(_("Support type"), _("Type of support structure build.\n\"Support is useful when a model has severe over hangs. Using this option does require some finishing of the print, including removing the support material.\n\"Touching buildplate\" is the most commonly used support setting.\n\nNone does not do any support.\nTouching buildplate only creates support where the support structure will touch the build platform.\nEverywhere creates support even on top of parts of the model."))
  setting('platform_adhesion',      'None', [_('None'), _('Brim'), _('Raft')], 'basic', _('Support')).setExpertSubCategory([_('Skirt'), _('Brim'), _('Raft')]).setLabel(_("Platform adhesion type"), _("Different options that help in preventing corners from lifting due to warping.\nBrim adds a single layer thick flat area around your object which is easy to cut off afterwards, and it is the recommended option.\nRaft adds a thick raster below the object and a thin interface between this and your object.\n(Note that enabling the brim or raft disables the skirt)"))
  setting('support_dual_extrusion',  'Both', [_('Both'), _('First extruder'), _('Second extruder')], 'basic', _('Support')).setLabel(_("Support dual extrusion"), _("Which extruder to use for support material, for break-away support you can use both extruders.\nBut if one of the materials is more expensive then the other you could select an extruder to use for support material. This causes more extruder switches.\nYou can also use the 2nd extruder for soluble support materials."))
  setting('wipe_tower',              False, bool,  'basic',    _('Dual extrusion')).setLabel(_("Wipe&prime tower"), _("The wipe-tower is a tower printed on every layer when switching between nozzles.\nThe old nozzle is wiped off on the tower before the new nozzle is used to print the 2nd color."))
diff --cc package.sh
index 7330f7ac6e94e92f73a0360ef18b4c692481276e,c1dd3947e6bf2d7b0a9ad2a0e1bbe8ded04b6662..1969b9deb7e471bedf477665d634e9b11b32e975
@@@ -19,15 -19,9 +19,15 @@@ BUILD_TARGET=${1:-none
  ##Do we need to create the final archive
  ARCHIVE_FOR_DISTRIBUTION=1
  ##Which version name are we appending to the final archive
- export BUILD_NAME=15.01-RC6
+ export BUILD_NAME=15.01-RC7
  TARGET_DIR=Cura-${BUILD_NAME}-${BUILD_TARGET}
  
 +##Revision
 +export REVISION=1.19
 +
 +##Git commit
 +GIT_HASH=$(git rev-parse --short=4 HEAD)
 +
  ##Which versions of external programs to use
  WIN_PORTABLE_PY_VERSION=2.7.2.1