| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| """Used to create CNC machine fixture offsets such as G54,G55, etc...""" |
|
|
| import FreeCAD |
| import FreeCADGui |
| import Path |
| import PathScripts.PathUtils as PathUtils |
| from PySide.QtCore import QT_TRANSLATE_NOOP |
|
|
|
|
| class Fixture: |
| def __init__(self, obj): |
| obj.addProperty( |
| "App::PropertyEnumeration", |
| "Fixture", |
| "Path", |
| QT_TRANSLATE_NOOP("App::Property", "Fixture Offset Number"), |
| ) |
| obj.Fixture = [ |
| "G54", |
| "G55", |
| "G56", |
| "G57", |
| "G58", |
| "G59", |
| "G59.1", |
| "G59.2", |
| "G59.3", |
| "G59.4", |
| "G59.5", |
| "G59.6", |
| "G59.7", |
| "G59.8", |
| "G59.9", |
| ] |
| obj.addProperty( |
| "App::PropertyBool", |
| "Active", |
| "Path", |
| QT_TRANSLATE_NOOP( |
| "App::Property", "Make False, to prevent operation from generating code" |
| ), |
| ) |
|
|
| obj.Proxy = self |
|
|
| def execute(self, obj): |
| fixlist = [ |
| "G54", |
| "G55", |
| "G56", |
| "G57", |
| "G58", |
| "G59", |
| "G59.1", |
| "G59.2", |
| "G59.3", |
| "G59.4", |
| "G59.5", |
| "G59.6", |
| "G59.7", |
| "G59.8", |
| "G59.9", |
| ] |
| fixture = fixlist.index(obj.Fixture) |
| obj.Path = Path.Path(str(obj.Fixture)) |
| obj.Label = "Fixture" + str(fixture) |
| if obj.Active: |
| job = PathUtils.findParentJob(obj) |
| c1 = Path.Command(str(obj.Fixture)) |
| c2 = Path.Command("G0" + str(job.Stock.Shape.BoundBox.ZMax)) |
| obj.Path = Path.Path([c1, c2]) |
| obj.ViewObject.Visibility = True |
| else: |
| obj.Path = Path.Path("(inactive operation)") |
| obj.ViewObject.Visibility = False |
|
|
|
|
| class _ViewProviderFixture: |
| def __init__(self, vobj): |
| |
| vobj.Proxy = self |
| mode = 2 |
| vobj.setEditorMode("LineWidth", mode) |
| vobj.setEditorMode("MarkerColor", mode) |
| vobj.setEditorMode("NormalColor", mode) |
| vobj.setEditorMode("DisplayMode", mode) |
| vobj.setEditorMode("BoundingBox", mode) |
| vobj.setEditorMode("Selectable", mode) |
| vobj.setEditorMode("ShapeAppearance", mode) |
| vobj.setEditorMode("Transparency", mode) |
| vobj.setEditorMode("Visibility", mode) |
|
|
| def dumps(self): |
| return None |
|
|
| def loads(self, state): |
| return None |
|
|
| def getIcon(self): |
| return ":/icons/CAM_Datums.svg" |
|
|
| def onChanged(self, vobj, prop): |
| mode = 2 |
| vobj.setEditorMode("LineWidth", mode) |
| vobj.setEditorMode("MarkerColor", mode) |
| vobj.setEditorMode("NormalColor", mode) |
| vobj.setEditorMode("DisplayMode", mode) |
| vobj.setEditorMode("BoundingBox", mode) |
| vobj.setEditorMode("Selectable", mode) |
| vobj.setEditorMode("ShapeAppearance", mode) |
| vobj.setEditorMode("Transparency", mode) |
| vobj.setEditorMode("Visibility", mode) |
|
|
| def updateData(self, vobj, prop): |
| |
| pass |
|
|
| def setEdit(self, vobj, mode): |
| |
| pass |
|
|
| def unsetEdit(self, vobj, mode): |
| |
| pass |
|
|
|
|
| class CommandPathFixture: |
| def GetResources(self): |
| return { |
| "Pixmap": "CAM_Datums", |
| "MenuText": QT_TRANSLATE_NOOP("CAM_Fixture", "Fixture"), |
| "ToolTip": QT_TRANSLATE_NOOP("CAM_Fixture", "Creates a fixture offset"), |
| } |
|
|
| 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 a Fixture Offset") |
| FreeCADGui.addModule("Path.Main.Gui.Fixture") |
| snippet = """ |
| import Path |
| import PathScripts |
| from PathScripts import PathUtils |
| prjexists = False |
| obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython","Fixture") |
| Path.Main.Gui.Fixture.Fixture(obj) |
| obj.Active = True |
| Path.Main.Gui.Fixture._ViewProviderFixture(obj.ViewObject) |
| |
| PathUtils.addToJob(obj) |
| |
| """ |
| FreeCADGui.doCommand(snippet) |
| FreeCAD.ActiveDocument.commitTransaction() |
| FreeCAD.ActiveDocument.recompute() |
|
|
|
|
| if FreeCAD.GuiUp: |
| |
| FreeCADGui.addCommand("CAM_Fixture", CommandPathFixture()) |
|
|
|
|
| FreeCAD.Console.PrintLog("Loading PathFixture… done\n") |
|
|