chiark / gitweb /
Merge pull request #1068 from pmsimard/15.01_RC6_SingleLayerView
authordaid <daid303@gmail.com>
Wed, 7 Jan 2015 13:53:58 +0000 (14:53 +0100)
committerdaid <daid303@gmail.com>
Wed, 7 Jan 2015 13:53:58 +0000 (14:53 +0100)
Single layer view

21 files changed:
Cura/gui/alterationPanel.py
Cura/gui/configWizard.py
Cura/gui/firmwareInstall.py
Cura/gui/mainWindow.py
Cura/gui/preferencesDialog.py
Cura/gui/sceneView.py
Cura/util/objectScene.py
Cura/util/profile.py
Cura/util/resources.py
package.sh
resources/images/Ultimaker2backplate.png
resources/images/UltimakerPlusbackplate.png
resources/locale/ko/LC_MESSAGES/Cura.mo
resources/locale/ko/LC_MESSAGES/Cura.po
resources/machine_profiles/Ord.ini [new file with mode: 0644]
resources/machine_profiles/Rigid3D.ini
resources/machine_profiles/julia.ini [new file with mode: 0644]
resources/meshes/ultimaker2go_platform.stl [new file with mode: 0644]
resources/meshes/ultimaker_plus_platform.stl [deleted file]
resources/quickprint/materials/2_abs.ini
resources/quickprint/materials/3_pet.ini [new file with mode: 0644]

index d7a6c577d361cf7ecfe243f61b1c5c9980ca6986..37c6e36f38c5465c7a30a40163dcfc307a84003d 100644 (file)
@@ -18,6 +18,8 @@ class alterationPanel(wx.Panel):
                        self.alterationFileList += ['start3.gcode', 'end3.gcode']
                if int(profile.getMachineSetting('extruder_amount')) > 3:
                        self.alterationFileList += ['start4.gcode', 'end4.gcode']
+               if int(profile.getMachineSetting('extruder_amount')) > 4:
+                       self.alterationFileList += ['start5.gcode', 'end5.gcode']
                self.currentFile = None
 
                self.textArea = gcodeTextArea.GcodeTextArea(self)
index 658abaaae1673356da2091c91059bc621012e69f..f7800911850f5534faae10a4530af41793c82fd8 100644 (file)
@@ -421,6 +421,10 @@ class MachineSelectPage(InfoPage):
                self.Ultimaker2Radio = self.AddRadioButton("Ultimaker2", style=wx.RB_GROUP)
                self.Ultimaker2Radio.SetValue(True)
                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+")
@@ -464,14 +468,29 @@ class MachineSelectPage(InfoPage):
 
        def StoreData(self):
                profile.putProfileSetting('retraction_enable', 'True')
-               if self.Ultimaker2Radio.GetValue():
-                       profile.putMachineSetting('machine_width', '230')
-                       profile.putMachineSetting('machine_depth', '225')
-                       profile.putMachineSetting('machine_height', '205')
-                       profile.putMachineSetting('machine_name', 'ultimaker2')
-                       profile.putMachineSetting('machine_type', 'ultimaker2')
+               if self.Ultimaker2Radio.GetValue() or self.Ultimaker2GoRadio.GetValue() or self.Ultimaker2ExtRadio.GetValue():
+                       if self.Ultimaker2Radio.GetValue():
+                               profile.putMachineSetting('machine_width', '230')
+                               profile.putMachineSetting('machine_depth', '225')
+                               profile.putMachineSetting('machine_height', '205')
+                               profile.putMachineSetting('machine_name', 'ultimaker2')
+                               profile.putMachineSetting('machine_type', 'ultimaker2')
+                               profile.putMachineSetting('has_heated_bed', 'True')
+                       if self.Ultimaker2GoRadio.GetValue():
+                               profile.putMachineSetting('machine_width', '120')
+                               profile.putMachineSetting('machine_depth', '120')
+                               profile.putMachineSetting('machine_height', '115')
+                               profile.putMachineSetting('machine_name', 'ultimaker2go')
+                               profile.putMachineSetting('machine_type', 'ultimaker2go')
+                               profile.putMachineSetting('has_heated_bed', 'False')
+                       if self.Ultimaker2ExtRadio.GetValue():
+                               profile.putMachineSetting('machine_width', '230')
+                               profile.putMachineSetting('machine_depth', '225')
+                               profile.putMachineSetting('machine_height', '305')
+                               profile.putMachineSetting('machine_name', 'ultimaker2extended')
+                               profile.putMachineSetting('machine_type', 'ultimaker2extended')
+                               profile.putMachineSetting('has_heated_bed', 'False')
                        profile.putMachineSetting('machine_center_is_zero', 'False')
-                       profile.putMachineSetting('has_heated_bed', 'True')
                        profile.putMachineSetting('gcode_flavor', 'UltiGCode')
                        profile.putMachineSetting('extruder_head_size_min_x', '40.0')
                        profile.putMachineSetting('extruder_head_size_min_y', '10.0')
index 2ee983f2c666dae093c4a407b0706bf91d550752..0b101c82a4fde09d5489f79115cf310fef71041e 100644 (file)
@@ -17,39 +17,46 @@ from Cura.util import profile
 from Cura.util import resources
 
 def getDefaultFirmware(machineIndex = None):
