self.toolbar2 = toolbarUtil.Toolbar(self)
group = []
- self.infoToolButton = toolbarUtil.RadioButton(self.toolbar2, group, 'object-rotate.png', 'object-rotate.png', 'Object info', callback=self.OnToolChange)
+ self.infoToolButton = toolbarUtil.RadioButton(self.toolbar2, group, 'info-on.png', 'info-off.png', 'Object info', callback=self.OnToolChange)
self.rotateToolButton = toolbarUtil.RadioButton(self.toolbar2, group, 'object-rotate.png', 'object-rotate.png', 'Rotate object', callback=self.OnToolChange)
self.scaleToolButton = toolbarUtil.RadioButton(self.toolbar2, group, 'object-scale.png', 'object-scale.png', 'Scale object', callback=self.OnToolChange)
self.mirrorToolButton = toolbarUtil.RadioButton(self.toolbar2, group, 'object-mirror-x-on.png', 'object-mirror-x-off.png', 'Mirror object', callback=self.OnToolChange)
glPushMatrix()
glTranslate(self.parent.machineCenter.x, self.parent.machineCenter.y, 0)
for obj in self.parent.objectList:
- if obj.mesh == None:
+ if obj.mesh is None:
continue
- if obj.displayList == None:
+ if obj.displayList is None:
obj.displayList = glGenLists(1)
obj.steepDisplayList = glGenLists(1)
+ obj.outlineDisplayList = glGenLists(1)
if obj.dirty:
obj.dirty = False
glNewList(obj.displayList, GL_COMPILE)
glNewList(obj.steepDisplayList, GL_COMPILE)
opengl.DrawMeshSteep(obj.mesh, 60)
glEndList()
+ glNewList(obj.outlineDisplayList, GL_COMPILE)
+ opengl.DrawMeshOutline(obj.mesh)
+ glEndList()
if self.viewMode == "Mixed":
glDisable(GL_BLEND)
glColor3f(0.0,0.0,0.0)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glColor3f(1.0,1.0,1.0)
glClear(GL_DEPTH_BUFFER_BIT)
if self.viewMode != "Mixed":
glDisable(GL_BLEND)
glColor3f(0.0,0.0,0.0)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glColor3f(1.0,1.0,1.0)
#After the black model is rendered, render the model again but now with lighting and no depth testing.
glDisable(GL_DEPTH_TEST)
glEnable(GL_BLEND)
glBlendFunc(GL_ONE, GL_ONE)
glEnable(GL_LIGHTING)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glEnable(GL_DEPTH_TEST)
elif self.viewMode == "X-Ray":
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)
glEnable(GL_STENCIL_TEST)
glStencilFunc(GL_ALWAYS, 1, 1)
glStencilOp(GL_INCR, GL_INCR, GL_INCR)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)
glStencilFunc(GL_EQUAL, 0, 1)
glColor(1, 1, 1)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glStencilFunc(GL_EQUAL, 1, 1)
glColor(1, 0, 0)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glPushMatrix()
glLoadIdentity()
#Fix the depth buffer
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)
elif self.viewMode == "Normal":
glLightfv(GL_LIGHT0, GL_DIFFUSE, self.objColor[self.parent.objectList.index(obj)])
glLightfv(GL_LIGHT0, GL_AMBIENT, map(lambda x: x * 0.4, self.objColor[self.parent.objectList.index(obj)]))
glEnable(GL_LIGHTING)
- self.drawModel(obj)
+ self.drawModel(obj.displayList)
if self.drawBorders and (self.viewMode == "Normal" or self.viewMode == "Transparent" or self.viewMode == "X-Ray"):
glEnable(GL_DEPTH_TEST)
glDisable(GL_LIGHTING)
glColor3f(1,1,1)
- glPushMatrix()
- opengl.DrawMeshOutline(obj.mesh)
- glPopMatrix()
-
+ self.drawModel(obj.outlineDisplayList)
+
if self.drawSteepOverhang:
glDisable(GL_LIGHTING)
glColor3f(1,1,1)
- glPushMatrix()
- glCallList(obj.steepDisplayList)
- glPopMatrix()
-
+ self.drawModel(obj.steepDisplayList)
+
glPopMatrix()
#if self.viewMode == "Normal" or self.viewMode == "Transparent" or self.viewMode == "X-Ray":
# glDisable(GL_LIGHTING)
glFlush()
- def drawModel(self, obj):
+ def drawModel(self, displayList):
vMin = self.parent.objectsMinV
vMax = self.parent.objectsMaxV
offset = - vMin - (vMax - vMin) / 2
- matrix = opengl.convert3x3MatrixTo4x4(obj.mesh.matrix)
+ matrix = opengl.convert3x3MatrixTo4x4(self.parent.matrix)
glPushMatrix()
glTranslate(0, 0, self.parent.objectsSize[2]/2)
glTranslate(0, 0, -self.parent.objectsSize[2]/2)
glTranslate(offset[0], offset[1], -vMin[2])
glMultMatrixf(matrix)
- glCallList(obj.displayList)
+ glCallList(displayList)
glPopMatrix()
class RadioButton(buttons.GenBitmapButton):
def __init__(self, parent, group, bitmapFilenameOn, bitmapFilenameOff,
- helpText='', id=-1, callback=None, size=(20, 20)):
+ helpText='', id=-1, callback=None):
self.bitmapOn = wx.Bitmap(getPathForImage(bitmapFilenameOn))
self.bitmapOff = wx.Bitmap(getPathForImage(bitmapFilenameOff))
- super(RadioButton, self).__init__(parent, id, self.bitmapOff, size=size)
+ super(RadioButton, self).__init__(parent, id, self.bitmapOff, size=self.bitmapOn.GetSize() + (4, 4))
self.group = group
group.append(self)
def SetValue(self, boolValue):
self._value = boolValue
self.SetBitmap(self.GetValue())
- if boolValue == True:
+ if boolValue:
for other in self.group:
if other != self:
other.SetValue(False)