From 09a4f0847c1f56db35cf5d053fc7052ddde82809 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 19 Mar 2012 16:15:16 +0100 Subject: [PATCH] Only reload model/gcode if they have changed. Renambed "open gcode" button to "show result" --- .../fonts/gentium_basic_regular.svg | 104 ------------------ .../images/display_line.ppm | 5 - .../fabmetheus_utilities/images/dive.ppm | 5 - .../fabmetheus_utilities/images/soar.ppm | 5 - .../fabmetheus_utilities/images/stop.ppm | 5 - .../fabmetheus_utilities/images/view_move.ppm | Bin 2245 -> 0 bytes .../images/view_rotate.ppm | Bin 2245 -> 0 bytes .../fabmetheus_utilities/images/zoom_in.ppm | 5 - .../fabmetheus_utilities/images/zoom_out.ppm | 5 - SkeinPyPy/newui/preview3d.py | 64 +++++------ SkeinPyPy/newui/sliceProgessPanel.py | 3 +- 11 files changed, 33 insertions(+), 168 deletions(-) delete mode 100644 SkeinPyPy/fabmetheus_utilities/fonts/gentium_basic_regular.svg delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/display_line.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/dive.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/soar.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/stop.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/view_move.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/view_rotate.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/zoom_in.ppm delete mode 100644 SkeinPyPy/fabmetheus_utilities/images/zoom_out.ppm diff --git a/SkeinPyPy/fabmetheus_utilities/fonts/gentium_basic_regular.svg b/SkeinPyPy/fabmetheus_utilities/fonts/gentium_basic_regular.svg deleted file mode 100644 index 418f023e..00000000 --- a/SkeinPyPy/fabmetheus_utilities/fonts/gentium_basic_regular.svg +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SkeinPyPy/fabmetheus_utilities/images/display_line.ppm b/SkeinPyPy/fabmetheus_utilities/images/display_line.ppm deleted file mode 100644 index 4738d036..00000000 --- a/SkeinPyPy/fabmetheus_utilities/images/display_line.ppm +++ /dev/null @@ -1,5 +0,0 @@ -P6 -# CREATOR: The GIMP's PNM Filter Version 1.0 -27 27 -255 -ZHMPRRcޫCHMRV\k\T@EKPV~~TR@FLS\\\:@GMTkYkQ:@FLS\\Q9?EKPV~~VP⿾6=BHMRV\k\VRKⱯ4:?DIMPSTSPME⢢C7<@DHKLMLKHGƩ28raz+6vx5r&3LmHW*cN=X(DE?Mm7@Hu@@pC(>TIqLbeQCrf3;8SfRii7Xd@i z&;o^8M$09%rBF6;&Ohhyi&-_hN9`I57Wii`aN0xl&bapLdd;zK#INtf$m ze}7uAIoTuKH-QO>iJ*NF7>NDr(9k0Z903P7Vz*Oo1cYts?BtXj?y`Yx1_L7oim~ku z2V);;5b(*=RM5$jK0ZE-o@0L(83_%OJ;YdCS@}LL4(0SPO1NyBvNyA{=a-k6_*;$7 zgM)p2eW8DE|ABELCCq*ZL$O5B!DKMI zJT1zkDVv?1*x1?Okl8@cx_Wx(bjObE4Hi%C#nTMuO{1;8WO;234Kq!$foQBYH{rt% z-Uo+(d_KQb-%ybjQ+4aAvN&BP+UvPgcvex6Qg-be@fDfz6HgrLTU*pB19ZC{%Y+fo z*@GgntTSXEcN_j z=NR+^)R(1GiLRl#v%7oPZvWK(cvEHG{K7Mg9SgTW0_=vr)F`jI`IE!xe7dmE-PTAc zWq#7k+#G=8Ll%nE+|4j{bT}s`Jzg)axKS#;uPUxDOmYlc&ANLGuwL?;TABrSaAX9p z<*L`Kl^pcb-mC(!Rgp_#v^Q+CEqOc`1tOT+AK8hN!sN-oelPoHZABi8-hlyhxV5|M zbPQ2eS(prPVD;l*b|4Og5qvv6_(bV4dphZ=11)2s)hS|_sbL$tL=0BUqJtfI_6MBn!QPhH^j{ATe>+{=V+&yh~Jj z_%6@-v87pKwpj2VfkMy#VFQVYFZ9dBo!o%qU8SA0y?_g`g^^mVipW&Uuu7w-Q1*lb!j_0^3MdUUA;iiS zNXUeQAZZZ;VNJ9YNGZiYL7-um0s}}Hpu~TmKjzSHGKe8_=FB- zH*YW|CMQk({rL|blvP&FE-Y;A>}>ArU{)xV+Q!D$8ygrz^U(R#(h@g0IU*{`#nsi( z(b3D>duVhNG>p~t^l&9x=|NlZ5jOn>Ka%=aI zRx3D}+1b&tv2uk1?>rQUXW;8jPEJ5NI5@C59GvXC1uKd~qFZ5M&$_$!iQe9BTdh;G zv&7iz9IyrEGm|pPms+P+k{cCCp)*YyZ!{L`N;mNkn&UY!0^9hS3p3O#XkPz5W9=BK$ zlafSYv3<>%`S~~&OQ}+AY;W74L4;gI4qOWjg&}q{;pFs;i~@ncjt&vQ8^@iU1wx@^ zcGiwEf+Cg4kP=k-*((3NFf(TEH8hm9swLc*>qn0r`&p}*nVx_-?=l=flm_B^FE5XZ z2snV0rv(b5&tMcqewpZh!qxfc&1->03H~@KO$}&Ol}t~L{j;^Tj|?C__e7^-#m6Ii z@jRopoNzFUou)?=_0KexH2wA!_iHyPL0{9|DRwIVFXcmQpF;Yh}eoV^@Q$7#xt1=c-5fgb70i z`i!V1FbVMW`f3>u=6oe)T~f*`R2mIjS}v8M+q@Va9_-dr7aJ<>H%JSy1$l62sH?T9 zn00aY6I|avM~1*8z=o1Eaz&$*ws&=nPE1thL^R94pMNz6Z(tw_L;-V4qZ-#MGIq;w zesR&Dt0SW7+*q^)0EbPTTVf)kwxGG6D5!udFg*uLThOin2&4;zI{{RVPeB?BFiUwlopbtG>1hhhX-YOsEAaZ)?Qa9R>q{cr*N< z5~h-i%A#bb!Ee~g3pib!ddx&rnjNiCE6BE~UjF;wV4GS(MAAH#POpc70OHMH!o5K4 zNwdR|SH#tb-E%|Rv*!kVYqPFNi!F3u2ogqiFOulPb-I=o_#Y4g1QTY$!$>otgIRu` zN!g2_JWBQ>A{aypp)D7hkZcePsDw3WyLZ*4JV`e bI*mr$ZSCm5zye!Rl4#vfgEB&Zi)8!<_CWYS diff --git a/SkeinPyPy/fabmetheus_utilities/images/zoom_in.ppm b/SkeinPyPy/fabmetheus_utilities/images/zoom_in.ppm deleted file mode 100644 index 6f4767f4..00000000 --- a/SkeinPyPy/fabmetheus_utilities/images/zoom_in.ppm +++ /dev/null @@ -1,5 +0,0 @@ -P6 -# CREATOR: The GIMP's PNM Filter Version 1.0 -16 16 -255 -ÑҮmϩeΧcШjٻܿ԰p׷}ѯάҭw̡gӺ԰pϩţɛc‘׶}ͤqҮҭlѮħÒ[Ϩcg\aW\R⿋Pͦb_V՝SK⾇Mͧh̬cY^TvmѕkcD=>7عѪv\Rҗϒ}ʈƃ5y0ʟeģSKMEe^DžZS3v..o)ͻѹȚ`ʠoç>7}2t,̙čOѫZML5y00q+*k&գץڻe?˹XŏӠǓɛaaFɸQ׵}ֵÑV{QɸmHHyR \ No newline at end of file diff --git a/SkeinPyPy/fabmetheus_utilities/images/zoom_out.ppm b/SkeinPyPy/fabmetheus_utilities/images/zoom_out.ppm deleted file mode 100644 index 108f8937..00000000 --- a/SkeinPyPy/fabmetheus_utilities/images/zoom_out.ppm +++ /dev/null @@ -1,5 +0,0 @@ -P6 -# CREATOR: The GIMP's PNM Filter Version 1.0 -16 16 -255 -ÑҮmϩeΧcШjٻܿ԰p׷}ѯάҭw̡gӺ԰pϩţɛc‘׶}ͤqҮҭlѮħÒ[Ϩc⿋Pͦb⾇Mͧh̬xtomcbTVEH5:&.عѪvomȿ#ʟeģcbTVEH5:&.#ͻѹȚ`ʠoçܾSִy̙čOѫZMLRLۿգץڻe?˹XŏӠǓɛaaFɸQ׵}ֵÑVrEǶ\3HsK \ No newline at end of file diff --git a/SkeinPyPy/newui/preview3d.py b/SkeinPyPy/newui/preview3d.py index 14d3b0e9..51ba092c 100644 --- a/SkeinPyPy/newui/preview3d.py +++ b/SkeinPyPy/newui/preview3d.py @@ -33,6 +33,7 @@ class previewPanel(wx.Panel): self.init = 0 self.triangleMesh = None self.gcode = None + self.modelFilename = None self.machineSize = Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height'))) self.machineCenter = Vector3(0, 0, 0) @@ -92,40 +93,39 @@ class previewPanel(wx.Panel): self.glCanvas.Refresh() def loadModelFile(self, filename): - self.modelFilename = filename - self.gcodeFilename = filename[: filename.rfind('.')] + "_export.gcode" - #Do the STL file loading in a background thread so we don't block the UI. - thread = threading.Thread(target=self.DoModelLoad) - thread.start() - - def loadGCodeFile(self, filename): - self.gcodeFilename = filename - #Do the STL file loading in a background thread so we don't block the UI. - thread = threading.Thread(target=self.DoGCodeLoad) - thread.start() - - def DoModelLoad(self): - self.modelDirty = False - triangleMesh = fabmetheus_interpret.getCarving(self.modelFilename) - triangleMesh.origonalVertexes = list(triangleMesh.vertexes) - for i in xrange(0, len(triangleMesh.origonalVertexes)): - triangleMesh.origonalVertexes[i] = triangleMesh.origonalVertexes[i].copy() - triangleMesh.getMinimumZ() - self.triangleMesh = triangleMesh - self.updateModelTransform() - wx.CallAfter(self.updateToolbar) - wx.CallAfter(self.glCanvas.Refresh) + gcodeFilename = filename[: filename.rfind('.')] + "_export.gcode" + if self.modelFilename != filename: + self.modelFileTime = None + self.gcodeFileTime = None - if os.path.isfile(self.gcodeFilename): - self.DoGCodeLoad() + self.modelFilename = filename + self.gcodeFilename = gcodeFilename + #Do the STL file loading in a background thread so we don't block the UI. + thread = threading.Thread(target=self.doFileLoad) + thread.start() - def DoGCodeLoad(self): - gcode = gcodeInterpreter.gcode(self.gcodeFilename) - self.gcodeDirty = False - self.gcode = gcode - self.gcodeDirty = True - wx.CallAfter(self.updateToolbar) - wx.CallAfter(self.glCanvas.Refresh) + def doFileLoad(self): + if os.path.isfile(self.modelFilename) and self.modelFileTime != os.stat(self.modelFilename).st_mtime: + self.modelFileTime = os.stat(self.modelFilename).st_mtime + triangleMesh = fabmetheus_interpret.getCarving(self.modelFilename) + triangleMesh.origonalVertexes = list(triangleMesh.vertexes) + for i in xrange(0, len(triangleMesh.origonalVertexes)): + triangleMesh.origonalVertexes[i] = triangleMesh.origonalVertexes[i].copy() + triangleMesh.getMinimumZ() + self.modelDirty = False + self.triangleMesh = triangleMesh + self.updateModelTransform() + wx.CallAfter(self.updateToolbar) + wx.CallAfter(self.glCanvas.Refresh) + + if os.path.isfile(self.gcodeFilename) and self.gcodeFileTime != os.stat(self.gcodeFilename).st_mtime: + self.gcodeFileTime = os.stat(self.gcodeFilename).st_mtime + gcode = gcodeInterpreter.gcode(self.gcodeFilename) + self.gcodeDirty = False + self.gcode = gcode + self.gcodeDirty = True + wx.CallAfter(self.updateToolbar) + wx.CallAfter(self.glCanvas.Refresh) def updateToolbar(self): self.layerSpin.Show(self.gcode != None) diff --git a/SkeinPyPy/newui/sliceProgessPanel.py b/SkeinPyPy/newui/sliceProgessPanel.py index 59b095ab..f9d33a94 100644 --- a/SkeinPyPy/newui/sliceProgessPanel.py +++ b/SkeinPyPy/newui/sliceProgessPanel.py @@ -82,7 +82,7 @@ class sliceProgessPanel(wx.Panel): self.sizer.Add(self.logButton, 0) if result.returnCode == 0: self.statusText.SetLabel("Ready.") - self.showButton = wx.Button(self, -1, "Show GCode") + self.showButton = wx.Button(self, -1, "Show result") self.Bind(wx.EVT_BUTTON, self.OnShowGCode, self.showButton) self.sizer.Add(self.showButton, 0) else: @@ -133,7 +133,6 @@ class WorkerThread(threading.Thread): return line = p.stdout.readline() self.returnCode = p.wait() - self.gcodeFilename = self.filename[: self.filename.rfind('.')] + "_export.gcode" logfile = open(self.filename[: self.filename.rfind('.')] + "_export.log", "w") for logLine in self.progressLog: logfile.write(logLine)