From ea586e988050a18615b8dda500b1b44a5bbf11e8 Mon Sep 17 00:00:00 2001 From: DeepSOIC Date: Fri, 29 Jul 2016 14:13:12 +0300 Subject: [PATCH] Part: deprecate old JoinFeatures code Commented out all the code not essential for recomputing old JoinFeatures. The rest is left to support opening old projects. --- src/Mod/Part/JoinFeatures.py | 307 ++++++++++++++++++----------------- 1 file changed, 155 insertions(+), 152 deletions(-) diff --git a/src/Mod/Part/JoinFeatures.py b/src/Mod/Part/JoinFeatures.py index 24dcbf9c0..06046efa0 100644 --- a/src/Mod/Part/JoinFeatures.py +++ b/src/Mod/Part/JoinFeatures.py @@ -23,30 +23,32 @@ import FreeCAD, Part -if FreeCAD.GuiUp: - import FreeCADGui - from PySide import QtCore, QtGui +#if FreeCAD.GuiUp: +# import FreeCADGui +# from PySide import QtCore, QtGui -__title__="JoinFeatures module" +__title__="JoinFeatures module (legacy)" __author__ = "DeepSOIC" __url__ = "http://www.freecadweb.org" +__doc__ = "Legacy JoinFeatures module provided for ability to load projects made with \ +FreeCAD v0.16. Do not use. Use BOPTools.JoinFeatures instead." -#-------------------------- translation-related code ---------------------------------------- -#Thanks, yorik! (see forum thread "A new Part tool is being born... JoinFeatures!" -#http://forum.freecadweb.org/viewtopic.php?f=22&t=11112&start=30#p90239 ) -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) -#--------------------------/translation-related code ---------------------------------------- +##-------------------------- translation-related code ---------------------------------------- +##Thanks, yorik! (see forum thread "A new Part tool is being born... JoinFeatures!" +##http://forum.freecadweb.org/viewtopic.php?f=22&t=11112&start=30#p90239 ) +#try: +# _fromUtf8 = QtCore.QString.fromUtf8 +#except AttributeError: +# def _fromUtf8(s): +# return s +#try: +# _encoding = QtGui.QApplication.UnicodeUTF8 +# def _translate(context, text, disambig): +# return QtGui.QApplication.translate(context, text, disambig, _encoding) +#except AttributeError: +# def _translate(context, text, disambig): +# return QtGui.QApplication.translate(context, text, disambig) +##--------------------------/translation-related code ---------------------------------------- # -------------------------- common stuff -------------------------------------------------- def getParamRefine(): @@ -71,14 +73,14 @@ def shapeOfMaxVol(compound): else: return compound -def makePartJoinFeature(name, mode = 'bypass'): - '''makePartJoinFeature(name, mode = 'bypass'): makes an PartJoinFeature object.''' - obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name) - _PartJoinFeature(obj) - obj.Mode = mode - obj.Refine = getParamRefine() - _ViewProviderPartJoinFeature(obj.ViewObject) - return obj +#def makePartJoinFeature(name, mode = 'bypass'): +# '''makePartJoinFeature(name, mode = 'bypass'): makes an PartJoinFeature object.''' +# obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name) +# _PartJoinFeature(obj) +# obj.Mode = mode +# obj.Refine = getParamRefine() +# _ViewProviderPartJoinFeature(obj.ViewObject) +# return obj class _PartJoinFeature: "The PartJoinFeature object" @@ -159,133 +161,134 @@ class _ViewProviderPartJoinFeature: FreeCAD.Console.PrintError("Error in onDelete: " + err.message) return True - -def CreateJoinFeature(name, mode): - sel = FreeCADGui.Selection.getSelectionEx() - FreeCAD.ActiveDocument.openTransaction("Create "+mode+"ObjectsFeature") - FreeCADGui.addModule("JoinFeatures") - FreeCADGui.doCommand("j = JoinFeatures.makePartJoinFeature(name = '"+name+"', mode = '"+mode+"' )") - FreeCADGui.doCommand("j.Base = App.ActiveDocument."+sel[0].Object.Name) - FreeCADGui.doCommand("j.Tool = App.ActiveDocument."+sel[1].Object.Name) - try: - FreeCADGui.doCommand("j.Proxy.execute(j)") - FreeCADGui.doCommand("j.purgeTouched()") - except Exception as err: - mb = QtGui.QMessageBox() - mb.setIcon(mb.Icon.Warning) - mb.setText(_translate("Part_JoinFeatures","Computing the result failed with an error: {err}. Click 'Continue' to create the feature anyway, or 'Abort' to cancel.", None) - .format(err= err.message)) - mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) - btnAbort = mb.addButton(QtGui.QMessageBox.StandardButton.Abort) - btnOK = mb.addButton(_translate("Part_JoinFeatures","Continue",None), QtGui.QMessageBox.ButtonRole.ActionRole) - mb.setDefaultButton(btnOK) - - mb.exec_() - - if mb.clickedButton() is btnAbort: - FreeCAD.ActiveDocument.abortTransaction() - return - - FreeCADGui.doCommand("j.Base.ViewObject.hide()") - FreeCADGui.doCommand("j.Tool.ViewObject.hide()") - - FreeCAD.ActiveDocument.commitTransaction() +# +#def CreateJoinFeature(name, mode): +# sel = FreeCADGui.Selection.getSelectionEx() +# FreeCAD.ActiveDocument.openTransaction("Create "+mode+"ObjectsFeature") +# FreeCADGui.addModule("JoinFeatures") +# FreeCADGui.doCommand("j = JoinFeatures.makePartJoinFeature(name = '"+name+"', mode = '"+mode+"' )") +# FreeCADGui.doCommand("j.Base = App.ActiveDocument."+sel[0].Object.Name) +# FreeCADGui.doCommand("j.Tool = App.ActiveDocument."+sel[1].Object.Name) +# try: +# FreeCADGui.doCommand("j.Proxy.execute(j)") +# FreeCADGui.doCommand("j.purgeTouched()") +# except Exception as err: +# mb = QtGui.QMessageBox() +# mb.setIcon(mb.Icon.Warning) +# mb.setText(_translate("Part_JoinFeatures","Computing the result failed with an error: {err}. Click 'Continue' to create the feature anyway, or 'Abort' to cancel.", None) +# .format(err= err.message)) +# mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) +# btnAbort = mb.addButton(QtGui.QMessageBox.StandardButton.Abort) +# btnOK = mb.addButton(_translate("Part_JoinFeatures","Continue",None), QtGui.QMessageBox.ButtonRole.ActionRole) +# mb.setDefaultButton(btnOK) +# +# mb.exec_() +# +# if mb.clickedButton() is btnAbort: +# FreeCAD.ActiveDocument.abortTransaction() +# return +# +# FreeCADGui.doCommand("j.Base.ViewObject.hide()") +# FreeCADGui.doCommand("j.Tool.ViewObject.hide()") +# +# FreeCAD.ActiveDocument.commitTransaction() def getIconPath(icon_dot_svg): return ":/icons/" + icon_dot_svg # -------------------------- /common stuff -------------------------------------------------- -# -------------------------- ConnectObjectsFeature -------------------------------------------------- - -class _CommandConnectFeature: - "Command to create PartJoinFeature in Connect mode" - def GetResources(self): - return {'Pixmap' : getIconPath("Part_JoinConnect.svg"), - 'MenuText': QtCore.QT_TRANSLATE_NOOP("Part_ConnectFeature","Connect objects"), - 'Accel': "", - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Part_ConnectFeature","Fuses objects, taking care to preserve voids.")} - - def Activated(self): - if len(FreeCADGui.Selection.getSelectionEx()) == 2 : - CreateJoinFeature(name = "Connect", mode = "Connect") - else: - mb = QtGui.QMessageBox() - mb.setIcon(mb.Icon.Warning) - mb.setText(_translate("Part_JoinFeatures", "Two solids need to be selected, first!", None)) - mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) - mb.exec_() - - def IsActive(self): - if FreeCAD.ActiveDocument: - return True - else: - return False - -FreeCADGui.addCommand('Part_JoinConnect',_CommandConnectFeature()) - -# -------------------------- /ConnectObjectsFeature -------------------------------------------------- - - -# -------------------------- EmbedFeature -------------------------------------------------- - -class _CommandEmbedFeature: - "Command to create PartJoinFeature in Embed mode" - def GetResources(self): - return {'Pixmap' : getIconPath("Part_JoinEmbed.svg"), - 'MenuText': QtCore.QT_TRANSLATE_NOOP("Part_EmbedFeature","Embed object"), - 'Accel': "", - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Part_EmbedFeature","Fuses one object into another, taking care to preserve voids.")} - - def Activated(self): - if len(FreeCADGui.Selection.getSelection()) == 2 : - CreateJoinFeature(name = "Embed", mode = "Embed") - else: - mb = QtGui.QMessageBox() - mb.setIcon(mb.Icon.Warning) - mb.setText(_translate("Part_JoinFeatures","Select base object, then the object to embed, and invoke this tool.", None)) - mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) - mb.exec_() - - - def IsActive(self): - if FreeCAD.ActiveDocument: - return True - else: - return False - -FreeCADGui.addCommand('Part_JoinEmbed',_CommandEmbedFeature()) - -# -------------------------- /EmbedFeature -------------------------------------------------- - - - -# -------------------------- CutoutFeature -------------------------------------------------- - -class _CommandCutoutFeature: - "Command to create PartJoinFeature in Cutout mode" - def GetResources(self): - return {'Pixmap' : getIconPath("Part_JoinCutout.svg"), - 'MenuText': QtCore.QT_TRANSLATE_NOOP("Part_CutoutFeature","Cutout for object"), - 'Accel': "", - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Part_CutoutFeature","Makes a cutout in one object to fit another object.")} - - def Activated(self): - if len(FreeCADGui.Selection.getSelection()) == 2 : - CreateJoinFeature(name = "Cutout", mode = "Cutout") - else: - mb = QtGui.QMessageBox() - mb.setIcon(mb.Icon.Warning) - mb.setText(_translate("Part_JoinFeatures","Select the object to make a cutout in, then the object that should fit into the cutout, and invoke this tool.", None)) - mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) - mb.exec_() - - def IsActive(self): - if FreeCAD.ActiveDocument: - return True - else: - return False - -FreeCADGui.addCommand('Part_JoinCutout',_CommandCutoutFeature()) - -# -------------------------- /CutoutFeature -------------------------------------------------- +## -------------------------- ConnectObjectsFeature -------------------------------------------------- +# +#class _CommandConnectFeature: +# "Command to create PartJoinFeature in Connect mode" +# def GetResources(self): +# return {'Pixmap' : getIconPath("Part_JoinConnect.svg"), +# 'MenuText': QtCore.QT_TRANSLATE_NOOP("Part_ConnectFeature","Connect objects"), +# 'Accel': "", +# 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Part_ConnectFeature","Fuses objects, taking care to preserve voids.")} +# +# def Activated(self): +# if len(FreeCADGui.Selection.getSelectionEx()) == 2 : +# CreateJoinFeature(name = "Connect", mode = "Connect") +# else: +# mb = QtGui.QMessageBox() +# mb.setIcon(mb.Icon.Warning) +# mb.setText(_translate("Part_JoinFeatures", "Two solids need to be selected, first!", None)) +# mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) +# mb.exec_() +# +# def IsActive(self): +# if FreeCAD.ActiveDocument: +# return True +# else: +# return False +# +#FreeCADGui.addCommand('Part_JoinConnect',_CommandConnectFeature()) +# +## -------------------------- /ConnectObjectsFeature -------------------------------------------------- +# +# +## -------------------------- EmbedFeature -------------------------------------------------- +# +#class _CommandEmbedFeature: +# "Command to create PartJoinFeature in Embed mode" +# def GetResources(self): +# return {'Pixmap' : getIconPath("Part_JoinEmbed.svg"), +# 'MenuText': QtCore.QT_TRANSLATE_NOOP("Part_EmbedFeature","Embed object"), +# 'Accel': "", +# 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Part_EmbedFeature","Fuses one object into another, taking care to preserve voids.")} +# +# def Activated(self): +# if len(FreeCADGui.Selection.getSelection()) == 2 : +# CreateJoinFeature(name = "Embed", mode = "Embed") +# else: +# mb = QtGui.QMessageBox() +# mb.setIcon(mb.Icon.Warning) +# mb.setText(_translate("Part_JoinFeatures","Select base object, then the object to embed, and invoke this tool.", None)) +# mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) +# mb.exec_() +# +# +# def IsActive(self): +# if FreeCAD.ActiveDocument: +# return True +# else: +# return False +# +#FreeCADGui.addCommand('Part_JoinEmbed',_CommandEmbedFeature()) +# +## -------------------------- /EmbedFeature -------------------------------------------------- +# +# +# +## -------------------------- CutoutFeature -------------------------------------------------- +# +#class _CommandCutoutFeature: +# "Command to create PartJoinFeature in Cutout mode" +# def GetResources(self): +# return {'Pixmap' : getIconPath("Part_JoinCutout.svg"), +# 'MenuText': QtCore.QT_TRANSLATE_NOOP("Part_CutoutFeature","Cutout for object"), +# 'Accel': "", +# 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Part_CutoutFeature","Makes a cutout in one object to fit another object.")} +# +# def Activated(self): +# if len(FreeCADGui.Selection.getSelection()) == 2 : +# CreateJoinFeature(name = "Cutout", mode = "Cutout") +# else: +# mb = QtGui.QMessageBox() +# mb.setIcon(mb.Icon.Warning) +# mb.setText(_translate("Part_JoinFeatures","Select the object to make a cutout in, then the object that should fit into the cutout, and invoke this tool.", None)) +# mb.setWindowTitle(_translate("Part_JoinFeatures","Bad selection", None)) +# mb.exec_() +# +# def IsActive(self): +# if FreeCAD.ActiveDocument: +# return True +# else: +# return False +# +#FreeCADGui.addCommand('Part_JoinCutout',_CommandCutoutFeature()) +# +## -------------------------- /CutoutFeature -------------------------------------------------- +# \ No newline at end of file