diff --git a/cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake b/cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake index db09fec7bc..1a0378db08 100644 --- a/cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake +++ b/cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake @@ -29,7 +29,8 @@ macro(CheckInterModuleDependencies) REQUIRES_MODS(BUILD_FLAT_MESH BUILD_MESH_PART) REQUIRES_MODS(BUILD_OPENSCAD BUILD_MESH_PART BUILD_DRAFT) REQUIRES_MODS(BUILD_PART_DESIGN BUILD_SKETCHER) - REQUIRES_MODS(BUILD_PATH BUILD_PART BUILD_MESH BUILD_ROBOT) + # REQUIRES_MODS(BUILD_PATH BUILD_PART BUILD_MESH BUILD_ROBOT) + REQUIRES_MODS(BUILD_PATH BUILD_PART BUILD_MESH) REQUIRES_MODS(BUILD_RAYTRACING BUILD_PART) REQUIRES_MODS(BUILD_REVERSEENGINEERING BUILD_PART BUILD_MESH) REQUIRES_MODS(BUILD_ROBOT BUILD_PART) diff --git a/src/Mod/Path/Path/Main/Gui/Sanity.py b/src/Mod/Path/Path/Main/Gui/Sanity.py index 1a76b6bf6f..a3ea454b5c 100644 --- a/src/Mod/Path/Path/Main/Gui/Sanity.py +++ b/src/Mod/Path/Path/Main/Gui/Sanity.py @@ -32,6 +32,7 @@ from PySide import QtCore, QtGui import FreeCAD import FreeCADGui import Path +import Path.Log import PathScripts from collections import Counter from datetime import datetime @@ -42,10 +43,11 @@ from PySide.QtCore import QT_TRANSLATE_NOOP translate = FreeCAD.Qt.translate - -LOG_MODULE = "PathSanity" -# Path.Log.setLevel(Path.Log.Level.INFO, LOG_MODULE) -# Path.Log.trackModule('PathSanity') +if True: + Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) + Path.Log.trackModule(Path.Log.thisModule()) +else: + Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) class CommandPathSanity: @@ -57,32 +59,49 @@ class CommandPathSanity: else: filepath = Path.Preferences.macroFilePath() - if "%D" in filepath: - D = FreeCAD.ActiveDocument.FileName - if D: - D = os.path.dirname(D) - # in case the document is in the current working directory - if not D: - D = "." - else: - FreeCAD.Console.PrintError( - "Please save document in order to resolve output path!\n" - ) - return None - filepath = filepath.replace("%D", D) + Path.Log.debug(filepath) - if "%d" in filepath: - d = FreeCAD.ActiveDocument.Label - filepath = filepath.replace("%d", d) + D = FreeCAD.ActiveDocument.FileName + if D: + D = os.path.dirname(D) + # in case the document is in the current working directory + if not D: + D = "." + else: + FreeCAD.Console.PrintError( + "Please save document in order to resolve output path!\n" + ) + return None + filepath = filepath.replace("%D", D + os.path.sep) - if "%j" in filepath: - j = job.Label - filepath = filepath.replace("%j", j) + filepath = filepath.replace("%d", FreeCAD.ActiveDocument.Label) + + filepath = filepath.replace("%j", job.Label) if "%M" in filepath: pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro") M = pref.GetString("MacroPath", FreeCAD.getUserAppDataDir()) - filepath = filepath.replace("%M", M) + filepath = filepath.replace("%M", M+ os.path.sep) + + # strip out all substitutions related to output splitting + for elem in ["%O", "%W", "%T", "%t", "%S"]: + filepath = filepath.replace(elem, "") + + Path.Log.debug("filepath: {}".format(filepath)) + + # if there's no basename left, use the activedocument basename + fname = os.path.splitext(os.path.basename(filepath)) + if fname[0] == "": + final = os.path.splitext(os.path.basename(FreeCAD.ActiveDocument.FileName))[ + 0 + ] + filepath = os.path.dirname(filepath) + os.path.sep + final + fname[1] + + Path.Log.debug("filepath: {}".format(filepath)) + + # Make sure the filepath is fully qualified + if os.path.basename(filepath) == filepath: + filepath = f"{os.path.dirname(FreeCAD.ActiveDocument.FileName)}/{filepath}" Path.Log.debug("filepath: {}".format(filepath)) @@ -116,6 +135,7 @@ class CommandPathSanity: obj = FreeCADGui.Selection.getSelectionEx()[0].Object self.outputpath = self.resolveOutputPath(obj) + Path.Log.debug(f"outputstring: {self.outputpath}") data = self.__summarize(obj) html = self.__report(data) if html is not None: @@ -507,7 +527,9 @@ class CommandPathSanity: data = {"baseimage": "", "bases": ""} try: bases = {} - for name, count in Counter([obj.Proxy.baseObject(obj, o).Label for o in obj.Model.Group]).items(): + for name, count in Counter( + [obj.Proxy.baseObject(obj, o).Label for o in obj.Model.Group] + ).items(): bases[name] = str(count) data["baseimage"] = self.__makePicture(obj.Model, "baseimage") @@ -772,6 +794,7 @@ class CommandPathSanity: FreeCADGui.SendMsgToActiveView("ViewSelection") FreeCADGui.Selection.clearSelection() obj.ViewObject.Proxy.editObject(obj) + Path.Log.debug(imagepath) aview.saveImage("{}.png".format(imagepath), 320, 320, "Current") aview.saveImage("{}_t.png".format(imagepath), 320, 320, "Transparent") obj.ViewObject.Proxy.uneditObject(obj)