From fd98542ce969d03aa088b48282c2716977cec650 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 27 Jul 2012 13:48:24 +0200 Subject: [PATCH] Improve performance of rotating 3D objects a bit. --- Cura/gui/opengl.py | 2 +- Cura/gui/projectPlanner.py | 2 ++ Cura/util/mesh.py | 17 ++++++----------- Cura/util/profile.py | 1 + 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Cura/gui/opengl.py b/Cura/gui/opengl.py index 1c385e5965..7b2b676c22 100644 --- a/Cura/gui/opengl.py +++ b/Cura/gui/opengl.py @@ -216,8 +216,8 @@ def DrawSTL(mesh): glVertex3f(v3[0], v3[1], v3[2]) glNormal3f(-mesh.normal[i/3][0], -mesh.normal[i/3][1], -mesh.normal[i/3][2]) glVertex3f(v1[0], v1[1], v1[2]) - glVertex3f(v2[0], v2[1], v2[2]) glVertex3f(v3[0], v3[1], v3[2]) + glVertex3f(v2[0], v2[1], v2[2]) glEnd() def DrawGCodeLayer(layer): diff --git a/Cura/gui/projectPlanner.py b/Cura/gui/projectPlanner.py index 5872956ae3..35bed71fc8 100644 --- a/Cura/gui/projectPlanner.py +++ b/Cura/gui/projectPlanner.py @@ -1081,6 +1081,8 @@ class preferencesDialog(configBase.configWindowBase): validators.validFloat(c, 0.1) c = configBase.SettingRow(left, 'Head size - Y towards end (mm)', 'extruder_head_size_max_y', '0', 'Size of your printer head in the Y direction.', type = 'preference') validators.validFloat(c, 0.1) + c = configBase.SettingRow(left, 'Head gantry height (mm)', 'extruder_head_size_height', '0', 'The tallest object height that will always fit under your printers gantry system when the printer head is at the lowest Z position.', type = 'preference') + validators.validFloat(c) self.okButton = wx.Button(left, -1, 'Ok') left.GetSizer().Add(self.okButton, (left.GetSizer().GetRows(), 1)) diff --git a/Cura/util/mesh.py b/Cura/util/mesh.py index 4cb1d1899c..128d362e3f 100644 --- a/Cura/util/mesh.py +++ b/Cura/util/mesh.py @@ -56,17 +56,12 @@ class mesh(object): mat10 = math.sin(rotate) * scaleX mat11 = math.cos(rotate) * scaleY - for i in xrange(0, len(self.origonalVertexes)): - x = self.origonalVertexes[i][0] - y = self.origonalVertexes[i][1] - z = self.origonalVertexes[i][2] - if swapXZ: - x, z = z, x - if swapYZ: - y, z = z, y - self.vertexes[i][0] = x * mat00 + y * mat01 - self.vertexes[i][1] = x * mat10 + y * mat11 - self.vertexes[i][2] = z * scaleZ + mat = numpy.array([[mat00,mat10,0],[mat01,mat11,0],[0,0,scaleZ]]) + if swapXZ: + mat = numpy.array([mat[2],mat[1],mat[0]]) + if swapYZ: + mat = numpy.array([mat[0],mat[2],mat[1]]) + self.vertexes = (numpy.matrix(self.origonalVertexes, copy = False) * numpy.matrix(mat)).getA() for i in xrange(0, len(self.origonalVertexes), 3): v1 = self.vertexes[i] diff --git a/Cura/util/profile.py b/Cura/util/profile.py index e3ef0717d9..c90bdf5286 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -177,6 +177,7 @@ preferencesDefaultSettings = { 'extruder_head_size_min_y': '18.0', 'extruder_head_size_max_x': '18.0', 'extruder_head_size_max_y': '35.0', + 'extruder_head_size_height': '80.0', } #########################################################