From 9f4c547afec41a97ca514bd2c7c54972d81a46af Mon Sep 17 00:00:00 2001 From: Sebastian Hoogen Date: Wed, 10 Jul 2013 16:10:39 +0200 Subject: [PATCH] search for OpenSCAD executable when initalizing WB --- src/Mod/OpenSCAD/Init.py | 3 +++ src/Mod/OpenSCAD/InitGui.py | 12 ++++++++++-- src/Mod/OpenSCAD/OpenSCADUtils.py | 6 +++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Mod/OpenSCAD/Init.py b/src/Mod/OpenSCAD/Init.py index 8b077b6e5..da643fbf0 100644 --- a/src/Mod/OpenSCAD/Init.py +++ b/src/Mod/OpenSCAD/Init.py @@ -32,3 +32,6 @@ openscadfilename = param.GetString('openscadexecutable') openscadbin = openscadfilename and os.path.isfile(openscadfilename) if openscadbin: FreeCAD.addImportType("OpenSCAD Format (*.scad)","importCSG") +FreeCAD.addExportType("OpenSCAD CSG Format (*.csg)","exportCSG") +FreeCAD.addExportType("OpenSCAD Format (*.scad)","exportCSG") + diff --git a/src/Mod/OpenSCAD/InitGui.py b/src/Mod/OpenSCAD/InitGui.py index 4e91d66db..ec4417489 100644 --- a/src/Mod/OpenSCAD/InitGui.py +++ b/src/Mod/OpenSCAD/InitGui.py @@ -107,9 +107,19 @@ static char * openscadlogo_xpm[] = { param = FreeCAD.ParamGet(\ "User parameter:BaseApp/Preferences/Mod/OpenSCAD") openscadfilename = param.GetString('openscadexecutable') + if not openscadfilename: + + import OpenSCADUtils + openscadfilename = OpenSCADUtils.searchforopenscadexe() + if openscadfilename: #automatic search was succsessful + FreeCAD.addImportType("OpenSCAD Format (*.scad)","importCSG") + param.SetString('openscadexecutable',openscadfilename) #save the result if openscadfilename: commands.extend(['OpenSCAD_AddOpenSCADElement']) toolbarcommands.extend(['OpenSCAD_AddOpenSCADElement']) + else: + FreeCAD.Console.PrintWarning('OpenSCAD executable not found\n') + self.appendToolbar("OpenSCADTools",toolbarcommands) self.appendMenu('OpenSCAD',commands) self.appendToolbar('OpenSCAD Part tools',parttoolbarcommands) @@ -124,5 +134,3 @@ static char * openscadlogo_xpm[] = { Gui.addWorkbench(OpenSCADWorkbench()) -App.addExportType("OpenSCAD CSG Format (*.csg)","exportCSG") -App.addExportType("OpenSCAD Format (*.scad)","exportCSG") diff --git a/src/Mod/OpenSCAD/OpenSCADUtils.py b/src/Mod/OpenSCAD/OpenSCADUtils.py index 6a0b3bb09..4f0bab464 100644 --- a/src/Mod/OpenSCAD/OpenSCADUtils.py +++ b/src/Mod/OpenSCAD/OpenSCADUtils.py @@ -43,14 +43,14 @@ def searchforopenscadexe(): testpaths = [os.path.join(os.environ.get('Programfiles(x86)','C:'),\ 'OpenSCAD\\openscad.exe')] if 'ProgramW6432' in os.environ: - testpath.append(os.path.join(os.environ.get('ProgramW6432','C:')\ - ,'OpenSCAD\\openscad.exe') + testpaths.append(os.path.join(os.environ.get('ProgramW6432','C:')\ + ,'OpenSCAD\\openscad.exe')) for testpath in testpaths: if os.path.isfile(testpath): return testpath else: p1=subprocess.Popen(['which','openscad'],stdout=subprocess.PIPE) - if p1.wait() == 0 + if p1.wait() == 0: opath=p1.stdout.read().split('\n')[0] return opath