From 03f19554086e5d3a85e3cc5aa0cf5f13e6939a84 Mon Sep 17 00:00:00 2001 From: daid303 Date: Mon, 28 Jan 2013 10:23:22 +0100 Subject: [PATCH] More fixes for the project planner, still not functional. --- Cura/gui/projectPlanner.py | 61 ++++++++++--------- Cura/gui/util/previewTools.py | 2 +- .../skeinforge_utilities/skeinforge_craft.py | 2 +- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/Cura/gui/projectPlanner.py b/Cura/gui/projectPlanner.py index a488bac6..38f870c6 100644 --- a/Cura/gui/projectPlanner.py +++ b/Cura/gui/projectPlanner.py @@ -9,8 +9,6 @@ import shutil import ConfigParser import numpy -from wx import glcanvas - import OpenGL OpenGL.ERROR_CHECKING = False from OpenGL.GLU import * @@ -93,14 +91,15 @@ class ProjectObject(object): return p def clampXY(self): - if self.centerX < -self.getMinimum()[0] * self.scale + self.parent.extruderOffset[self.extruder][0]: - self.centerX = -self.getMinimum()[0] * self.scale + self.parent.extruderOffset[self.extruder][0] - if self.centerY < -self.getMinimum()[1] * self.scale + self.parent.extruderOffset[self.extruder][1]: - self.centerY = -self.getMinimum()[1] * self.scale + self.parent.extruderOffset[self.extruder][1] - if self.centerX > self.parent.machineSize[0] + self.parent.extruderOffset[self.extruder][0] - self.getMaximum()[0] * self.scale: - self.centerX = self.parent.machineSize[0] + self.parent.extruderOffset[self.extruder][0] - self.getMaximum()[0] * self.scale - if self.centerY > self.parent.machineSize[1] + self.parent.extruderOffset[self.extruder][1] - self.getMaximum()[1] * self.scale: - self.centerY = self.parent.machineSize[1] + self.parent.extruderOffset[self.extruder][1] - self.getMaximum()[1] * self.scale + size = self.getSize() + if self.centerX < size[0] / 2: + self.centerX = size[0] / 2 + if self.centerY < size[1] / 2: + self.centerY = size[1] / 2 + if self.centerX > self.parent.machineSize[0] - size[0] / 2: + self.centerX = self.parent.machineSize[0] - size[0] / 2 + if self.centerY > self.parent.machineSize[1] - size[1] / 2: + self.centerY = self.parent.machineSize[1] - size[1] / 2 class projectPlanner(wx.Frame): "Main user interface window" @@ -498,16 +497,16 @@ class projectPlanner(wx.Frame): maxX = 0 maxY = 0 for item in self.list: - item.centerX = posX + item.getMaximum()[0] * dirX - item.centerY = posY + item.getMaximum()[1] * dirY + item.centerX = posX + item.getSize()[0] / 2 * dirX + item.centerY = posY + item.getSize()[1] / 2 * dirY if item.centerY + item.getSize()[1] >= allowedSizeY: if dirX < 0: posX = minX - extraSizeMax[0] - 1 else: posX = maxX + extraSizeMin[0] + 1 posY = 0 - item.centerX = posX + item.getMaximum()[0] * dirX - item.centerY = posY + item.getMaximum()[1] * dirY + item.centerX = posX + item.getSize()[0] / 2 * dirX + item.centerY = posY + item.getSize()[1] / 2 * dirY posY += item.getSize()[1] * dirY + extraSizeMin[1] + 1 minX = min(minX, item.centerX - item.getSize()[0] / 2) minY = min(minY, item.centerY - item.getSize()[1] / 2) @@ -593,6 +592,7 @@ class PreviewGLCanvas(openglGui.glGuiPanel): else: self.zoom = self.parent.machineSize[0] / 2 + 10 self.dragType = '' + self.viewport = None self.allowDrag = False self.tempMatrix = None @@ -601,13 +601,13 @@ class PreviewGLCanvas(openglGui.glGuiPanel): def OnMouseLeftDown(self,e): self.allowDrag = True if not self.parent.alwaysAutoPlace and not self.view3D: - p0 = numpy.array(gluUnProject(e.GetX(), self.viewport[1] + self.viewport[3] - e.GetY(), 0, self.modelMatrix, self.projMatrix, self.viewport)) - p1 = numpy.array(gluUnProject(e.GetX(), self.viewport[1] + self.viewport[3] - e.GetY(), 1, self.modelMatrix, self.projMatrix, self.viewport)) + p0 = opengl.unproject(e.GetX(), self.viewport[1] + self.viewport[3] - e.GetY(), 0, self.modelMatrix, self.projMatrix, self.viewport) + p1 = opengl.unproject(e.GetX(), self.viewport[1] + self.viewport[3] - e.GetY(), 1, self.modelMatrix, self.projMatrix, self.viewport) cursorZ0 = p0 - (p1 - p0) * (p0[2] / (p1[2] - p0[2])) for item in self.parent.list: - iMin = (item.getMinimum() * item.scale) + numpy.array([item.centerX, item.centerY, 0]) - self.parent.extruderOffset[item.extruder] - iMax = (item.getMaximum() * item.scale) + numpy.array([item.centerX, item.centerY, 0]) - self.parent.extruderOffset[item.extruder] + iMin =-item.getSize() / 2 + numpy.array([item.centerX, item.centerY, 0]) + iMax = item.getSize() / 2 + numpy.array([item.centerX, item.centerY, 0]) if iMin[0] <= cursorZ0[0] <= iMax[0] and iMin[1] <= cursorZ0[1] <= iMax[1]: self.parent.selection = item self.parent._updateListbox() @@ -681,11 +681,12 @@ class PreviewGLCanvas(openglGui.glGuiPanel): glRotate(self.yaw, 0,0,1) else: glTranslate(self.offsetX, self.offsetY, 0.0) - glTranslate(-self.parent.machineSize[0]/2, -self.parent.machineSize[1]/2, 0) - self.viewport = glGetIntegerv(GL_VIEWPORT); - self.modelMatrix = glGetDoublev(GL_MODELVIEW_MATRIX); - self.projMatrix = glGetDoublev(GL_PROJECTION_MATRIX); + self.viewport = glGetIntegerv(GL_VIEWPORT) + self.modelMatrix = glGetDoublev(GL_MODELVIEW_MATRIX) + self.projMatrix = glGetDoublev(GL_PROJECTION_MATRIX) + + glTranslate(-self.parent.machineSize[0]/2, -self.parent.machineSize[1]/2, 0) self.OnDraw() @@ -699,16 +700,16 @@ class PreviewGLCanvas(openglGui.glGuiPanel): for idx1 in xrange(0, len(self.parent.list)): item = self.parent.list[idx1] - iMin1 = item.getMinimum() + numpy.array([item.centerX, item.centerY, 0]) - extraSizeMin #- self.parent.extruderOffset[item.extruder] - iMax1 = item.getMaximum() + numpy.array([item.centerX, item.centerY, 0]) + extraSizeMax #- self.parent.extruderOffset[item.extruder] + iMin1 =-item.getSize() / 2 + numpy.array([item.centerX, item.centerY, 0]) - extraSizeMin #- self.parent.extruderOffset[item.extruder] + iMax1 = item.getSize() / 2 + numpy.array([item.centerX, item.centerY, 0]) + extraSizeMax #- self.parent.extruderOffset[item.extruder] if iMin1[0] < -self.parent.headSizeMin[0] or iMin1[1] < -self.parent.headSizeMin[1]: item.validPlacement = False if iMax1[0] > machineSize[0] + self.parent.headSizeMax[0] or iMax1[1] > machineSize[1] + self.parent.headSizeMax[1]: item.validPlacement = False for idx2 in xrange(0, idx1): item2 = self.parent.list[idx2] - iMin2 = item2.getMinimum() + numpy.array([item2.centerX, item2.centerY, 0]) - iMax2 = item2.getMaximum() + numpy.array([item2.centerX, item2.centerY, 0]) + iMin2 =-item2.getSize() / 2 + numpy.array([item2.centerX, item2.centerY, 0]) + iMax2 = item2.getSize() / 2 + numpy.array([item2.centerX, item2.centerY, 0]) if item != item2 and iMax1[0] >= iMin2[0] and iMin1[0] <= iMax2[0] and iMax1[1] >= iMin2[1] and iMin1[1] <= iMax2[1]: item.validPlacement = False item2.gotHit = True @@ -750,7 +751,7 @@ class PreviewGLCanvas(openglGui.glGuiPanel): matrix = opengl.convert3x3MatrixTo4x4(item.matrix) glPushMatrix() glTranslate(0, 0, item.getSize()[2]/2) - if self.tempMatrix is not None: + if self.tempMatrix is not None and item == self.parent.selection: tempMatrix = opengl.convert3x3MatrixTo4x4(self.tempMatrix) glMultMatrixf(tempMatrix) glTranslate(0, 0, -item.getSize()[2]/2) @@ -759,8 +760,10 @@ class PreviewGLCanvas(openglGui.glGuiPanel): glCallList(item.modelDisplayList) glPopMatrix() - vMin = item.getMinimum() - vMax = item.getMaximum() + vMin =-item.getSize() / 2 + vMax = item.getSize() / 2 + vMax[2] -= vMin[2] + vMin[2] = 0 vMinHead = vMin - extraSizeMin# - self.parent.extruderOffset[item.extruder] vMaxHead = vMax + extraSizeMax# - self.parent.extruderOffset[item.extruder] diff --git a/Cura/gui/util/previewTools.py b/Cura/gui/util/previewTools.py index b77411c7..c6eded8f 100644 --- a/Cura/gui/util/previewTools.py +++ b/Cura/gui/util/previewTools.py @@ -300,7 +300,7 @@ class toolScale(object): return t def _nodeSize(self): - return self.parent.zoom / self.parent.GetSize().GetWidth() * 6 + return float(self.parent.zoom) / float(self.parent.GetSize().GetWidth()) * 6.0 def OnMouseMove(self, p0, p1): self.node = self._traceNodes(p0, p1) diff --git a/Cura/slice/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_craft.py b/Cura/slice/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_craft.py index 4a54ffda..83a5c8be 100644 --- a/Cura/slice/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_craft.py +++ b/Cura/slice/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_craft.py @@ -45,7 +45,7 @@ def getChainTextFromProcedures(fileName, procedures, text): print(fileName) return '' if gcodec.isProcedureDone( text, procedure ): - print('%s procedure took %s.' % (procedure.capitalize(), euclidean.getDurationString(time.time() - lastProcedureTime))) + print('%s procedure took %s (%d).' % (procedure.capitalize(), euclidean.getDurationString(time.time() - lastProcedureTime)), len(text)) lastProcedureTime = time.time() return text -- 2.30.2