chiark / gitweb /
Added few missing options
authorDaid <daid303@gmail.com>
Mon, 20 Feb 2012 23:54:04 +0000 (00:54 +0100)
committerDaid <daid303@gmail.com>
Mon, 20 Feb 2012 23:54:04 +0000 (00:54 +0100)
Added transparent mode to 3D preview

SkeinPyPy_NewUI/newui/mainWindow.py
SkeinPyPy_NewUI/newui/preview3d.py

index 3d4c59478078caa3cc6e7893fb505f0d09fe6003..8f2c2dae9989085180397d2ae7114d58d9bf8735 100644 (file)
@@ -65,6 +65,7 @@ class mainWindow(wx.Frame):
                self.AddSetting(configPanel, "Speed (mm/s)", self.plugins['dimension'].preferencesDict['Extruder_Retraction_Speed_mm/s'])
                self.AddSetting(configPanel, "Distance (mm)", self.plugins['dimension'].preferencesDict['Retraction_Distance_millimeters'])
                self.AddSetting(configPanel, "Extra length on start (mm)", self.plugins['dimension'].preferencesDict['Restart_Extra_Distance_millimeters'])
+               self.AddSetting(configPanel, "Minimal travel (mm)", self.plugins['dimension'].preferencesDict['Minimum_Travel_for_Retraction_millimeters'])
 
                configPanel = wx.Panel(nb);
                nb.AddPage(configPanel, "Machine")
@@ -82,6 +83,8 @@ class mainWindow(wx.Frame):
                self.AddTitle(configPanel, "Speed")
                self.AddSetting(configPanel, "Print speed (mm/s)", self.plugins['speed'].preferencesDict['Feed_Rate_mm/s'])
                self.AddSetting(configPanel, "Travel speed (mm/s)", self.plugins['speed'].preferencesDict['Travel_Feed_Rate_mm/s'])
+               self.AddSetting(configPanel, "Max Z speed (mm/z)", self.plugins['speed'].preferencesDict['Maximum_Z_Feed_Rate_mm/s'])
+               self.AddSetting(configPanel, "Bottom Layer Speed Ratio", self.plugins['speed'].preferencesDict['Object_First_Layer_Feed_Rate_Infill_Multiplier_ratio'])
 
                self.AddTitle(configPanel, "Filament")
                self.AddSetting(configPanel, "Diameter (mm)", self.plugins['dimension'].preferencesDict['Filament_Diameter_mm'])
@@ -136,6 +139,7 @@ class mainWindow(wx.Frame):
                        self.controlList.append(ctrl)
                        sizer.Add(ctrl, (sizer.GetRows(),2), flag=wx.ALIGN_BOTTOM|wx.EXPAND)
                sizer.SetRows(sizer.GetRows()+1)
+               return ctrl
        
        def OnSaveProfile(self, e):
                dlg=wx.FileDialog(self, "Select profile file to save", style=wx.FD_SAVE)
index 7a83a47a0640c2fedc96974da1d56365aeacc277..cccfb457ef6533aff15f4ffea1905b09cb609501 100644 (file)
@@ -28,8 +28,11 @@ class myGLCanvas(GLCanvas):
                self.yaw = 30\r
                self.pitch = 60\r
                self.zoom = 150\r
+               self.renderTransparent = False\r
                self.machineSize = Vector3(210, 210, 200)\r
                self.machineCenter = Vector3(100, 100, 0)\r
+               configButton = wx.Button(self, -1, '', (3,3), (10,10))\r
+               self.Bind(wx.EVT_BUTTON, self.OnConfigClick, configButton)\r
        \r
        def loadFile(self, filename):\r
                self.filename = filename\r
@@ -43,7 +46,11 @@ class myGLCanvas(GLCanvas):
                self.triangleMesh = fabmetheus_interpret.getCarving(self.filename)\r
                self.moveModel()\r
                self.Refresh()\r
-               \r
+       \r
+       def OnConfigClick(self, e):\r
+               self.renderTransparent = not self.renderTransparent\r
+               self.Refresh()\r
+       \r
        def moveModel(self):\r
                if self.triangleMesh == None:\r
                        return\r
@@ -97,27 +104,6 @@ class myGLCanvas(GLCanvas):
                \r
                glTranslate(-self.machineCenter.x, -self.machineCenter.y, 0)\r
                \r
