improve detection of OpenSCAD executable to print a more appropriate error message in case of failures
This commit is contained in:
@@ -254,7 +254,7 @@ void CmdMeshUnion::activated(int)
|
||||
PyObject* dict = PyModule_GetDict(main);
|
||||
Py::Dict d(PyDict_Copy(dict), true);
|
||||
|
||||
const char* cmd = "import OpenSCADUtils\nopenscadfilename = OpenSCADUtils.searchforopenscadexe()";
|
||||
const char* cmd = "import OpenSCADUtils\nopenscadfilename = OpenSCADUtils.getopenscadexe()";
|
||||
PyObject* result = PyRun_String(cmd, Py_file_input, d.ptr(), d.ptr());
|
||||
Py_XDECREF(result);
|
||||
|
||||
@@ -324,7 +324,7 @@ void CmdMeshDifference::activated(int)
|
||||
PyObject* dict = PyModule_GetDict(main);
|
||||
Py::Dict d(PyDict_Copy(dict), true);
|
||||
|
||||
const char* cmd = "import OpenSCADUtils\nopenscadfilename = OpenSCADUtils.searchforopenscadexe()";
|
||||
const char* cmd = "import OpenSCADUtils\nopenscadfilename = OpenSCADUtils.getopenscadexe()";
|
||||
PyObject* result = PyRun_String(cmd, Py_file_input, d.ptr(), d.ptr());
|
||||
Py_XDECREF(result);
|
||||
|
||||
@@ -394,7 +394,7 @@ void CmdMeshIntersection::activated(int)
|
||||
PyObject* dict = PyModule_GetDict(main);
|
||||
Py::Dict d(PyDict_Copy(dict), true);
|
||||
|
||||
const char* cmd = "import OpenSCADUtils\nopenscadfilename = OpenSCADUtils.searchforopenscadexe()";
|
||||
const char* cmd = "import OpenSCADUtils\nopenscadfilename = OpenSCADUtils.getopenscadexe()";
|
||||
PyObject* result = PyRun_String(cmd, Py_file_input, d.ptr(), d.ptr());
|
||||
Py_XDECREF(result);
|
||||
|
||||
|
||||
@@ -57,6 +57,17 @@ class OpenSCADError(BaseError):
|
||||
def __str__(self):
|
||||
return repr(self.value)
|
||||
|
||||
def getopenscadexe(osfilename=None):
|
||||
import os,subprocess,time
|
||||
if not osfilename:
|
||||
import FreeCAD
|
||||
osfilename = FreeCAD.ParamGet(\
|
||||
"User parameter:BaseApp/Preferences/Mod/OpenSCAD").\
|
||||
GetString('openscadexecutable')
|
||||
if osfilename and os.path.isfile(osfilename):
|
||||
return osfilename
|
||||
return searchforopenscadexe()
|
||||
|
||||
def searchforopenscadexe():
|
||||
import os,sys,subprocess
|
||||
if sys.platform == 'win32':
|
||||
|
||||
Reference in New Issue
Block a user