From 85dc78a273280ca4c06e9bba3f468d418e02a9da Mon Sep 17 00:00:00 2001 From: Stephen Houser Date: Tue, 27 Nov 2018 15:16:31 -0500 Subject: [PATCH] Update to v1.66 --- build.bat | 2 +- f-engrave.py | 118 +++++++++++++++++++++++++++++++----------------- fengrave.ico | Bin 22438 -> 151878 bytes py2exe_setup.py | 7 +-- setup.py | 2 +- 5 files changed, 82 insertions(+), 47 deletions(-) diff --git a/build.bat b/build.bat index 42d875e..9cd8c6c 100644 --- a/build.bat +++ b/build.bat @@ -3,7 +3,7 @@ rem This file executes the build command for the windows executable file. rem It is here because I am lazy rem --------------------------------------------------------------------- -set PATH=C:\Python25;%PATH% +set PATH=C:\Python26;%PATH% python py2exe_setup.py py2exe rmdir /S build diff --git a/f-engrave.py b/f-engrave.py index d1ea15a..fcb8026 100755 --- a/f-engrave.py +++ b/f-engrave.py @@ -260,9 +260,13 @@ - Mapped save function to Control-S for easier g-code saving Version 1.65 - Fixed bug in sort_for_v_carve that resulted in an error for certain designs. + + Version 1.66 - Fixed a problem with the origin when wrapping text in some cases. + - Decreased number of updates while doing computations which increases overall calculation speed. + - Fixed problem that can cause the program to freeze if the saved settings contain errors. """ -version = '1.65' +version = '1.66' #Setting QUIET to True will stop almost all console messages QUIET = False @@ -295,6 +299,7 @@ def next(item): if PIL == True: try: from PIL import Image + Image.MAX_IMAGE_PIXELS = None except: PIL = False @@ -1559,7 +1564,7 @@ def DXF_COORDS_GET(self,new_origin=True): ''' http://tkinter.unpythonic.net/wiki/ToolTip -Michael Lange +ichael Lange The ToolTip class provides a flexible tooltip widget for Tkinter; it is based on IDLE's ToolTip module which unfortunately seems to be broken (at least the version I saw). INITIALIZATION OPTIONS: @@ -2873,7 +2878,10 @@ def WriteGCode(self,config_file=False): loopa_old = loopa else: loop = loop + 1 - Depth = float(self.maxcut.get()) + try: + Depth = float(self.maxcut.get()) + except: + Depth = 0.0 if (rough_stock > 0): rough_again = True if ((rough_stock > 0) and(-maxDZ < rough_stock)): @@ -3200,7 +3208,10 @@ def WRITE_CLEAN_UP(self,bit_type="straight"): BitDia = float(self.clean_dia.get()) self.calc_depth_limit() - Depth = float(self.maxcut.get()) + try: + Depth = float(self.maxcut.get()) + except: + Depth = 0.0 if self.inlay.get(): Depth = Depth + float(self.allowance.get()) @@ -3899,7 +3910,10 @@ def calc_r_inlay_top(self): return r_inlay_top def calc_r_inlay_depth(self): - inlay_depth = float(self.maxcut.get()) + try: + inlay_depth = float(self.maxcut.get()) + except: + inlay_depth = 0.0 return inlay_depth @@ -6519,29 +6533,31 @@ def DoIt(self): miny = 99994.0 minx = 99995.0 - if Angle == 0.0: - if flip_flag: - miny = -font_line_height*YScale - else: - maxy = font_line_height*YScale - - elif (Angle == 90.0) or (Angle == -270.0): - if not mirror_flag: - minx = -font_line_height*YScale - else: - maxx = font_line_height*YScale - - elif (Angle == 270.0) or (Angle == -90.0): - if not mirror_flag: - maxx = font_line_height*YScale - else: - minx = -font_line_height*YScale - - elif (Angle == 180.0) or (Angle == -180.0): - if flip_flag: - maxy = font_line_height*YScale - else: - miny = -font_line_height*YScale +## ## Commented this section out in Version 1.66 +## if Radius == 0.0: +## if Angle == 0.0: +## if flip_flag: +## miny = -font_line_height*YScale +## else: +## maxy = font_line_height*YScale +## +## elif (Angle == 90.0) or (Angle == -270.0): +## if not mirror_flag: +## minx = -font_line_height*YScale +## else: +## maxx = font_line_height*YScale +## +## elif (Angle == 270.0) or (Angle == -90.0): +## if not mirror_flag: +## maxx = font_line_height*YScale +## else: +## minx = -font_line_height*YScale +## +## elif (Angle == 180.0) or (Angle == -180.0): +## if flip_flag: +## maxy = font_line_height*YScale +## else: +## miny = -font_line_height*YScale maxr2 = 0.0 for line in self.coords: @@ -6800,6 +6816,7 @@ def get_flop_staus(self,CLEAN_FLAG=False): def V_Carve_It(self,clean_flag=0,DXF_FLAG = False): global STOP_CALC + timestamp = 0 self.master.unbind("") STOP_CALC=0 @@ -7098,18 +7115,24 @@ def V_Carve_It(self,clean_flag=0,DXF_FLAG = False): break else: calc_flag = self.clean_segment[CUR_CNT] - #################################################### - CUR_PCT=float(CUR_LENGTH)/TOT_LENGTH*100.0 - if CUR_PCT > 0.0: - MIN_REMAIN =( time()-START_TIME )/60 * (100-CUR_PCT)/CUR_PCT - MIN_TOTAL = 100.0/CUR_PCT * ( time()-START_TIME )/60 - else: - MIN_REMAIN = -1 - MIN_TOTAL = -1 + if (not self.batch.get()): - self.statusMessage.set('%.1f %% ( %.1f Minutes Remaining | %.1f Minutes Total )' %( CUR_PCT, MIN_REMAIN, MIN_TOTAL ) ) - self.statusbar.configure( bg = 'yellow' ) - self.PreviewCanvas.update() + stamp=int(3*time()) #update every 1/3 of a second + if (stamp != timestamp): + timestamp=stamp #interlock + + #################################################### + CUR_PCT=float(CUR_LENGTH)/TOT_LENGTH*100.0 + if CUR_PCT > 0.0: + MIN_REMAIN =( time()-START_TIME )/60 * (100-CUR_PCT)/CUR_PCT + MIN_TOTAL = 100.0/CUR_PCT * ( time()-START_TIME )/60 + else: + MIN_REMAIN = -1 + MIN_TOTAL = -1 + + self.statusMessage.set('%.1f %% ( %.1f Minutes Remaining | %.1f Minutes Total )' %( CUR_PCT, MIN_REMAIN, MIN_TOTAL ) ) + self.statusbar.configure( bg = 'yellow' ) + self.PreviewCanvas.update() if STOP_CALC != 0: STOP_CALC=0 @@ -7512,11 +7535,19 @@ def sort_for_v_carve(self,sort_coords,LN_START=0): ##################################################### # For each loop determine if other loops are inside # ##################################################### + timestamp = 0 + global STOP_CALC + STOP_CALC = 0 for iloop in range(Nloops): CUR_PCT=float(iloop)/Nloops*100.0 if (not self.batch.get()): - self.statusMessage.set('Determining Which Side of Loop to Cut: %d of %d' %(iloop+1,Nloops)) - self.master.update() + stamp=int(3*time()) #update every 1/3 of a second + if (stamp != timestamp): + timestamp=stamp #interlock + self.statusMessage.set('Determining Which Side of Loop to Cut: %d of %d' %(iloop+1,Nloops)) + self.master.update() + if STOP_CALC != 0: + return [] ipoly = ecoords[Lbeg[iloop]:Lend[iloop]] ## Check points in other loops (could just check one) ## @@ -9419,7 +9450,10 @@ def temp_icon(icon_file_name): try: - app.master.iconbitmap(bitmap="@emblem64") + try: + app.master.iconbitmap(r'emblem') + except: + app.master.iconbitmap(bitmap="@emblem64") except: try: #Attempt to create temporary icon bitmap file temp_icon("f_engrave_icon") diff --git a/fengrave.ico b/fengrave.ico index 68ae73731e320f940d11e6b5b0d45a656b6e33e6..990458841b641e9cbf537829a954c4550149348e 100644 GIT binary patch literal 151878 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 literal 22438 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 YK0KT}d9rPTDQBef#SR!%1r22WA6Rm3k^lez diff --git a/py2exe_setup.py b/py2exe_setup.py index cc4953f..ff58d5e 100644 --- a/py2exe_setup.py +++ b/py2exe_setup.py @@ -5,7 +5,8 @@ import shutil import py2exe -script_name = "f-engrave-165.py" +script_name = "f-engrave.py" +icon_name = "fengrave.ico" fileName, fileExtension = os.path.splitext(script_name) console_name = fileName+"_c"+fileExtension @@ -17,7 +18,7 @@ windows = [ { "script": script_name, - "icon_resources":[(0,"fengrave.ico"),(0,"fengrave.ico")] + "icon_resources":[(0,icon_name),(0,icon_name)] } ], ) @@ -28,7 +29,7 @@ console=[ { "script":console_name, - "icon_resources":[(0,"fengrave.ico"),(0,"fengrave.ico")] + "icon_resources":[(0,icon_name),(0,icon_name)] } ] ) diff --git a/setup.py b/setup.py index 092627e..1f0e136 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ from setuptools import setup mainscript = 'f-engrave.py' -version = "1.65" +version = "1.66" url = "https://github.com/stephenhouser/f-engrave" if sys.platform == 'darwin':