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")
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'])
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)
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
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
\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
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
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