| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import FreeCAD |
| | import FreeCADGui |
| | from PySide import QtCore |
| |
|
| | from PySide.QtCore import QT_TRANSLATE_NOOP |
| |
|
| | __doc__ = """CAM Copy object and FreeCAD command""" |
| |
|
| |
|
| | translate = FreeCAD.Qt.translate |
| |
|
| |
|
| | class ObjectPathCopy: |
| | def __init__(self, obj): |
| | obj.addProperty( |
| | "App::PropertyLink", |
| | "Base", |
| | "Path", |
| | QT_TRANSLATE_NOOP("App::Property", "The toolpath to be copied"), |
| | ) |
| | obj.addProperty( |
| | "App::PropertyLink", |
| | "ToolController", |
| | "Path", |
| | QT_TRANSLATE_NOOP( |
| | "App::Property", |
| | "The tool controller that will be used to calculate the toolpath", |
| | ), |
| | ) |
| | obj.Proxy = self |
| |
|
| | def dumps(self): |
| | return None |
| |
|
| | def loads(self, state): |
| | return None |
| |
|
| | def execute(self, obj): |
| | if obj.Base: |
| | if hasattr(obj.Base, "ToolController"): |
| | obj.ToolController = obj.Base.ToolController |
| | if obj.Base.Path: |
| | obj.Path = obj.Base.Path.copy() |
| | if obj.Base.Placement: |
| | obj.Placement = obj.Base.Placement |
| |
|
| |
|
| | class ViewProviderPathCopy: |
| | def __init__(self, vobj): |
| | self.Object = vobj.Object |
| | vobj.Proxy = self |
| |
|
| | def attach(self, vobj): |
| | self.Object = vobj.Object |
| | return |
| |
|
| | def getIcon(self): |
| | return ":/icons/CAM_Copy.svg" |
| |
|
| | def dumps(self): |
| | return None |
| |
|
| | def loads(self, state): |
| | return None |
| |
|
| |
|
| | class CommandPathCopy: |
| | def GetResources(self): |
| | return { |
| | "Pixmap": "CAM_Copy", |
| | "MenuText": QT_TRANSLATE_NOOP("CAM_Copy", "Copy"), |
| | "ToolTip": QT_TRANSLATE_NOOP("CAM_Copy", "Creates a linked copy of another toolpath"), |
| | } |
| |
|
| | def IsActive(self): |
| | if FreeCAD.ActiveDocument is not None: |
| | for o in FreeCAD.ActiveDocument.Objects: |
| | if o.Name[:3] == "Job": |
| | return True |
| | return False |
| |
|
| | def Activated(self): |
| |
|
| | FreeCAD.ActiveDocument.openTransaction("Create Copy") |
| | FreeCADGui.addModule("Path.Op.Gui.Copy") |
| |
|
| | consolecode = """ |
| | import Path |
| | import Path.Op.Gui.Copy |
| | selGood = True |
| | # check that the selection contains exactly what we want |
| | selection = FreeCADGui.Selection.getSelection() |
| | proj = selection[0].InList[0] #get the group that the selectied object is inside |
| | |
| | if len(selection) != 1: |
| | FreeCAD.Console.PrintError(translate("CAM_Copy", "Please select one toolpath object")+"\n") |
| | selGood = False |
| | |
| | if not selection[0].isDerivedFrom("Path::Feature"): |
| | FreeCAD.Console.PrintError(translate("CAM_Copy", "The selected object is not a toolpath")+"\n") |
| | selGood = False |
| | |
| | if selGood: |
| | obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", str(selection[0].Name)+'_Copy') |
| | Path.Op.Gui.Copy.ObjectPathCopy(obj) |
| | Path.Op.Gui.Copy.ViewProviderPathCopy(obj.ViewObject) |
| | obj.Base = FreeCAD.ActiveDocument.getObject(selection[0].Name) |
| | if hasattr(obj.Base, 'ToolController'): |
| | obj.ToolController = obj.Base.ToolController |
| | |
| | g = proj.Group |
| | g.append(obj) |
| | proj.Group = g |
| | |
| | FreeCAD.ActiveDocument.recompute() |
| | |
| | """ |
| |
|
| | FreeCADGui.doCommand(consolecode) |
| | FreeCAD.ActiveDocument.commitTransaction() |
| | FreeCAD.ActiveDocument.recompute() |
| |
|
| |
|
| | if FreeCAD.GuiUp: |
| | |
| | FreeCADGui.addCommand("CAM_Copy", CommandPathCopy()) |
| |
|
| | FreeCAD.Console.PrintLog("Loading PathCopy… done\n") |
| |
|