chiark / gitweb /
Update preferences to allow math expressions. Fixed #86
authordaid <daid303@gmail.com>
Tue, 1 May 2012 09:39:52 +0000 (11:39 +0200)
committerdaid <daid303@gmail.com>
Tue, 1 May 2012 09:39:52 +0000 (11:39 +0200)
Cura/gui/preview3d.py
Cura/gui/projectPlanner.py
Cura/gui/sliceProgessPanel.py
Cura/util/gcodeInterpreter.py
Cura/util/profile.py

index f905d0f4b73dc90df78c4fe9d3a0e648545f98ab..ec525096fe64733a5c30f8ebe206c024b15bbcbc 100644 (file)
@@ -47,7 +47,7 @@ class previewPanel(wx.Panel):
                self.objectsMinV = None\r
                self.objectsMaxV = None\r
                self.loadThread = None\r
-               self.machineSize = util3d.Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height')))\r
+               self.machineSize = util3d.Vector3(profile.getPreferenceFloat('machine_width'), profile.getPreferenceFloat('machine_depth'), profile.getPreferenceFloat('machine_height'))\r
                self.machineCenter = util3d.Vector3(float(profile.getProfileSetting('machine_center_x')), float(profile.getProfileSetting('machine_center_y')), 0)\r
                \r
                self.toolbar = toolbarUtil.Toolbar(self)\r
index 448b31b2cbe6adbea0fe07edbeba986e7f3d93c5..9b664ce5c50e8edb525bdf552180ebe883166517 100644 (file)
@@ -39,15 +39,15 @@ class projectPlanner(wx.Frame):
                self.list = []\r
                self.selection = None\r
 \r
-               self.machineSize = util3d.Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height')))\r
-               self.headSizeMin = util3d.Vector3(float(profile.getPreference('extruder_head_size_min_x')), float(profile.getPreference('extruder_head_size_min_y')),0)\r
-               self.headSizeMax = util3d.Vector3(float(profile.getPreference('extruder_head_size_max_x')), float(profile.getPreference('extruder_head_size_max_y')),0)\r
+               self.machineSize = util3d.Vector3(profile.getPreferenceFloat('machine_width'), profile.getPreferenceFloat('machine_depth'), profile.getPreferenceFloat('machine_height'))\r
+               self.headSizeMin = util3d.Vector3(profile.getPreferenceFloat('extruder_head_size_min_x'), profile.getPreferenceFloat('extruder_head_size_min_y'),0)\r
+               self.headSizeMax = util3d.Vector3(profile.getPreferenceFloat('extruder_head_size_max_x'), profile.getPreferenceFloat('extruder_head_size_max_y'),0)\r
 \r
                self.extruderOffset = [\r
                        util3d.Vector3(0,0,0),\r
-                       util3d.Vector3(float(profile.getPreference('extruder_offset_x1')), float(profile.getPreference('extruder_offset_y1')), 0),\r
-                       util3d.Vector3(float(profile.getPreference('extruder_offset_x2')), float(profile.getPreference('extruder_offset_y2')), 0),\r
-                       util3d.Vector3(float(profile.getPreference('extruder_offset_x3')), float(profile.getPreference('extruder_offset_y3')), 0)]\r
+                       util3d.Vector3(profile.getPreferenceFloat('extruder_offset_x1'), profile.getPreferenceFloat('extruder_offset_y1'), 0),\r
+                       util3d.Vector3(profile.getPreferenceFloat('extruder_offset_x2'), profile.getPreferenceFloat('extruder_offset_y2'), 0),\r
+                       util3d.Vector3(profile.getPreferenceFloat('extruder_offset_x3'), profile.getPreferenceFloat('extruder_offset_y3'), 0)]\r
 \r
                self.toolbar = toolbarUtil.Toolbar(self)\r
 \r
index e3e96d258aee70cce37f0ecdc32025156e974d5d..17fc78575470c6fcd4285297dc3f7e3e2bb89d2c 100644 (file)
@@ -66,8 +66,8 @@ class sliceProgessPanel(wx.Panel):
                        if idx > 0:
                                profile.putProfileSetting('fan_enabled', 'False')
                                profile.putProfileSetting('skirt_line_count', '0')
