diff --git a/.gitignore b/.gitignore index 64e40d5..aca6813 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,9 @@ *.pyc *.zip *.exe -osx64-Cura-NewUI* -win32-Cura-NewUI* -linux-Cura-NewUI* +osx64-Cura-* +win32-Cura-* +linux-Cura-* Printrun .idea .DS_Store diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index fb19b97..e765bff 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -270,12 +270,12 @@ def getProfileInformation(): 'Perimeter_Outside_Stretch_Over_Perimeter_Width_ratio': DEFSET, 'Stretch_From_Distance_Over_Perimeter_Width_ratio': DEFSET, },'skin': { - 'Activate_Skin': "False", - 'Horizontal_Infill_Divisions_integer': DEFSET, - 'Horizontal_Perimeter_Divisions_integer': DEFSET, - 'Vertical_Divisions_integer': DEFSET, - 'Hop_When_Extruding_Infill': DEFSET, - 'Layers_From_index': DEFSET, + 'Activate_Skin': storedSetting("enable_skin"), + 'Horizontal_Infill_Divisions_integer': "1", + 'Horizontal_Perimeter_Divisions_integer': "1", + 'Vertical_Divisions_integer': "2", + 'Hop_When_Extruding_Infill': "False", + 'Layers_From_index': "1", },'comb': { 'Activate_Comb': "True", 'Running_Jump_Space_mm': DEFSET, diff --git a/Cura/gui/advancedConfig.py b/Cura/gui/expertConfig.py similarity index 96% rename from Cura/gui/advancedConfig.py rename to Cura/gui/expertConfig.py index 99c841f..786c587 100644 --- a/Cura/gui/advancedConfig.py +++ b/Cura/gui/expertConfig.py @@ -10,10 +10,10 @@ from gui import sliceProgessPanel from gui import alterationPanel from gui import validators -class advancedConfigWindow(configBase.configWindowBase): - "Advanced configuration window" +class expertConfigWindow(configBase.configWindowBase): + "Expert configuration window" def __init__(self): - super(advancedConfigWindow, self).__init__(title='Expert config') + super(expertConfigWindow, self).__init__(title='Expert config') wx.EVT_CLOSE(self, self.OnClose) diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index d602ce4..05170c8 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -4,7 +4,7 @@ import __init__ import wx, os, platform, types, webbrowser from gui import configBase -from gui import advancedConfig +from gui import expertConfig from gui import preview3d from gui import sliceProgessPanel from gui import alterationPanel @@ -96,7 +96,7 @@ class mainWindow(configBase.configWindowBase): configBase.TitleRow(left, "Accuracy") c = configBase.SettingRow(left, "Layer height (mm)", 'layer_height', '0.2', 'Layer height in millimeters.\n0.2 is a good value for quick prints.\n0.1 gives high quality prints.') validators.validFloat(c, 0.0) - validators.warningAbove(c, lambda : (float(profile.getProfileSetting('nozzle_size')) * 80 / 100), "Thicker layers then %.2fmm (80%% nozzle size) usually give bad results and are not recommended.") + validators.warningAbove(c, lambda : (float(profile.getProfileSetting('nozzle_size')) * 80.0 / 100.0), "Thicker layers then %.2fmm (80%% nozzle size) usually give bad results and are not recommended.") c = configBase.SettingRow(left, "Wall thickness (mm)", 'wall_thickness', '0.8', 'Thickness of the walls.\nThis is used in combination with the nozzle size to define the number\nof perimeter lines and the thickness of those perimeter lines.') validators.validFloat(c, 0.0) validators.wallThicknessValidator(c) @@ -126,7 +126,7 @@ class mainWindow(configBase.configWindowBase): configBase.TitleRow(right, "Support") c = configBase.SettingRow(right, "Support type", 'support', ['None', 'Exterior Only', 'Everywhere', 'Empty Layers Only'], 'Type of support structure build.\nNone does not do any support.\nExterior only only creates support on the outside.\nEverywhere creates support even on the insides of the model.\nOnly on empty layers is for stacked objects.') - c = configBase.SettingRow(right, "Add raft", 'enable_raft', False, 'A raft is a few layers of lines below the bottom of the object. It prevents warping. Full raft settings can be found in the advanced settings.\nFor PLA this is usually not required. But if you print with ABS it is almost required.') + c = configBase.SettingRow(right, "Add raft", 'enable_raft', False, 'A raft is a few layers of lines below the bottom of the object. It prevents warping. Full raft settings can be found in the expert settings.\nFor PLA this is usually not required. But if you print with ABS it is almost required.') configBase.TitleRow(right, "Filament") c = configBase.SettingRow(right, "Diameter (mm)", 'filament_diameter', '2.89', 'Diameter of your filament, as accurately as possible.\nIf you cannot measure this value you will have to callibrate it, a higher number means less extrusion, a smaller number generates more extrusion.') @@ -174,6 +174,8 @@ class mainWindow(configBase.configWindowBase): configBase.TitleRow(right, "Accuracy") c = configBase.SettingRow(right, "Initial layer thickness (mm)", 'bottom_thickness', '0.0', '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.') validators.validFloat(c, 0.0) + validators.warningAbove(c, lambda : (float(profile.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.") + c = configBase.SettingRow(right, "Enable 'skin'", 'enable_skin', False, 'Skin prints the outer lines of the prints twice, each time with half the thickness. This gives the illusion of a higher print quality.') nb.AddPage(alterationPanel.alterationPanel(nb), "Start/End-GCode") @@ -291,9 +293,9 @@ class mainWindow(configBase.configWindowBase): printWindow.printFile(self.filename[: self.filename.rfind('.')] + "_export.gcode") def OnExpertOpen(self, e): - acw = advancedConfig.advancedConfigWindow() - acw.Centre() - acw.Show(True) + ecw = expertConfig.expertConfigWindow() + ecw.Centre() + ecw.Show(True) def removeSliceProgress(self, spp): self.progressPanelList.remove(spp) diff --git a/Cura/gui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.py index bdf2e82..577b554 100644 --- a/Cura/gui/sliceProgessPanel.py +++ b/Cura/gui/sliceProgessPanel.py @@ -28,6 +28,7 @@ class sliceProgessPanel(wx.Panel): 'speed': 12.759510994, 'raft': 31.4580039978, 'skirt': 19.3436040878, + 'skin': 1.0, 'joris': 1.0, 'comb': 23.7805759907, 'cool': 27.148763895, diff --git a/Cura/util/gcodeInterpreter.py b/Cura/util/gcodeInterpreter.py index 3570d49..0518be2 100644 --- a/Cura/util/gcodeInterpreter.py +++ b/Cura/util/gcodeInterpreter.py @@ -105,7 +105,7 @@ class gcode(): else: pos.z += z * scale #Check if we have a new layer. - if oldPos.z != pos.z and startCodeDone: + if oldPos.z < pos.z and startCodeDone and len(currentLayer) > 0: self.layerList.append(currentLayer) currentLayer = [] if f is not None: diff --git a/Cura/util/profile.py b/Cura/util/profile.py index c63ef0c..34df82d 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -42,6 +42,8 @@ profileDefaultSettings = { 'flip_x': 'False', 'flip_y': 'False', 'flip_z': 'False', + 'swap_xz': 'False', + 'swap_yz': 'False', 'model_rotate_base': '0', 'model_multiply_x': '1', 'model_multiply_y': '1', @@ -54,6 +56,7 @@ profileDefaultSettings = { 'support_rate': '50', 'support_distance': '0.5', 'joris': 'False', + 'enable_skin': 'False', 'enable_raft': 'False', 'cool_min_feedrate': '5', 'bridge_speed': '100', diff --git a/README b/README deleted file mode 100644 index 7d879ae..0000000 --- a/README +++ /dev/null @@ -1,66 +0,0 @@ -For documentation check: https://github.com/daid/Cura/wiki -For downloads check: https://github.com/daid/Cura/downloads - -This package includes two programs: - -Pronterface: - - An application for both manually controlling and automatically feeding gcode to a 3D printer. - -Cura: - - A easy to use program for slicing STL files using SkeinForge. Cura can also visualize the 3D models in a variety of ways. - - On first run, Cura will ask to go through a set of calibration steps that will perform a series of operations on your 3D printer. One of those steps involves extruding a bit of filament where the filament is initially nearly fully extracted. As such, it you will probably need to run Pronterface first, heat up the extruder enough to be able to extract the filament and then use the Pronterface interface to reverse the extruder motor until the filament is at the right position (specifically, until the filament end is even with where the Bowden tube leaves the extuder motor assembly, on an Ultimaker). - -======== -BUILDING -======== - - ./package.sh - -The build script defaults to building for Windows. If you want to build for Mac OS X or Linux, choose one of: - - ./package.sh osx64 - ./package.sh linux - -Note that Mac OS X currently requires the manual installation of wxPython, PySerial, and PyOpenGL: - - sudo easy_install-2.7 pyserial - sudo easy_install-2.7 PyOpenGL - -You will need to download the appropriate wxPython Installer package and install it. It is available from: - - http://www.wxpython.org/download.php - -Specifically, install "wxPython2.9-osx-cocoa-py2.7" as it is the build that supports 64-bit execution. - -======= -RUNNING -======= - -Windows -------- - -Double-click skeinforge.bat and Printrun.bat. - -Mac OS X & Linux ----------------- - -Once built, the two apps -- Pronterface and Cura -- must be started from the command line (for now): - - # open a new terminal window and.... - cd osx64-Cura-NewUI-Beta4 - ./pronterface.sh & - ./Cura.sh & - -This will start both applications with their console logging output directed into the terminal window. - -======== -FIRMWARE -======== - -For Ultimaker users, it is highly recommended -- nearly required -- that you upgrade your firmware to the latest Marlin builds. See: - - http://wiki.ultimaker.com/Skeinforge_PyPy - diff --git a/README.md b/README.md new file mode 100644 index 0000000..4bae532 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +Cura +==== + +If you are reading this, then you are looking at the *development* version of Cura. If you just want to use Cura look at the following location: https://github.com/daid/Cura/wiki + +Development +=========== + +Cura is developed in Python. Getting Cura up and running for development is not very difficult. If you copy the python and pypy from a release into your Cura development checkout then you can use Cura right away, just like you would with a release. +For development with git, check the help on github. Pull requests is the fastest way to get changes into Cura. + +Packaging +--------- + +Cura development comes with a script "package.sh", this script has been designed to run under unix like OSes (Linux, MacOS). Running it from sygwin is not a priority. +The "package.sh" script generates a final release package. You should not need it during development, unless you are changing the release process. If you want to distribute your own version of Cura, then the package.sh script will allow you to do that. + diff --git a/package.sh b/package.sh index 2a9038a..d059f66 100755 --- a/package.sh +++ b/package.sh @@ -40,6 +40,11 @@ function checkTool # Actual build script ############################# +# Change working directory to the directory the script is in +# http://stackoverflow.com/a/246128 +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +cd $SCRIPT_DIR + checkTool git "git: http://git-scm.com/" checkTool curl "curl: http://curl.haxx.se/" if [ $BUILD_TARGET = "win32" ]; then