-               if self.triangleMesh != None:\r
-                       if self.modelDisplayList == None:\r
-                               self.modelDisplayList = glGenLists(1);\r
-                       if self.modelDirty:\r
-                               self.modelDirty = False\r
-                               glNewList(self.modelDisplayList, GL_COMPILE)\r
-                               glBegin(GL_TRIANGLES)\r
-                               for face in self.triangleMesh.faces:\r
-                                       v1 = self.triangleMesh.vertexes[face.vertexIndexes[0]]\r
-                                       v2 = self.triangleMesh.vertexes[face.vertexIndexes[1]]\r
-                                       v3 = self.triangleMesh.vertexes[face.vertexIndexes[2]]\r
-                                       normal = (v2 - v1).cross(v3 - v1)\r
-                                       normal.normalize()\r
-                                       glNormal3f(normal.x, normal.y, normal.z)\r
-                                       glVertex3f(v1.x, v1.y, v1.z)\r
-                                       glVertex3f(v2.x, v2.y, v2.z)\r
-                                       glVertex3f(v3.x, v3.y, v3.z)\r
-                               glEnd()\r
-                               glEndList()\r
-                       glCallList(self.modelDisplayList)\r
-               \r
                glLineWidth(4)\r
                glDisable(GL_LIGHTING)\r
                glBegin(GL_LINE_LOOP)\r
@@ -152,6 +138,44 @@ class myGLCanvas(GLCanvas):
                glVertex3f(0, self.machineSize.y, 0)\r
                glVertex3f(0, self.machineSize.y, self.machineSize.z)\r
                glEnd()\r
+               \r
+               if self.triangleMesh != None:\r
+                       if self.modelDisplayList == None:\r
+                               self.modelDisplayList = glGenLists(1);\r
+                       if self.modelDirty:\r
+                               self.modelDirty = False\r
+                               glNewList(self.modelDisplayList, GL_COMPILE)\r
+                               glBegin(GL_TRIANGLES)\r
+                               for face in self.triangleMesh.faces:\r
+                                       v1 = self.triangleMesh.vertexes[face.vertexIndexes[0]]\r
+                                       v2 = self.triangleMesh.vertexes[face.vertexIndexes[1]]\r
+                                       v3 = self.triangleMesh.vertexes[face.vertexIndexes[2]]\r
+                                       normal = (v2 - v1).cross(v3 - v1)\r
+                                       normal.normalize()\r
+                                       glNormal3f(normal.x, normal.y, normal.z)\r
+                                       glVertex3f(v1.x, v1.y, v1.z)\r
+                                       glVertex3f(v2.x, v2.y, v2.z)\r
+                                       glVertex3f(v3.x, v3.y, v3.z)\r
+                               glEnd()\r
+                               glEndList()\r
+                       if self.renderTransparent:\r
+                               #If we want transparent, then first render a solid black model to remove the printer size lines.\r
+                               glDisable(GL_BLEND)\r
+                               glDisable(GL_LIGHTING)\r
+                               glColor3f(0,0,0)\r
+                               glCallList(self.modelDisplayList)\r
+                               glColor3f(1,1,1)\r
+                               #After the black model is rendered, render the model again but now with lighting and no depth testing.\r
+                               glDisable(GL_DEPTH_TEST)\r
+                               glEnable(GL_LIGHTING)\r
+                               glEnable(GL_BLEND)\r
+                               glBlendFunc(GL_ONE, GL_ONE)\r
+                               glEnable(GL_LIGHTING)\r
+                               glCallList(self.modelDisplayList)\r
+                       else:\r
+                               glEnable(GL_LIGHTING)\r
+                               glCallList(self.modelDisplayList)\r
+               \r
                self.SwapBuffers()\r
                return\r
 \r
@@ -168,6 +192,8 @@ class myGLCanvas(GLCanvas):
                glEnable(GL_LIGHTING)\r
                glEnable(GL_LIGHT0)\r
                glEnable(GL_DEPTH_TEST)\r
+               glDisable(GL_BLEND)\r
+\r
                glClearColor(0.0, 0.0, 0.0, 1.0)\r
                glClearDepth(1.0)\r
 \r