-                               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))))
+                               profile.putProfileSetting('machine_center_x', profile.getProfileSettingFloat('machine_center_x') - profile.getPreferenceFloat('extruder_offset_x%d' % (idx)))
+                               profile.putProfileSetting('machine_center_y', profile.getProfileSettingFloat('machine_center_y') - profile.getPreferenceFloat('extruder_offset_y%d' % (idx)))
                                profile.putProfileSetting('alternative_center', self.filelist[0])
                        if len(self.filelist) > 1:
                                profile.putProfileSetting('add_start_end_gcode', 'False')
index 5b7bda16f041251b498a03288b611c4521f8ee3d..3af69bb48e43de4268f4ad4d9d5ddac481d03469 100644 (file)
@@ -36,11 +36,11 @@ class gcode():
                #Calculates the weight of the filament in kg
                radius = float(profile.getProfileSetting('filament_diameter')) / 2
                volumeM3 = (self.extrusionAmount * (math.pi * radius * radius)) / (1000*1000*1000)
-               return volumeM3 * float(profile.getPreference('filament_density'))
+               return volumeM3 * profile.getPreferenceFloat('filament_density')
        
        def calculateCost(self):
-               cost_kg = float(profile.getPreference('filament_cost_kg'))
-               cost_meter = float(profile.getPreference('filament_cost_meter'))
+               cost_kg = profile.getPreferenceFloat('filament_cost_kg')
+               cost_meter = profile.getPreferenceFloat('filament_cost_meter')
                if cost_kg > 0.0 and cost_meter > 0.0:
                        return "%.2f / %.2f" % (self.calculateWeight() * cost_kg, self.extrusionAmount / 1000 * cost_meter)
                elif cost_kg > 0.0:
@@ -94,12 +94,12 @@ class gcode():
                        T = self.getCodeInt(line, 'T')
                        if T is not None:
                                if currentExtruder > 0:
-                                       posOffset.x -= float(profile.getPreference('extruder_offset_x%d' % (currentExtruder)))
-                                       posOffset.y -= float(profile.getPreference('extruder_offset_y%d' % (currentExtruder)))
+                                       posOffset.x -= profile.getPreferenceFloat('extruder_offset_x%d' % (currentExtruder))
+                                       posOffset.y -= profile.getPreferenceFloat('extruder_offset_y%d' % (currentExtruder))
                                currentExtruder = T
                                if currentExtruder > 0:
-                                       posOffset.x += float(profile.getPreference('extruder_offset_x%d' % (currentExtruder)))
-                                       posOffset.y += float(profile.getPreference('extruder_offset_y%d' % (currentExtruder)))
+                                       posOffset.x += profile.getPreferenceFloat('extruder_offset_x%d' % (currentExtruder))
+                                       posOffset.y += profile.getPreferenceFloat('extruder_offset_y%d' % (currentExtruder))
                        
                        G = self.getCodeInt(line, 'G')
                        if G is not None:
index 046617cb171f64c06a7a96a6dc527e014ac07b20..96e1eb3555ece2738312fdd529f886709b09bf1a 100644 (file)
@@ -236,6 +236,13 @@ globalPreferenceParser = None
 def getPreferencePath():\r
        return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../preferences.ini"))\r
 \r
+def getPreferenceFloat(name):\r
+       try:\r
+               return float(eval(getPreference(name), {}, {}))\r
+\r
+       except (ValueError, SyntaxError):\r
+               return 0.0\r
+\r
 def getPreference(name):\r
        global globalPreferenceParser\r
        if globalPreferenceParser == None:\r
@@ -346,7 +353,7 @@ def getAlterationFileContents(filename):
        if filename == 'start.gcode':\r
                #For the start code, hack the temperature and the steps per E value into it. So the temperature is reached before the start code extrusion.\r
                #We also set our steps per E here, if configured.\r
-               eSteps = float(getPreference('steps_per_e'))\r
+               eSteps = getPreferenceFloat('steps_per_e')\r
                if eSteps > 0:\r
                        prefix += 'M92 E%f\n' % (eSteps)\r
                temp = getProfileSettingFloat('print_temperature')\r