Added border view option for 3D view.
parent
b65977a595
commit
4a1fd13ff5
|
@ -47,7 +47,7 @@ def InitGL(window, view3D, zoom):
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
|
||||||
|
|
||||||
def DrawMachine(machineSize):
|
def DrawMachine(machineSize):
|
||||||
glColor3f(1,1,1)
|
glColor3f(1.0,1.0,1.0)
|
||||||
glLineWidth(4)
|
glLineWidth(4)
|
||||||
glDisable(GL_LIGHTING)
|
glDisable(GL_LIGHTING)
|
||||||
glBegin(GL_LINE_LOOP)
|
glBegin(GL_LINE_LOOP)
|
||||||
|
@ -56,6 +56,7 @@ def DrawMachine(machineSize):
|
||||||
glVertex3f(machineSize.x, machineSize.y, 0)
|
glVertex3f(machineSize.x, machineSize.y, 0)
|
||||||
glVertex3f(0, machineSize.y, 0)
|
glVertex3f(0, machineSize.y, 0)
|
||||||
glEnd()
|
glEnd()
|
||||||
|
glColor3f(0.7,0.7,0.7)
|
||||||
glLineWidth(2)
|
glLineWidth(2)
|
||||||
glBegin(GL_LINES)
|
glBegin(GL_LINES)
|
||||||
for i in xrange(0, int(machineSize.x), 10):
|
for i in xrange(0, int(machineSize.x), 10):
|
||||||
|
@ -203,7 +204,21 @@ def DrawBox(vMin, vMax):
|
||||||
glVertex3f(vMin[0], vMax[1], vMax[2])
|
glVertex3f(vMin[0], vMax[1], vMax[2])
|
||||||
glEnd()
|
glEnd()
|
||||||
|
|
||||||
def DrawSTL(mesh):
|
def DrawMeshOutline(mesh):
|
||||||
|
glEnable(GL_CULL_FACE)
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glVertexPointer(3, GL_FLOAT, 0, mesh.vertexes)
|
||||||
|
|
||||||
|
glCullFace(GL_FRONT)
|
||||||
|
glLineWidth(3)
|
||||||
|
glPolygonMode(GL_BACK, GL_LINE)
|
||||||
|
glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount)
|
||||||
|
glPolygonMode(GL_BACK, GL_FILL)
|
||||||
|
glCullFace(GL_BACK)
|
||||||
|
|
||||||
|
glDisableClientState(GL_VERTEX_ARRAY)
|
||||||
|
|
||||||
|
def DrawMesh(mesh):
|
||||||
glEnable(GL_CULL_FACE)
|
glEnable(GL_CULL_FACE)
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glEnableClientState(GL_NORMAL_ARRAY);
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
|
|
@ -76,6 +76,9 @@ class previewPanel(wx.Panel):
|
||||||
toolbarUtil.RadioButton(self.toolbar, group, 'object-top-on.png', 'object-top-off.png', 'Topdown view', callback=self.OnTopClick)
|
toolbarUtil.RadioButton(self.toolbar, group, 'object-top-on.png', 'object-top-off.png', 'Topdown view', callback=self.OnTopClick)
|
||||||
self.toolbar.AddSeparator()
|
self.toolbar.AddSeparator()
|
||||||
|
|
||||||
|
self.showBorderButton = toolbarUtil.ToggleButton(self.toolbar, '', 'view-border-on.png', 'view-border-off.png', 'Show model borders', callback=self.OnViewChange)
|
||||||
|
self.toolbar.AddSeparator()
|
||||||
|
|
||||||
group = []
|
group = []
|
||||||
self.normalViewButton = toolbarUtil.RadioButton(self.toolbar, group, 'view-normal-on.png', 'view-normal-off.png', 'Normal model view', callback=self.OnViewChange)
|
self.normalViewButton = toolbarUtil.RadioButton(self.toolbar, group, 'view-normal-on.png', 'view-normal-off.png', 'Normal model view', callback=self.OnViewChange)
|
||||||
self.transparentViewButton = toolbarUtil.RadioButton(self.toolbar, group, 'view-transparent-on.png', 'view-transparent-off.png', 'Transparent model view', callback=self.OnViewChange)
|
self.transparentViewButton = toolbarUtil.RadioButton(self.toolbar, group, 'view-transparent-on.png', 'view-transparent-off.png', 'Transparent model view', callback=self.OnViewChange)
|
||||||
|
@ -331,6 +334,7 @@ class previewPanel(wx.Panel):
|
||||||
self.glCanvas.viewMode = "GCode"
|
self.glCanvas.viewMode = "GCode"
|
||||||
elif self.mixedViewButton.GetValue():
|
elif self.mixedViewButton.GetValue():
|
||||||
self.glCanvas.viewMode = "Mixed"
|
self.glCanvas.viewMode = "Mixed"
|
||||||
|
self.glCanvas.drawBorders = self.showBorderButton.GetValue()
|
||||||
self.updateToolbar()
|
self.updateToolbar()
|
||||||
self.glCanvas.Refresh()
|
self.glCanvas.Refresh()
|
||||||
|
|
||||||
|
@ -533,7 +537,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
||||||
if obj.dirty:
|
if obj.dirty:
|
||||||
obj.dirty = False
|
obj.dirty = False
|
||||||
glNewList(obj.displayList, GL_COMPILE)
|
glNewList(obj.displayList, GL_COMPILE)
|
||||||
opengl.DrawSTL(obj.mesh)
|
opengl.DrawMesh(obj.mesh)
|
||||||
glEndList()
|
glEndList()
|
||||||
|
|
||||||
if self.viewMode == "Transparent" or self.viewMode == "Mixed":
|
if self.viewMode == "Transparent" or self.viewMode == "Mixed":
|
||||||
|
@ -593,11 +597,23 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
||||||
|
|
||||||
glDisable(GL_STENCIL_TEST)
|
glDisable(GL_STENCIL_TEST)
|
||||||
glEnable(GL_DEPTH_TEST)
|
glEnable(GL_DEPTH_TEST)
|
||||||
|
|
||||||
|
if self.drawBorders:
|
||||||
|
#Fix the depth buffer for the outline drawing.
|
||||||
|
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)
|
||||||
|
self.drawModel(obj)
|
||||||
|
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)
|
||||||
elif self.viewMode == "Normal":
|
elif self.viewMode == "Normal":
|
||||||
glLightfv(GL_LIGHT0, GL_DIFFUSE, self.objColor[self.parent.objectList.index(obj)])
|
glLightfv(GL_LIGHT0, GL_DIFFUSE, self.objColor[self.parent.objectList.index(obj)])
|
||||||
glLightfv(GL_LIGHT0, GL_AMBIENT, map(lambda x: x / 5, self.objColor[self.parent.objectList.index(obj)]))
|
glLightfv(GL_LIGHT0, GL_AMBIENT, map(lambda x: x / 5, self.objColor[self.parent.objectList.index(obj)]))
|
||||||
glEnable(GL_LIGHTING)
|
glEnable(GL_LIGHTING)
|
||||||
self.drawModel(obj)
|
self.drawModel(obj)
|
||||||
|
|
||||||
|
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)
|
||||||
|
opengl.DrawMeshOutline(obj.mesh)
|
||||||
|
|
||||||
glPopMatrix()
|
glPopMatrix()
|
||||||
if self.viewMode == "Normal" or self.viewMode == "Transparent" or self.viewMode == "X-Ray":
|
if self.viewMode == "Normal" or self.viewMode == "Transparent" or self.viewMode == "X-Ray":
|
||||||
|
|
|
@ -94,6 +94,8 @@ class ToggleButton(buttons.GenBitmapToggleButton):
|
||||||
|
|
||||||
def OnButton(self, event):
|
def OnButton(self, event):
|
||||||
self.SetBitmap(self.GetValue())
|
self.SetBitmap(self.GetValue())
|
||||||
|
if self.callback != None:
|
||||||
|
self.callback()
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def OnButtonProfile(self, event):
|
def OnButtonProfile(self, event):
|
||||||
|
@ -103,7 +105,8 @@ class ToggleButton(buttons.GenBitmapToggleButton):
|
||||||
else:
|
else:
|
||||||
self.SetBitmap(False)
|
self.SetBitmap(False)
|
||||||
profile.putProfileSetting(self.profileSetting, 'False')
|
profile.putProfileSetting(self.profileSetting, 'False')
|
||||||
self.callback()
|
if self.callback != None:
|
||||||
|
self.callback()
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def OnMouseEnter(self, event):
|
def OnMouseEnter(self, event):
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 867 B |
Binary file not shown.
After Width: | Height: | Size: 902 B |
Loading…
Reference in New Issue