-       if profile.getMachineSetting('machine_type', machineIndex) == 'ultimaker':
+       machine_type = profile.getMachineSetting('machine_type', machineIndex)
+       extruders = profile.getMachineSettingFloat('extruder_amount', machineIndex)
+       heated_bed = profile.getMachineSetting('has_heated_bed', machineIndex) == 'True'
+       baudrate = 250000
+       if sys.platform.startswith('linux'):
+               baudrate = 115200
+       if machine_type == 'ultimaker':
                name = 'MarlinUltimaker'
-               if profile.getMachineSettingFloat('extruder_amount', machineIndex) > 2:
+               if extruders > 2:
                        return None
-               if profile.getMachineSetting('has_heated_bed', machineIndex) == 'True':
+               if heated_bed:
                        name += '-HBK'
-               if sys.platform.startswith('linux'):
-                       name += '-115200'
-               else:
-                       name += '-250000'
-               if profile.getMachineSettingFloat('extruder_amount', machineIndex) > 1:
+               name += '-%d' % (baudrate)
+               if extruders > 1:
                        name += '-dual'
                return resources.getPathForFirmware(name + '.hex')
 
-       if profile.getMachineSetting('machine_type', machineIndex) == 'ultimaker_plus':
-               name = 'MarlinUltimaker-UMOP'
-               if profile.getMachineSettingFloat('extruder_amount', machineIndex) > 2:
+       if machine_type == 'ultimaker_plus':
+               name = 'MarlinUltimaker-UMOP-%d' % (baudrate)
+               if extruders > 2:
                        return None
-               if sys.platform.startswith('linux'):
-                       name += '-115200'
-               else:
-                       name += '-250000'
-               if profile.getMachineSettingFloat('extruder_amount', machineIndex) > 1:
+               if extruders > 1:
                        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) == '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 0eb99862bb46514bb610c075842f8f6a5562fc28..cc44fb235a6e454291e935f6f45a137551007653 100644 (file)
@@ -369,7 +369,7 @@ class mainWindow(wx.Frame):
                        # Enabled sash
                        self.splitter.SetSashSize(4)
                self.defaultFirmwareInstallMenuItem.Enable(firmwareInstall.getDefaultFirmware() is not None)
-               if profile.getMachineSetting('machine_type') == 'ultimaker2':
+               if profile.getMachineSetting('machine_type').startswith('ultimaker2'):
                        self.bedLevelWizardMenuItem.Enable(False)
                        self.headOffsetWizardMenuItem.Enable(False)
                if int(profile.getMachineSetting('extruder_amount')) < 2:
index 9aed77822117fe2e24d1d087839e76ef6956862c..3f9acd21ac199389a6ae99b2cb4fc6ced873c7f8 100644 (file)
@@ -45,10 +45,11 @@ class preferencesDialog(wx.Dialog):
                #configBase.TitleRow(right, 'Slicer settings')
                #configBase.SettingRow(right, 'save_profile')
 
-               #configBase.TitleRow(right, 'SD Card settings')
-
-               configBase.TitleRow(right, _("Cura settings"))
+               configBase.TitleRow(right, 'SD Card settings')
                configBase.SettingRow(right, 'auto_detect_sd')
+               configBase.SettingRow(right, 'sdcard_rootfolder')
+               
+               configBase.TitleRow(right, _("Cura settings"))
                configBase.SettingRow(right, 'check_for_updates')
                configBase.SettingRow(right, 'submit_slice_information')
 
index bfa742779c0ca182499207c8d8eebe31b6dba0c9..dda4d433e0d134db45636ecffa7d9a0463ec92b2 100644 (file)
@@ -51,6 +51,7 @@ class SceneView(openglGui.glGuiPanel):
                self._viewTarget = numpy.array([0,0,0], numpy.float32)
                self._animView = None
                self._animZoom = None
+               self._lastObjectSink = None
                self._platformMesh = {}
                self._platformTexture = None
                self._isSimpleMode = True
@@ -253,6 +254,19 @@ class SceneView(openglGui.glGuiPanel):
                                else:
                                        drive = drives[0]
                                filename = self._scene._objectList[0].getName() + profile.getGCodeExtension()
+                               
+                               #check if the file is part of the root folder. If so, create folders on sd card to get the same folder hierarchy.
+                               repDir = profile.getPreference("sdcard_rootfolder")
+                               if os.path.exists(repDir) and os.path.isdir(repDir):
+                                       repDir = os.path.abspath(repDir)
+                                       originFilename = os.path.abspath( self._scene._objectList[0].getOriginFilename() )
+                                       if os.path.dirname(originFilename).startswith(repDir):
+                                               filename = os.path.splitext(originFilename[len(repDir):])[0] + profile.getGCodeExtension()
+                                               sdPath = os.path.dirname(os.path.join( drive[1], filename))
+                                               if not os.path.exists(sdPath):
+                                                       print "Creating replication directory:", sdPath
+                                                       os.makedirs(sdPath)
+
                                threading.Thread(target=self._saveGCode,args=(drive[1] + filename, drive[1])).start()
                        elif connectionGroup is not None:
                                connections = connectionGroup.getAvailableConnections()
@@ -543,6 +557,12 @@ class SceneView(openglGui.glGuiPanel):
                self.sceneUpdated()
 
        def sceneUpdated(self):
+
+               objectSink = profile.getProfileSettingFloat("object_sink")
+               if self._lastObjectSink != objectSink:
+                       self._lastObjectSink = objectSink
+                       self._scene.updateHeadSize()
+
                wx.CallAfter(self._sceneUpdateTimer.Start, 500, True)
                self._engine.abortEngine()
                self._scene.updateSizeOffsets()
