chiark / gitweb /
Add support angle setting.
[cura.git] / Cura / gui / sceneView.py
index 95d4a1d52dc2080e449070fcc0f4b1a79cc8a0d5..ebf28566e3d8c15d0a354e6b544b475effdfc9cd 100644 (file)
@@ -680,7 +680,7 @@ class SceneView(openglGui.glGuiPanel):
                        if self._selectedObj is not None:
                                self._deleteObject(self._selectedObj)
                                self.QueueRefresh()
-               if self.viewMode == 'gcode':
+               if self.viewMode == 'gcode' and (wx.GetKeyState(wx.WXK_SHIFT) or wx.GetKeyState(wx.WXK_CONTROL)):
                        if keyCode == wx.WXK_UP:
                                self.layerSelect.setValue(self.layerSelect.getValue() + 1)
                                self.QueueRefresh()
@@ -1135,7 +1135,7 @@ void main(void)
 
                        if self.viewMode == 'overhang':
                                self._objectOverhangShader.bind()
-                               self._objectOverhangShader.setUniform('cosAngle', math.cos(math.radians(90 - 60)))
+                               self._objectOverhangShader.setUniform('cosAngle', math.cos(math.radians(90 - profile.getProfileSettingFloat('support_angle'))))
                        else:
                                self._objectShader.bind()
                        for obj in self._scene.objects():
@@ -1227,16 +1227,28 @@ void main(void)
                self._drawMachine()
 
                if self._usbPrintMonitor.getState() == 'PRINTING' and self._usbPrintMonitor.getID() == self._slicer.getID():
-                       glEnable(GL_BLEND)
                        z = self._usbPrintMonitor.getZ()
-                       size = self._machineSize
-                       glColor4ub(255,255,0,128)
-                       glBegin(GL_QUADS)
-                       glVertex3f(-size[0]/2,-size[1]/2, z)
-                       glVertex3f( size[0]/2,-size[1]/2, z)
-                       glVertex3f( size[0]/2, size[1]/2, z)
-                       glVertex3f(-size[0]/2, size[1]/2, z)
-                       glEnd()
+                       if self.viewMode == 'gcode':
+                               layer_height = profile.getProfileSettingFloat('layer_height')
+                               layer1_height = profile.getProfileSettingFloat('bottom_thickness')
+                               if layer_height > 0:
+                                       if layer1_height > 0:
+                                               layer = int((z - layer1_height) / layer_height) + 1
+                                       else:
+                                               layer = int(z / layer_height)
+                               else:
+                                       layer = 1
+                               self.layerSelect.setValue(layer)
+                       else:
+                               size = self._machineSize
+                               glEnable(GL_BLEND)
+                               glColor4ub(255,255,0,128)
+                               glBegin(GL_QUADS)
+                               glVertex3f(-size[0]/2,-size[1]/2, z)
+                               glVertex3f( size[0]/2,-size[1]/2, z)
+                               glVertex3f( size[0]/2, size[1]/2, z)
+                               glVertex3f(-size[0]/2, size[1]/2, z)
+                               glEnd()
 
                if self.viewMode == 'gcode':
                        if self._gcodeLoadThread is not None and self._gcodeLoadThread.isAlive():
@@ -1262,20 +1274,21 @@ void main(void)
                                                glVertex3f(p[0], p[1], 0)
                                        glEnd()
                                        glPopMatrix()
-                               glPushMatrix()
-                               glColor4f(0,0,0,0.06)
-                               glTranslatef(self._selectedObj.getPosition()[0], self._selectedObj.getPosition()[1], 0)
-                               glBegin(GL_TRIANGLE_FAN)
-                               for p in self._selectedObj._printAreaHull[::-1]:
-                                       glVertex3f(p[0], p[1], 0)
-                               glEnd()
-                               glBegin(GL_TRIANGLE_FAN)
-                               for p in self._selectedObj._headAreaMinHull[::-1]:
-                                       glVertex3f(p[0], p[1], 0)
-                               glEnd()
+                               if self._scene.isOneAtATime():
+                                       glPushMatrix()
+                                       glColor4f(0,0,0,0.06)
+                                       glTranslatef(self._selectedObj.getPosition()[0], self._selectedObj.getPosition()[1], 0)
+                                       glBegin(GL_TRIANGLE_FAN)
+                                       for p in self._selectedObj._printAreaHull[::-1]:
+                                               glVertex3f(p[0], p[1], 0)
+                                       glEnd()
+                                       glBegin(GL_TRIANGLE_FAN)
+                                       for p in self._selectedObj._headAreaMinHull[::-1]:
+                                               glVertex3f(p[0], p[1], 0)
+                                       glEnd()
+                                       glPopMatrix()
                                glDepthMask(True)
                                glDisable(GL_CULL_FACE)
-                               glPopMatrix()
 
                        #Draw the outline of the selected object, on top of everything else except the GUI.
                        if self._selectedObj is not None and self._selectedObj._loadAnim is None:
@@ -1414,12 +1427,17 @@ void main(void)
 
                polys = profile.getMachineSizePolygons()
                height = profile.getMachineSettingFloat('machine_height')
+               circular = profile.getMachineSetting('machine_shape') == 'Circular'
                glBegin(GL_QUADS)
                for n in xrange(0, len(polys[0])):
-                       if n % 2 == 0:
-                               glColor4ub(5, 171, 231, 96)
+                       if not circular:
+                               if n % 2 == 0:
+                                       glColor4ub(5, 171, 231, 96)
+                               else:
+                                       glColor4ub(5, 171, 231, 64)
                        else:
-                               glColor4ub(5, 171, 231, 64)
+                               glColor4ub(5, 171, 231, 96)
+
                        glVertex3f(polys[0][n][0], polys[0][n][1], height)
                        glVertex3f(polys[0][n][0], polys[0][n][1], 0)
                        glVertex3f(polys[0][n-1][0], polys[0][n-1][1], 0)