From: Daid Date: Fri, 4 May 2012 17:28:29 +0000 (+0200) Subject: Merge branch 'master' of github.com:daid/Cura X-Git-Tag: RC3~13^2~1 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7d9bf5adfaced67630bbca2136a3cb809f10d72b;p=cura.git Merge branch 'master' of github.com:daid/Cura --- 7d9bf5adfaced67630bbca2136a3cb809f10d72b diff --cc Cura/gui/projectPlanner.py index 5f77025e,5d4bd80b..b24721e5 --- a/Cura/gui/projectPlanner.py +++ b/Cura/gui/projectPlanner.py @@@ -23,11 -23,109 +23,110 @@@ from util import profil from util import util3d from util import stl from util import sliceRun +from util import gcodeInterpreter - class Action(): + class Action(object): pass + class ProjectObject(stl.stlModel): + def __init__(self, filename): + super(ProjectObject, self).__init__() + + self.load(filename) + + self.filename = filename + self.scale = 1.0 + self.rotate = 0.0 + self.flipX = False + self.flipY = False + self.flipZ = False + self.swapXZ = False + self.swapYZ = False + self.extruder = 0 + + self.modelDisplayList = None + self.modelDirty = False + + self.origonalVertexes = list(self.vertexes) + for i in xrange(0, len(self.origonalVertexes)): + self.origonalVertexes[i] = self.origonalVertexes[i].copy() + self.getMinimumZ() + + self.centerX = -self.getMinimum().x + 5 + self.centerY = -self.getMinimum().y + 5 + + self.updateModelTransform() + + self.centerX = -self.getMinimum().x + 5 + self.centerY = -self.getMinimum().y + 5 + + def updateModelTransform(self): + rotate = self.rotate / 180.0 * math.pi + scaleX = 1.0 + scaleY = 1.0 + scaleZ = 1.0 + if self.flipX: + scaleX = -scaleX + if self.flipY: + scaleY = -scaleY + if self.flipZ: + scaleZ = -scaleZ + swapXZ = self.swapXZ + swapYZ = self.swapYZ + mat00 = math.cos(rotate) * scaleX + mat01 =-math.sin(rotate) * scaleY + mat10 = math.sin(rotate) * scaleX + mat11 = math.cos(rotate) * scaleY + + for i in xrange(0, len(self.origonalVertexes)): + x = self.origonalVertexes[i].x + y = self.origonalVertexes[i].y + z = self.origonalVertexes[i].z + if swapXZ: + x, z = z, x + if swapYZ: + y, z = z, y + self.vertexes[i].x = x * mat00 + y * mat01 + self.vertexes[i].y = x * mat10 + y * mat11 + self.vertexes[i].z = z * scaleZ + + for face in self.faces: + v1 = face.v[0] + v2 = face.v[1] + v3 = face.v[2] + face.normal = (v2 - v1).cross(v3 - v1) + face.normal.normalize() + + minZ = self.getMinimumZ() + minV = self.getMinimum() + maxV = self.getMaximum() + for v in self.vertexes: + v.z -= minZ + v.x -= minV.x + (maxV.x - minV.x) / 2 + v.y -= minV.y + (maxV.y - minV.y) / 2 + self.getMinimumZ() + self.modelDirty = True + + def clone(self): + p = ProjectObject(self.filename) + + p.centerX = self.centerX + 5 + p.centerY = self.centerY + 5 + + p.filename = self.filename + p.scale = self.scale + p.rotate = self.rotate + p.flipX = self.flipX + p.flipY = self.flipY + p.flipZ = self.flipZ + p.swapXZ = self.swapXZ + p.swapYZ = self.swapYZ + p.extruder = self.extruder + + p.updateModelTransform() + + return p + class projectPlanner(wx.Frame): "Main user interface window" def __init__(self):