@@ -648,6 +668,8 @@ class SceneView(openglGui.glGuiPanel):
                self._objColors[2] = profile.getPreferenceColour('model_colour3')
                self._objColors[3] = profile.getPreferenceColour('model_colour4')
                self._scene.updateMachineDimensions()
+               if self._zoom > numpy.max(self._machineSize) * 3:
+                       self._animZoom = openglGui.animation(self, self._zoom, numpy.max(self._machineSize) * 3, 0.5)
                self.updateModelSettingsToControls()
 
        def updateModelSettingsToControls(self):
@@ -1236,41 +1258,71 @@ class SceneView(openglGui.glGuiPanel):
 
                size = [profile.getMachineSettingFloat('machine_width'), profile.getMachineSettingFloat('machine_depth'), profile.getMachineSettingFloat('machine_height')]
 
-               machine = profile.getMachineSetting('machine_type')
-               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.
-                       if machine == 'ultimaker2' or machine == 'ultimaker_plus':
-                               if not hasattr(self._platformMesh[machine], 'texture'):
-                                       if machine == 'ultimaker2':
-                                               self._platformMesh[machine].texture = openglHelpers.loadGLTexture('Ultimaker2backplate.png')
-                                       else:
-                                               self._platformMesh[machine].texture = openglHelpers.loadGLTexture('UltimakerPlusbackplate.png')
-                               glBindTexture(GL_TEXTURE_2D, self._platformMesh[machine].texture)
+                       if mesh.texture is not None:
+                               glBindTexture(GL_TEXTURE_2D, mesh.texture)
                                glEnable(GL_TEXTURE_2D)
                                glPushMatrix()
                                glColor4f(1,1,1,1)
 
-                               glTranslate(0,150,-5)
+                               glTranslate(mesh.texture_offset[0], mesh.texture_offset[1], mesh.texture_offset[2])
+                               glScalef(mesh.texture_scale, mesh.texture_scale, mesh.texture_scale)
                                h = 50
                                d = 8
                                w = 100
                                glEnable(GL_BLEND)
-                               glBlendFunc(GL_DST_COLOR, GL_ZERO)
+                               glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA)
+                               glEnable(GL_ALPHA_TEST)
+                               glAlphaFunc(GL_GREATER, 0.0)
                                glBegin(GL_QUADS)
                                glTexCoord2f(1, 0)
                                glVertex3f( w, 0, h)
@@ -1293,20 +1345,6 @@ class SceneView(openglGui.glGuiPanel):
                                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)
index dae3a6becee45c2f78aaf20032050797c5d2a576..29a52c051fa8a05ea103315a669a537e4dbb6d9f 100644 (file)
@@ -154,6 +154,7 @@ class Scene(object):
                yMin = profile.getMachineSettingFloat('extruder_head_size_min_y')
                yMax = profile.getMachineSettingFloat('extruder_head_size_max_y')
                gantryHeight = profile.getMachineSettingFloat('extruder_head_size_height')
+               objectSink = profile.getProfileSettingFloat("object_sink")
 
                self._leftToRight = xMin < xMax
                self._frontToBack = yMin < yMax
@@ -162,7 +163,7 @@ class Scene(object):
                self._gantryHeight = gantryHeight
                self._oneAtATime = self._gantryHeight > 0 and profile.getPreference('oneAtATime') == 'True'
                for obj in self._objectList:
-                       if obj.getSize()[2] > self._gantryHeight:
+                       if obj.getSize()[2] - objectSink > self._gantryHeight:
                                self._oneAtATime = False
 
                headArea = numpy.array([[-xMin,-yMin],[ xMax,-yMin],[ xMax, yMax],[-xMin, yMax]], numpy.float32)
@@ -267,8 +268,10 @@ class Scene(object):
                        return polygon.polygonCollision(a._boundaryHull + a.getPosition(), b._boundaryHull + b.getPosition())
 
        def checkPlatform(self, obj):
+               objectSink = profile.getProfileSettingFloat("object_sink")
+
                area = obj._printAreaHull + obj.getPosition()
-               if obj.getSize()[2] > self._machineSize[2]:
+               if obj.getSize()[2] - objectSink > self._machineSize[2]:
                        return False
                if not polygon.fullInside(area, self._machinePolygons[0]):
                        return False
index 691c0571d8b236fc7b2e536ef8ca9492602f6c8e..ffd7e966e938bf47a89202f1f25149a9cf60884f 100644 (file)
@@ -182,10 +182,11 @@ setting('solid_layer_thickness',     0.6, float, 'basic',    _('Fill')).setRange
 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('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',         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 a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
+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_temperature5',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("5th 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('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)"))
@@ -197,6 +198,7 @@ setting('filament_diameter',        2.85, float, 'basic',    _('Filament')).setR
 setting('filament_diameter2',          0, float, 'basic',    _('Filament')).setRange(0).setLabel(_("Diameter2 (mm)"), _("Diameter of your filament for the 2nd nozzle. Use 0 to use the same diameter as for nozzle 1."))
 setting('filament_diameter3',          0, float, 'basic',    _('Filament')).setRange(0).setLabel(_("Diameter3 (mm)"), _("Diameter of your filament for the 3th nozzle. Use 0 to use the same diameter as for nozzle 1."))
 setting('filament_diameter4',          0, float, 'basic',    _('Filament')).setRange(0).setLabel(_("Diameter4 (mm)"), _("Diameter of your filament for the 4th nozzle. Use 0 to use the same diameter as for nozzle 1."))
