\r
def OnMulXAddClick(self, e):\r
profile.putProfileSetting('model_multiply_x', str(max(1, int(profile.getProfileSetting('model_multiply_x'))+1)))\r
- self.updateModelTransform()\r
+ self.glCanvas.Refresh()\r
\r
def OnMulXSubClick(self, e):\r
profile.putProfileSetting('model_multiply_x', str(max(1, int(profile.getProfileSetting('model_multiply_x'))-1)))\r
- self.updateModelTransform()\r
+ self.glCanvas.Refresh()\r
\r
def OnMulYAddClick(self, e):\r
profile.putProfileSetting('model_multiply_y', str(max(1, int(profile.getProfileSetting('model_multiply_y'))+1)))\r
- self.updateModelTransform()\r
+ self.glCanvas.Refresh()\r
\r
def OnMulYSubClick(self, e):\r
profile.putProfileSetting('model_multiply_y', str(max(1, int(profile.getProfileSetting('model_multiply_y'))-1)))\r
- self.updateModelTransform()\r
+ self.glCanvas.Refresh()\r
\r
def OnScaleReset(self, e):\r
self.scale.SetValue('1.0')\r
if self.scale.GetValue() != '':\r
scale = self.scale.GetValue()\r
profile.putProfileSetting('model_scale', scale)\r
- self.modelDirty = True\r
self.glCanvas.Refresh()\r
\r
def OnScaleMax(self, e):\r
scale = min(scaleX1, scaleY1, scaleX2, scaleY2, scaleZ)\r
self.scale.SetValue(str(scale))\r
profile.putProfileSetting('model_scale', self.scale.GetValue())\r
- self.modelDirty = True\r
self.glCanvas.Refresh()\r
\r
def OnRotateReset(self, e):\r
face.normal = (v2 - v1).cross(v3 - v1)\r
face.normal.normalize()\r
\r
- if self.triangleMesh == None:\r
- return\r
minZ = self.triangleMesh.getMinimumZ()\r
min = self.triangleMesh.getMinimum()\r
max = self.triangleMesh.getMaximum()\r
self.modelDisplayList = glGenLists(1);\r
if self.parent.modelDirty:\r
self.parent.modelDirty = False\r
- multiX = int(profile.getProfileSetting('model_multiply_x'))\r
- multiY = int(profile.getProfileSetting('model_multiply_y'))\r
- modelScale = profile.getProfileSettingFloat('model_scale')\r
- modelSize = (self.parent.triangleMesh.getMaximum() - self.parent.triangleMesh.getMinimum()) * modelScale\r
glNewList(self.modelDisplayList, GL_COMPILE)\r
- glPushMatrix()\r
- glTranslate(-(modelSize.x+10)*(multiX-1)/2,-(modelSize.y+10)*(multiY-1)/2, 0)\r
- for mx in xrange(0, multiX):\r
- for my in xrange(0, multiY):\r
- glPushMatrix()\r
- glTranslate((modelSize.x+10)*mx,(modelSize.y+10)*my, 0)\r
- glScalef(modelScale, modelScale, modelScale)\r
- opengl.DrawSTL(self.parent.triangleMesh)\r
- glPopMatrix()\r
- glPopMatrix()\r
+ opengl.DrawSTL(self.parent.triangleMesh)\r
glEndList()\r
\r
glTranslate(self.parent.machineCenter.x, self.parent.machineCenter.y, 0)\r
glDisable(GL_BLEND)\r
glDisable(GL_LIGHTING)\r
glColor3f(0,0,0)\r
- glCallList(self.modelDisplayList)\r
+ self.drawModel()\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_BLEND)\r
glBlendFunc(GL_ONE, GL_ONE)\r
glEnable(GL_LIGHTING)\r
- glCallList(self.modelDisplayList)\r
+ self.drawModel()\r
elif self.viewMode == "X-Ray":\r
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)\r
glDisable(GL_DEPTH_TEST)\r
glEnable(GL_STENCIL_TEST);\r
glStencilFunc(GL_ALWAYS, 1, 1)\r
glStencilOp(GL_INCR, GL_INCR, GL_INCR)\r
- glCallList(self.modelDisplayList)\r
+ self.drawModel()\r
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);\r
\r
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)\r
glStencilFunc(GL_EQUAL, 0, 1);\r
glColor(1, 1, 1)\r
- glCallList(self.modelDisplayList)\r
+ self.drawModel()\r
glStencilFunc(GL_EQUAL, 1, 1);\r
glColor(1, 0, 0)\r
- glCallList(self.modelDisplayList)\r
+ self.drawModel()\r
\r
glPushMatrix()\r
glLoadIdentity()\r
glLightfv(GL_LIGHT0, GL_DIFFUSE, [1.0, 0.8, 0.6, 1.0])\r
glLightfv(GL_LIGHT0, GL_AMBIENT, [0.2, 0.2, 0.2, 0.0])\r
glEnable(GL_LIGHTING)\r
- glCallList(self.modelDisplayList)\r
+ self.drawModel()\r
\r
if self.viewMode == "Normal" or self.viewMode == "Transparent" or self.viewMode == "X-Ray":\r
glDisable(GL_LIGHTING)\r
glVertex3f(err[0].x, err[0].y, err[0].z)\r
glVertex3f(err[1].x, err[1].y, err[1].z)\r
glEnd()\r
- \r
glFlush()\r
+ \r
+ def drawModel(self):\r
+ multiX = int(profile.getProfileSetting('model_multiply_x'))\r
+ multiY = int(profile.getProfileSetting('model_multiply_y'))\r
+ modelScale = profile.getProfileSettingFloat('model_scale')\r
+ modelSize = (self.parent.triangleMesh.getMaximum() - self.parent.triangleMesh.getMinimum()) * modelScale\r
+ glPushMatrix()\r
+ glTranslate(-(modelSize.x+10)*(multiX-1)/2,-(modelSize.y+10)*(multiY-1)/2, 0)\r
+ for mx in xrange(0, multiX):\r
+ for my in xrange(0, multiY):\r
+ glPushMatrix()\r
+ glTranslate((modelSize.x+10)*mx,(modelSize.y+10)*my, 0)\r
+ glScalef(modelScale, modelScale, modelScale)\r
+ glCallList(self.modelDisplayList)\r
+ glPopMatrix()\r
+ glPopMatrix()\r
+\r