Skip to content

Commit

Permalink
Part: deprecate old JoinFeatures code
Browse files Browse the repository at this point in the history
Commented out all the code not essential for recomputing old
JoinFeatures. The rest is left to support opening old projects.
  • Loading branch information
DeepSOIC committed Jul 29, 2016
1 parent 54c8828 commit ea586e9
Showing 1 changed file with 156 additions and 153 deletions.
309 changes: 156 additions & 153 deletions src/Mod/Part/JoinFeatures.py
Expand Up @@ -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"

#-------------------------- 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 ----------------------------------------
__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 ----------------------------------------

# -------------------------- common stuff --------------------------------------------------
def getParamRefine():
Expand All @@ -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"
Expand Down Expand Up @@ -159,133 +161,134 @@ def onDelete(self, feature, subelements):
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 --------------------------------------------------
#

0 comments on commit ea586e9

Please sign in to comment.