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()
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():
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():
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:
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)