self._slicer = sliceEngine.Slicer(self._updateSliceProgress)
self._sceneUpdateTimer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, lambda e : self._slicer.runSlicer(self._scene), self._sceneUpdateTimer)
+ self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
self.updateProfileToControls()
wx.EVT_IDLE(self, self.OnIdle)
def sceneUpdated(self):
self._sceneUpdateTimer.Start(1, True)
self._slicer.abortSlicer()
+ self._scene.setSizeOffsets(numpy.array(profile.calculateObjectSizeOffsets(), numpy.float32))
self.Refresh()
def _updateSliceProgress(self, progressValue, ready):
self._mouseX = e.GetX()
self._mouseY = e.GetY()
self._mouseClick3DPos = self._mouse3Dpos
+ self._mouseClickFocus = self._focusObj
if e.ButtonDClick():
self._mouseState = 'doubleClick'
else:
self._zoom = 1
if self._zoom > numpy.max(self._machineSize) * 3:
self._zoom = numpy.max(self._machineSize) * 3
- elif e.LeftIsDown() and self._selectedObj is not None and not self._isSimpleMode:
+ elif e.LeftIsDown() and self._selectedObj is not None and self._selectedObj == self._mouseClickFocus and not self._isSimpleMode:
self._mouseState = 'dragObject'
z = max(0, self._mouseClick3DPos[2])
p0 = opengl.unproject(self._mouseX, self.viewport[1] + self.viewport[3] - self._mouseY, 0, self.modelMatrix, self.projMatrix, self.viewport)
self._mouseX = e.GetX()
self._mouseY = e.GetY()
+ def OnMouseWheel(self, e):
+ self._zoom *= 1.0 - float(e.GetWheelRotation() / e.GetWheelDelta()) / 10.0
+ if self._zoom < 1.0:
+ self._zoom = 1.0
+ if self._zoom > numpy.max(self._machineSize) * 3:
+ self._zoom = numpy.max(self._machineSize) * 3
+ self.Refresh()
+
def _init3DView(self):
# set viewing projection
size = self.GetSize()
solidThickness = getProfileSettingFloat('solid_layer_thickness')
return int(math.ceil(solidThickness / layerHeight - 0.0001))
+def calculateObjectSizeOffsets():
+ size = 0.0
+ if getProfileSettingFloat('skirt_line_count') > 0:
+ size += getProfileSettingFloat('skirt_line_count') * calculateEdgeWidth() + getProfileSettingFloat('skirt_gap')
+ #if getProfileSetting('enable_raft') != 'False':
+ # size += profile.getProfileSettingFloat('raft_margin') * 2
+ #if getProfileSetting('support') != 'None':
+ # extraSizeMin = extraSizeMin + numpy.array([3.0, 0, 0])
+ # extraSizeMax = extraSizeMax + numpy.array([3.0, 0, 0])
+ return [size, size]
+
def getMachineCenterCoords():
if getPreference('machine_center_is_zero') == 'True':
return [0, 0]
except ValueError:
return [1,0,0, 0,1,0, 0,0,1]
-
#########################################################
## Alteration file functions
#########################################################