+setting('filament_diameter5',          0, float, 'basic',    _('Filament')).setRange(0).setLabel(_("Diameter5 (mm)"), _("Diameter of your filament for the 5th nozzle. Use 0 to use the same diameter as for nozzle 1."))
 setting('filament_flow',            100., float, 'basic',    _('Filament')).setRange(5,300).setLabel(_("Flow (%)"), _("Flow compensation, the amount of material extruded is multiplied by this value"))
 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."))
@@ -485,6 +487,7 @@ setting('save_profile', 'False', bool, 'preference', 'hidden').setLabel(_("Save
 setting('filament_cost_kg', '0', float, 'preference', 'hidden').setLabel(_("Cost (price/kg)"), _("Cost of your filament per kg, to estimate the cost of the final print."))
 setting('filament_cost_meter', '0', float, 'preference', 'hidden').setLabel(_("Cost (price/m)"), _("Cost of your filament per meter, to estimate the cost of the final print."))
 setting('auto_detect_sd', 'True', bool, 'preference', 'hidden').setLabel(_("Auto detect SD card drive"), _("Auto detect the SD card. You can disable this because on some systems external hard-drives or USB sticks are detected as SD card."))
+setting('sdcard_rootfolder', '', str, 'preference', 'hidden').setLabel(_("Base folder to replicate on SD card"), _("The specified folder will be used as a base path. Any gcode generated from object coming from within that folder will be automatically saved on the SD card at the same sub-folder. Any object coming from outside of this path will save the gcode on the root folder of the card."))
 setting('check_for_updates', 'True', bool, 'preference', 'hidden').setLabel(_("Check for updates"), _("Check for newer versions of Cura on startup"))
 setting('submit_slice_information', 'False', bool, 'preference', 'hidden').setLabel(_("Send usage statistics"), _("Submit anonymous usage information to improve future versions of Cura"))
 setting('youmagine_token', '', str, 'preference', 'hidden')
@@ -516,13 +519,15 @@ setting('machine_shape', 'Square', ['Square','Circular'], 'machine', 'hidden').s
 setting('ultimaker_extruder_upgrade', 'False', bool, 'machine', 'hidden')
 setting('has_heated_bed', 'False', bool, 'machine', 'hidden').setLabel(_("Heated bed"), _("If you have an heated bed, this enabled heated bed settings (requires restart)"))
 setting('gcode_flavor', 'RepRap (Marlin/Sprinter)', ['RepRap (Marlin/Sprinter)', 'RepRap (Volumetric)', 'UltiGCode', 'MakerBot', 'BFB', 'Mach3'], 'machine', 'hidden').setLabel(_("GCode Flavor"), _("Flavor of generated GCode.\nRepRap is normal 5D GCode which works on Marlin/Sprinter based firmwares.\nUltiGCode is a variation of the RepRap GCode which puts more settings in the machine instead of the slicer.\nMakerBot GCode has a few changes in the way GCode is generated, but still requires MakerWare to generate to X3G.\nBFB style generates RPM based code.\nMach3 uses A,B,C instead of E for extruders."))
-setting('extruder_amount', '1', ['1','2','3','4'], 'machine', 'hidden').setLabel(_("Extruder count"), _("Amount of extruders in your machine."))
+setting('extruder_amount', '1', ['1','2','3','4','5'], 'machine', 'hidden').setLabel(_("Extruder count"), _("Amount of extruders in your machine."))
 setting('extruder_offset_x1', '0.0', float, 'machine', 'hidden').setLabel(_("Offset X"), _("The offset of your secondary extruder compared to the primary."))
 setting('extruder_offset_y1', '21.6', float, 'machine', 'hidden').setLabel(_("Offset Y"), _("The offset of your secondary extruder compared to the primary."))
 setting('extruder_offset_x2', '0.0', float, 'machine', 'hidden').setLabel(_("Offset X"), _("The offset of your tertiary extruder compared to the primary."))
 setting('extruder_offset_y2', '0.0', float, 'machine', 'hidden').setLabel(_("Offset Y"), _("The offset of your tertiary extruder compared to the primary."))
 setting('extruder_offset_x3', '0.0', float, 'machine', 'hidden').setLabel(_("Offset X"), _("The offset of your forth extruder compared to the primary."))
 setting('extruder_offset_y3', '0.0', float, 'machine', 'hidden').setLabel(_("Offset Y"), _("The offset of your forth extruder compared to the primary."))
+setting('extruder_offset_x4', '0.0', float, 'machine', 'hidden').setLabel(_("Offset X"), _("The offset of your forth extruder compared to the primary."))
+setting('extruder_offset_y4', '0.0', float, 'machine', 'hidden').setLabel(_("Offset Y"), _("The offset of your forth extruder compared to the primary."))
 setting('steps_per_e', '0', float, 'machine', 'hidden').setLabel(_("E-Steps per 1mm filament"), _("Amount of steps per mm filament extrusion. If set to 0 then this value is ignored and the value in your firmware is used."))
 setting('serial_port', 'AUTO', str, 'machine', 'hidden').setLabel(_("Serial port"), _("Serial port to use for communication with the printer"))
 setting('serial_port_auto', '', str, 'machine', 'hidden')
@@ -545,10 +550,12 @@ validators.warningAbove(settingsDictionary['print_temperature'], 260.0, _("Tempe
 validators.warningAbove(settingsDictionary['print_temperature2'], 260.0, _("Temperatures above 260C could damage your machine, be careful!"))
 validators.warningAbove(settingsDictionary['print_temperature3'], 260.0, _("Temperatures above 260C could damage your machine, be careful!"))
 validators.warningAbove(settingsDictionary['print_temperature4'], 260.0, _("Temperatures above 260C could damage your machine, be careful!"))
+validators.warningAbove(settingsDictionary['print_temperature5'], 260.0, _("Temperatures above 260C could damage your machine, be careful!"))
 validators.warningAbove(settingsDictionary['filament_diameter'], 3.5, _("Are you sure your filament is that thick? Normal filament is around 3mm or 1.75mm."))
 validators.warningAbove(settingsDictionary['filament_diameter2'], 3.5, _("Are you sure your filament is that thick? Normal filament is around 3mm or 1.75mm."))
 validators.warningAbove(settingsDictionary['filament_diameter3'], 3.5, _("Are you sure your filament is that thick? Normal filament is around 3mm or 1.75mm."))
 validators.warningAbove(settingsDictionary['filament_diameter4'], 3.5, _("Are you sure your filament is that thick? Normal filament is around 3mm or 1.75mm."))
+validators.warningAbove(settingsDictionary['filament_diameter5'], 3.5, _("Are you sure your filament is that thick? Normal filament is around 3mm or 1.75mm."))
 validators.warningAbove(settingsDictionary['travel_speed'], 300.0, _("It is highly unlikely that your machine can achieve a travel speed above 300mm/s"))
 validators.warningAbove(settingsDictionary['bottom_thickness'], lambda : (float(getProfileSetting('nozzle_size')) * 3.0 / 4.0), _("A bottom layer of more then %.2fmm (3/4 nozzle size) usually give bad results and is not recommended."))
 
@@ -556,9 +563,11 @@ validators.warningAbove(settingsDictionary['bottom_thickness'], lambda : (float(
 settingsDictionary['print_temperature2'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 1)
 settingsDictionary['print_temperature3'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 2)
 settingsDictionary['print_temperature4'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 3)
+settingsDictionary['print_temperature5'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 4)
 settingsDictionary['filament_diameter2'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 1)
 settingsDictionary['filament_diameter3'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 2)
 settingsDictionary['filament_diameter4'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 3)
+settingsDictionary['filament_diameter5'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 4)
 settingsDictionary['support_dual_extrusion'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 1)
 settingsDictionary['retraction_dual_amount'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 1)
 settingsDictionary['wipe_tower'].addCondition(lambda : int(getMachineSetting('extruder_amount')) > 1)
@@ -572,10 +581,12 @@ settingsDictionary['print_temperature'].addCondition(lambda : getMachineSetting(
 settingsDictionary['print_temperature2'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['print_temperature3'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['print_temperature4'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
+settingsDictionary['print_temperature5'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['filament_diameter'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['filament_diameter2'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['filament_diameter3'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['filament_diameter4'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
+settingsDictionary['filament_diameter5'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['filament_flow'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['print_bed_temperature'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
 settingsDictionary['retraction_speed'].addCondition(lambda : getMachineSetting('gcode_flavor') != 'UltiGCode')
@@ -776,7 +787,7 @@ def resetProfile():
        elif getMachineSetting('machine_type') == 'ultimaker_plus':
                putProfileSetting('nozzle_size', '0.4')
                putProfileSetting('retraction_enable', 'True')
-       elif getMachineSetting('machine_type') == 'ultimaker2':
+       elif getMachineSetting('machine_type').startswith('ultimaker2'):
                putProfileSetting('nozzle_size', '0.4')
                putProfileSetting('retraction_enable', 'True')
        else:
@@ -1170,10 +1181,10 @@ def getMachineSizePolygons():
        else:
                ret.append(numpy.array([[-size[0]/2,-size[1]/2],[size[0]/2,-size[1]/2],[size[0]/2, size[1]/2], [-size[0]/2, size[1]/2]], numpy.float32))
 
-       if getMachineSetting('machine_type') == 'ultimaker2':
+       if getMachineSetting('machine_type').startswith('ultimaker2'):
                #UM2 no-go zones
                w = 25
-               h = 10
+               h = 8
                ret.append(numpy.array([[-size[0]/2,-size[1]/2],[-size[0]/2+w+2,-size[1]/2], [-size[0]/2+w,-size[1]/2+h], [-size[0]/2,-size[1]/2+h]], numpy.float32))
                ret.append(numpy.array([[ size[0]/2-w-2,-size[1]/2],[ size[0]/2,-size[1]/2], [ size[0]/2,-size[1]/2+h],[ size[0]/2-w,-size[1]/2+h]], numpy.float32))
                ret.append(numpy.array([[-size[0]/2+w+2, size[1]/2],[-size[0]/2, size[1]/2], [-size[0]/2, size[1]/2-h],[-size[0]/2+w, size[1]/2-h]], numpy.float32))
index 305cc4b174035c8dfc0f48b91a940f39f5572d6c..4e4de84b96b0d5fe6d9d9c8e375140acccc56450 100644 (file)
@@ -87,7 +87,7 @@ def getLanguageOptions():
                ['de', 'Deutsch'],
                ['fr', 'French'],
                ['tr', 'Turkish'],
-               ['ko', 'Korean'],
+               ['ko', 'Korean'],
                # ['zh', 'Chinese'],
                # ['nl', 'Nederlands'],
                # ['es', 'Spanish'],
index 7a3e1f836191146eeb5702308f2fad8c02bfe9e6..c1dd3947e6bf2d7b0a9ad2a0e1bbe8ded04b6662 100755 (executable)
@@ -19,7 +19,7 @@ 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}
 
 ##Which versions of external programs to use
@@ -158,8 +158,14 @@ cd -
 
 gitClone git@github.com:Ultimaker/Ultimaker2Marlin.git _Ultimaker2Marlin
 cd _Ultimaker2Marlin/Marlin
+git checkout master
 $MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2 DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}\"' TEMP_SENSOR_1=0 EXTRUDERS=1"
 $MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2Dual DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}\"' TEMP_SENSOR_1=20 EXTRUDERS=2"
+git checkout UM2go
+$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2go DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}go\"' TEMP_SENSOR_1=0 EXTRUDERS=1"
+git checkout UM2extended
+$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2extended DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}ex\"' TEMP_SENSOR_1=0 EXTRUDERS=1"
+$MAKE -j 3 HARDWARE_MOTHERBOARD=72 ARDUINO_INSTALL_DIR=${ARDUINO_PATH} ARDUINO_VERSION=${ARDUINO_VERSION} BUILD_DIR=_Ultimaker2extendedDual DEFINES="'STRING_CONFIG_H_AUTHOR=\"Version:_${BUILD_NAME}ex\"' TEMP_SENSOR_1=20 EXTRUDERS=2"
 cd -
 
 cp _UltimakerMarlin/Marlin/_UltimakerMarlin_250000/Marlin.hex resources/firmware/MarlinUltimaker-250000.hex
@@ -176,6 +182,9 @@ cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Plus_Dual_250000/Marlin.hex resource
 cp _UltimakerMarlin/Marlin/_UltimakerMarlin_Plus_Dual_115200/Marlin.hex resources/firmware/MarlinUltimaker-UMOP-115200-dual.hex
 cp _Ultimaker2Marlin/Marlin/_Ultimaker2/Marlin.hex resources/firmware/MarlinUltimaker2.hex
 cp _Ultimaker2Marlin/Marlin/_Ultimaker2Dual/Marlin.hex resources/firmware/MarlinUltimaker2-dual.hex
+cp _Ultimaker2Marlin/Marlin/_Ultimaker2go/Marlin.hex resources/firmware/MarlinUltimaker2go.hex
+cp _Ultimaker2Marlin/Marlin/_Ultimaker2extended/Marlin.hex resources/firmware/MarlinUltimaker2extended.hex
+cp _Ultimaker2Marlin/Marlin/_Ultimaker2extendedDual/Marlin.hex resources/firmware/MarlinUltimaker2extended-dual.hex
 
 #############################
 # Darwin
index 9b663bf1b669856b96a67f7083660169dfe83e89..73c9d624483bb627e3278c01b523e823415bc344 100644 (file)
Binary files a/resources/images/Ultimaker2backplate.png and b/resources/images/Ultimaker2backplate.png differ
index 01f5d5f3a5890497b5adc3d4b35d8759dd01b74e..9e0392956c6060926e987acecdab3b4363562e63 100644 (file)
Binary files a/resources/images/UltimakerPlusbackplate.png and b/resources/images/UltimakerPlusbackplate.png differ
index 9b942bb167f96ed738c62d1c4f1bc64ae11056f7..9c03da9e09d217f9561f7f1466f474528725f1e6 100644 (file)
Binary files a/resources/locale/ko/LC_MESSAGES/Cura.mo and b/resources/locale/ko/LC_MESSAGES/Cura.mo differ
index 5bf8bf9a82f1f989d577988918fd8ab8a4a0a234..7c53d9284d6086af42993e35932160159ba1e64c 100644 (file)
@@ -8,13 +8,13 @@ msgstr ""
 "Project-Id-Version: Cura Translation\n"\r
 "Report-Msgid-Bugs-To: \n"\r
 "POT-Creation-Date: 2014-12-08 10:01+0100\n"\r
-"PO-Revision-Date: 2014-11-14 20:43+0900\n"\r
+"PO-Revision-Date: 2015-01-07 17:30+0900\n"\r
 "Last-Translator: Jinbuhm Kim <Jinbuhm.Kim@gmail.com>\n"\r
 "Language-Team: Korean <Jinbuhm.Kim@gmail.com>\n"\r
 "MIME-Version: 1.0\n"\r
 "Content-Type: text/plain; charset=UTF-8\n"\r
 "Content-Transfer-Encoding: 8bit\n"\r
-"X-Generator: Poedit 1.7beta1\n"\r
+"X-Generator: Poedit 1.7.1\n"\r
 "Plural-Forms: nplurals=1; plural=0;\n"\r
 "Language: ko_KR\n"\r
 "X-Poedit-SourceCharset: UTF-8\n"\r
@@ -48,9 +48,8 @@ msgid "Select your language:"
 msgstr "언어를 선택하세요"\r
 \r
 #: Cura/gui/configWizard.py:266\r
-#, fuzzy\r
 msgid "Older models"\r
-msgstr "3D 모델 열기 "\r
+msgstr "오래된 모델"\r
 \r
 #: Cura/gui/configWizard.py:283\r
 msgid "Printrbot Selection"\r
@@ -915,9 +914,8 @@ msgid "One at a time warning"
 msgstr "한번에 하나씩 프린팅 경고"\r
 \r
 #: Cura/gui/mainWindow.py:467\r
-#, fuzzy\r
 msgid "Add new machine..."\r
-msgstr "새로운 기기 추가"\r
+msgstr "새로운 기기 추가..."\r
 \r
 #: Cura/gui/mainWindow.py:475\r
 msgid "Install default firmware..."\r
@@ -2178,7 +2176,7 @@ msgstr ""
 \r
 #: Cura/util/profile.py:221 Cura/util/profile.py:222 Cura/util/profile.py:223\r
 msgid "Skirt"\r
-msgstr ""\r
+msgstr "Skirt"\r
 \r
 #: Cura/util/profile.py:221\r
 msgid "Line count"\r
@@ -2354,7 +2352,6 @@ msgid "Overhang angle for support (deg)"
 msgstr "서포트를 위한 돌출부 각도(deg)"\r
 \r
 #: Cura/util/profile.py:233\r
-#, fuzzy\r
 msgid ""\r
 "The minimal angle that overhangs need to have to get support. With 90 degree "\r
 "being horizontal and 0 degree being vertical."\r
@@ -2371,8 +2368,8 @@ msgid ""
 "Amount of infill structure in the support material, less material gives "\r
 "weaker support which is easier to remove. 15% seems to be a good average."\r
 msgstr ""\r
-"서포트 재질에 채우는 양, 재료가 적으면 서포트가 약해서 제거하기 쉽습니다. 15%"\r
-"가 평균적으로 좋습니다."\r
+"서포트 재질에 채우는 양, 재료가 적으면 서포트가 약해서 제거하기 쉽습니다. "\r
+"15% 가 평균적으로 좋습니다."\r
 \r
 #: Cura/util/profile.py:235\r
 msgid "Distance X/Y (mm)"\r
@@ -2403,7 +2400,7 @@ msgstr ""
 \r
 #: Cura/util/profile.py:237 Cura/util/profile.py:238\r
 msgid "Black Magic"\r
-msgstr ""\r
+msgstr "Black Magic"\r
 \r
 #: Cura/util/profile.py:237\r
 msgid "Spiralize the outer contour"\r
@@ -2517,21 +2514,20 @@ msgstr "Airgap"
 \r
 #: Cura/util/profile.py:247\r
 msgid "Gap between the last layer of the raft the whole print."\r
-msgstr ""\r
+msgstr "Gap between the last layer of the raft the whole print."\r
 \r
 #: Cura/util/profile.py:248\r
 msgid "First Layer Airgap"\r
-msgstr ""\r
+msgstr "첫번째 레이어 Airgap"\r
 \r
 #: Cura/util/profile.py:248\r
-#, fuzzy\r
 msgid ""\r
 "Gap between the last layer of the raft and the first printing layer. A small "\r
 "gap of 0.2mm works wonders on PLA and makes the raft easy to remove. This "\r
 "value is added on top of the 'Airgap' setting."\r
 msgstr ""\r
 "첫번째 프린팅 레이어와 마지막 raft레이어 사이의 간격. PLA에서 0.2mm의 간격은 "\r
-"raft를 쉽게 제거되게 합니다."\r
+"raft를 쉽게 제거되게 합니다. 이 값은 Airgap 설정의 상위에 더해집니다."\r
 \r
 #: Cura/util/profile.py:249\r
 msgid "Surface layers"\r
@@ -2546,22 +2542,20 @@ msgstr ""
 "다."\r
 \r
 #: Cura/util/profile.py:250\r
-#, fuzzy\r
 msgid "Surface layer thickness (mm)"\r
-msgstr "첫번째 레이어 두께 (mm)"\r
+msgstr "표면 레이어 두께 (mm)"\r
 \r
 #: Cura/util/profile.py:250\r
 msgid "Thickness of each surface layer."\r
-msgstr ""\r
+msgstr "각 표면 레이어의 두께"\r
 \r
 #: Cura/util/profile.py:251\r
-#, fuzzy\r
 msgid "Surface layer line width (mm)"\r
-msgstr "인터페이스 라인 두께 (mm)"\r
+msgstr "표면 레이어 라인 두께 (mm)"\r
 \r
 #: Cura/util/profile.py:251\r
 msgid "Width of the lines for each surface layer."\r
-msgstr ""\r
+msgstr "각 표면 레이어의 라인두께"\r
 \r
 #: Cura/util/profile.py:252 Cura/util/profile.py:253 Cura/util/profile.py:254\r
 #: Cura/util/profile.py:255\r
diff --git a/resources/machine_profiles/Ord.ini b/resources/machine_profiles/Ord.ini
new file mode 100644 (file)
index 0000000..651b7dc
--- /dev/null
@@ -0,0 +1,41 @@
+[machine]\r
+machine_name = Ord\r
+machine_type = RepRap\r
+machine_width = 260\r
+machine_depth = 300\r
+machine_height = 200\r
+machine_center_is_zero = False\r
+has_heated_bed = True\r
+gcode_flavor = RepRap (Marlin/Sprinter)\r
+extruder_amount = 5\r
+extruder_offset_x1 = 62.95\r
+extruder_offset_y1 = 2.05\r
+extruder_offset_x2 = 0.0\r
+extruder_offset_y2 = 27.7 \r
+extruder_offset_x3 = 63.18\r
+extruder_offset_y3 = 28.65\r
+extruder_offset_x4 = 31.6\r
+extruder_offset_y4 = 28.2\r
+serial_baud = 250000\r
+[profile]\r
+layer_height = 0.20\r
+wall_thickness = 0.8\r
+retraction_enable = True\r
+solid_layer_thickness = 0.6\r
+fill_density = 15\r
+nozzle_size = 0.5\r
+filament_diameter = 1.75\r
+filament_diameter2 = 0\r
+filament_diameter3 = 0\r
+filament_diameter4 = 0\r
+filament_diameter5 = 0\r
+nozzle_size = 0.35\r
+layer_height = 0.3\r
+print_speed = 50\r
+print_temperature = 240\r
+print_temperature2 = 0\r
+print_temperature3 = 0\r
+print_temperature4 = 0\r
+print_temperature5 = 0\r
+print_bed_temperature = 60\r
+travel_speed = 150\r
index 2a5857dff028e5a3f56d76a5597040ba57ca11b9..f637dde4612b72e77b44abeaf895c0006df7d8e0 100644 (file)
@@ -39,8 +39,8 @@ layer0_width_factor = 110
 travel_speed = 120
 bottom_layer_speed = 25
 infill_speed = 50
-inset0_speed = 40
-insetx_speed = 50
+inset0_speed = 30
+insetx_speed = 40
 cool_min_layer_time = 10
 skirt_line_count = 1
 skirt_gap = 3.0
diff --git a/resources/machine_profiles/julia.ini b/resources/machine_profiles/julia.ini
new file mode 100644 (file)
index 0000000..1a94b94
--- /dev/null
@@ -0,0 +1,80 @@
+[machine]
+machine_name = FracktalWorks Julia
+machine_type = Julia
+machine_width = 210
+machine_depth = 250
+machine_height = 270
+machine_center_is_zero = False
+has_heated_bed = True
+gcode_flavor = RepRap (Marlin/Sprinter)
+extruder_amount = 1
+
+[profile]
+layer_height = 0.2
+wall_thickness = 0.4
+retraction_enable = True
+solid_layer_thickness = 0.6
+fill_density = 15
+nozzle_size = 0.4
+print_speed = 60
+print_temperature = 230
+print_temperature2 = 0
+print_temperature3 = 0
+print_temperature4 = 0
+print_bed_temperature = 80
+support = None
+platform_adhesion = None
+support_dual_extrusion = Both
+filament_diameter = 1.75
+filament_diameter2 = 0
+filament_diameter3 = 0
+filament_diameter4 = 0
+filament_flow = 100
+retraction_speed = 50.0
+bottom_thickness = 0.20
+layer0_width_factor = 100
+overlap_dual = 0.15
+travel_speed = 150.0
+bottom_layer_speed = 20
+infill_speed = 0
+inset0_speed = 40
+insetx_speed = 50
+cool_min_layer_time = 5
+fan_enabled = True
+skirt_line_count = 1
+skirt_gap = 3.0
+skirt_minimal_length = 150.0
+fan_full_height = 0.5
+fan_speed = 100
+fan_speed_max = 100
+cool_min_feedrate = 10
+cool_head_lift = False
+solid_top = True
+solid_bottom = True
+fill_overlap = 15
+support_type = Lines
+support_angle = 60
+support_fill_rate = 15
+support_xy_distance = 1.2
+support_z_distance = 0.1
+spiralize = False
+simple_mode = False
+brim_line_count = 20
+raft_margin = 5.0
+raft_line_spacing = 3.0
+raft_base_thickness = 0.3
+raft_base_linewidth = 1.0
+raft_interface_thickness = 0.27
+raft_interface_linewidth = 0.4
+raft_airgap_all = 0.0
+raft_airgap = 0.22
+raft_surface_layers = 2
+raft_surface_thickness = 0.27
+raft_surface_linewidth = 0.4
+fix_horrible_union_all_type_a = True
+fix_horrible_union_all_type_b = False
+fix_horrible_use_open_bits = False
+fix_horrible_extensive_stitching = False
+plugin_config = 
+object_center_x = -1
+object_center_y = -1
diff --git a/resources/meshes/ultimaker2go_platform.stl b/resources/meshes/ultimaker2go_platform.stl
new file mode 100644 (file)
index 0000000..cd60b19
Binary files /dev/null and b/resources/meshes/ultimaker2go_platform.stl differ
diff --git a/resources/meshes/ultimaker_plus_platform.stl b/resources/meshes/ultimaker_plus_platform.stl
deleted file mode 100644 (file)
index 5a1bb14..0000000
Binary files a/resources/meshes/ultimaker_plus_platform.stl and /dev/null differ
index ccf5e9b00dd52347dccab13a275f6ca79bf29809..7b91fd24e1774a426b192c77d9790a777ff7362b 100644 (file)
@@ -6,3 +6,5 @@ print_bed_temperature = 100
 platform_adhesion = Brim
 filament_flow = 107
 print_temperature = 250
+fan_speed = 50
+fan_speed_max = 50
diff --git a/resources/quickprint/materials/3_pet.ini b/resources/quickprint/materials/3_pet.ini
new file mode 100644 (file)
index 0000000..9b906ee
--- /dev/null
@@ -0,0 +1,9 @@
+[info]
+name = U-PET
+
+[profile]
+print_bed_temperature = 60
+platform_adhesion = Brim
+print_temperature = 250
+fan_speed = 50
+fan_speed_max = 50