if scale <= 0.0:\r
scale = 1.0\r
profile.putProfileSetting('model_scale', scale)\r
- self.updateModelTransform()\r
+ self.modelDirty = True\r
+ self.glCanvas.Refresh()\r
\r
def OnScaleMax(self, e):\r
if self.triangleMesh == None:\r
scale = min(scaleX1, scaleY1, scaleX2, scaleY2, scaleZ)\r
self.scale.SetValue(str(scale))\r
profile.putProfileSetting('model_scale', self.scale.GetValue())\r
- self.updateModelTransform()\r
+ self.modelDirty = True\r
+ self.glCanvas.Refresh()\r
\r
def OnRotateReset(self, e):\r
self.rotate.SetValue(0)\r
\r
def updateCenterX(self, x):\r
self.machineCenter.x = x\r
- self.moveModel()\r
self.glCanvas.Refresh()\r
\r
def updateCenterY(self, y):\r
self.machineCenter.y = y\r
- self.moveModel()\r
self.glCanvas.Refresh()\r
\r
def setViewMode(self, mode):\r
def updateModelTransform(self, f=0):\r
if self.triangleMesh == None:\r
return\r
- scale = 1.0\r
- rotate = 0.0\r
- try:\r
- scale = profile.getProfileSettingFloat('model_scale')\r
- rotate = profile.getProfileSettingFloat('model_rotate_base') / 180.0 * math.pi\r
- except:\r
- pass\r
- scaleX = scale\r
- scaleY = scale\r
- scaleZ = scale\r
+ rotate = profile.getProfileSettingFloat('model_rotate_base') / 180.0 * math.pi\r
+ scaleX = 1.0\r
+ scaleY = 1.0\r
+ scaleZ = 1.0\r
if profile.getProfileSetting('flip_x') == 'True':\r
scaleX = -scaleX\r
if profile.getProfileSetting('flip_y') == 'True':\r
face.normal = (v2 - v1).cross(v3 - v1)\r
face.normal.normalize()\r
\r
- self.moveModel()\r
- \r
- def moveModel(self):\r
if self.triangleMesh == None:\r
return\r
minZ = self.triangleMesh.getMinimumZ()\r
v.z -= minZ\r
v.x -= min.x + (max.x - min.x) / 2\r
v.y -= min.y + (max.y - min.y) / 2\r
- v.x += self.machineCenter.x\r
- v.y += self.machineCenter.y\r
self.triangleMesh.getMinimumZ()\r
self.modelDirty = True\r
self.glCanvas.Refresh()\r
self.parent.modelDirty = False\r
multiX = int(profile.getProfileSetting('model_multiply_x'))\r
multiY = int(profile.getProfileSetting('model_multiply_y'))\r
- modelSize = self.parent.triangleMesh.getMaximum() - self.parent.triangleMesh.getMinimum()\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 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
glEndList()\r
\r
+ glTranslate(self.parent.machineCenter.x, self.parent.machineCenter.y, 0)\r
+ glEnable(GL_NORMALIZE)\r
if self.viewMode == "Transparent" or self.viewMode == "Mixed":\r
glLightfv(GL_LIGHT0, GL_DIFFUSE, [0.5, 0.4, 0.3, 1.0])\r
glLightfv(GL_LIGHT0, GL_AMBIENT, [0.1, 0.1, 0.1, 0.0])\r
glDisable(GL_DEPTH_TEST)\r
glDisable(GL_BLEND)\r
glColor3f(1,0,0)\r
- glTranslate(self.parent.machineCenter.x, self.parent.machineCenter.y, 0)\r
glBegin(GL_LINES)\r
for err in self.parent.errorList:\r
glVertex3f(err[0].x, err[0].y, err[0].z)\r