self.glCanvas.Refresh()\r
\r
def loadModelFile(self, filename):\r
- gcodeFilename = filename[: filename.rfind('.')] + "_export.gcode"\r
if self.modelFilename != filename:\r
self.modelFileTime = None\r
self.gcodeFileTime = None\r
+ self.logFileTime = None\r
\r
self.modelFilename = filename\r
- self.gcodeFilename = gcodeFilename\r
+ self.gcodeFilename = filename[: filename.rfind('.')] + "_export.gcode"\r
+ self.logFilename = filename[: filename.rfind('.')] + "_export.log"\r
#Do the STL file loading in a background thread so we don't block the UI.\r
thread = threading.Thread(target=self.doFileLoad)\r
thread.start()\r
triangleMesh.origonalVertexes[i] = triangleMesh.origonalVertexes[i].copy()\r
triangleMesh.getMinimumZ()\r
self.modelDirty = False\r
+ self.errorList = []\r
self.triangleMesh = triangleMesh\r
self.updateModelTransform()\r
wx.CallAfter(self.updateToolbar)\r
self.gcodeFileTime = os.stat(self.gcodeFilename).st_mtime\r
gcode = gcodeInterpreter.gcode(self.gcodeFilename)\r
self.gcodeDirty = False\r
+ self.errorList = []\r
self.gcode = gcode\r
self.gcodeDirty = True\r
wx.CallAfter(self.updateToolbar)\r
wx.CallAfter(self.glCanvas.Refresh)\r
+ elif not os.path.isfile(self.gcodeFilename):\r
+ self.gcode = None\r
+ \r
+ if os.path.isfile(self.logFilename):\r
+ errorList = []\r
+ for line in open(self.logFilename, "rt"):\r
+ res = re.search('Model error\(([a-z ]*)\): \(([0-9\.\-e]*), ([0-9\.\-e]*), ([0-9\.\-e]*)\) \(([0-9\.\-e]*), ([0-9\.\-e]*), ([0-9\.\-e]*)\)', line)\r
+ if res != None:\r
+ v1 = util3d.Vector3(float(res.group(2)), float(res.group(3)), float(res.group(4)))\r
+ v2 = util3d.Vector3(float(res.group(5)), float(res.group(6)), float(res.group(7)))\r
+ errorList.append([v1, v2])\r
+ self.errorList = errorList\r
+ wx.CallAfter(self.glCanvas.Refresh)\r
\r
def updateToolbar(self):\r
self.layerSpin.Show(self.gcode != None)\r
elif self.viewMode == "Model - Normal":\r
glEnable(GL_LIGHTING)\r
glCallList(self.modelDisplayList)\r
+ \r
+ glDisable(GL_LIGHTING)\r
+ glDisable(GL_DEPTH_TEST)\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
+ glVertex3f(err[1].x, err[1].y, err[1].z)\r
+ glEnd()\r
glFlush()\r
\r
def InitGL(self):\r
mat01 =-math.sin(rotate) * scaleY
mat10 = math.sin(rotate) * scaleX
mat11 = math.cos(rotate) * scaleY
+
+ minZ = carving.getMinimumZ()
+ minSize = carving.getCarveCornerMinimum()
+ maxSize = carving.getCarveCornerMaximum()
+ for v in carving.vertexes:
+ v.z -= minZ
+ v.x -= minSize.x + (maxSize.x - minSize.x) / 2
+ v.y -= minSize.y + (maxSize.y - minSize.y) / 2
+ #v.x += self.machineCenter.x
+ #v.y += self.machineCenter.y
for i in xrange(0, len(carving.vertexes)):
carving.vertexes[i] = Vector3(