diff --git a/src/Mod/Path/PathScripts/PathCollision.py b/src/Mod/Path/PathScripts/PathCollision.py deleted file mode 100644 index 18c245d05b..0000000000 --- a/src/Mod/Path/PathScripts/PathCollision.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# *************************************************************************** -# * Copyright (c) 2017 sliptonic * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -import FreeCAD -import Path -from PySide import QtCore -from PathScripts.PathUtils import waiting_effects -from PySide.QtCore import QT_TRANSLATE_NOOP - -LOG_MODULE = "PathCollision" -Path.Log.setLevel(Path.Log.Level.DEBUG, LOG_MODULE) -Path.Log.trackModule("PathCollision") -FreeCAD.setLogLevel("Path.Area", 0) - -__title__ = "Path Collision Utility" -__author__ = "sliptonic (Brad Collette)" -__url__ = "https://www.freecadweb.org" - -"""Path Collision object and FreeCAD command""" - - -class _CollisionSim: - def __init__(self, obj): - obj.Proxy = self - - def execute(self, fp): - """Do something when doing a recomputation, this method is mandatory""" - print("_CollisionSim", fp) - - -class _ViewProviderCollisionSim: - def __init__(self, vobj): - self.Object = vobj.Object - vobj.Proxy = self - vobj.addProperty( - "App::PropertyLink", - "Original", - "reference", - QT_TRANSLATE_NOOP( - "App::Property", "The base object this collision refers to" - ), - ) - - def attach(self, vobj): - self.Object = vobj.Object - - def setEdit(self, vobj, mode=0): - return True - - def getIcon(self): - return ":/icons/Path_Contour.svg" - - def __getstate__(self): - return None - - def __setstate__(self, state): - return None - - def onDelete(self, feature, subelements): - feature.Original.ViewObject.Visibility = True - return True - - -def __compareBBSpace(bb1, bb2): - if ( - bb1.XMin == bb2.XMin - and bb1.XMax == bb2.XMax - and bb1.YMin == bb2.YMin - and bb1.YMax == bb2.YMax - and bb1.ZMin == bb2.ZMin - and bb1.ZMax == bb2.ZMax - ): - return True - return False - - -@waiting_effects -def getCollisionObject(baseobject, simobject): - result = None - cVol = baseobject.Shape.common(simobject) - if cVol.Volume > 1e-12: - baseColor = (0.800000011920929, 0.800000011920929, 0.800000011920929, 00.0) - intersecColor = (1.0, 0.0, 0.0, 0.0) - colorassignment = [] - gougedShape = baseobject.Shape.cut(simobject) - - for i in gougedShape.Faces: - match = False - for j in cVol.Faces: - if __compareBBSpace(i.BoundBox, j.BoundBox): - match = True - if match is True: - # print ("Need to highlight Face{}".format(idx+1)) - colorassignment.append(intersecColor) - else: - colorassignment.append(baseColor) - - obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython", "Collision") - obj.Shape = gougedShape - _CollisionSim(obj) - _ViewProviderCollisionSim(obj.ViewObject) - - obj.ViewObject.DiffuseColor = colorassignment - FreeCAD.ActiveDocument.recompute() - baseobject.ViewObject.Visibility = False - obj.ViewObject.Original = baseobject - - return result diff --git a/src/Mod/Path/PathScripts/PathPlane.py b/src/Mod/Path/PathScripts/PathPlane.py deleted file mode 100644 index 9db418952d..0000000000 --- a/src/Mod/Path/PathScripts/PathPlane.py +++ /dev/null @@ -1,156 +0,0 @@ -# -*- coding: utf-8 -*- -# *************************************************************************** -# * Copyright (c) 2015 Dan Falck * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -""" Used for CNC machine plane selection G17,G18,G19 """ - -import FreeCAD -import FreeCADGui -import Path -from PySide import QtCore -from PySide.QtCore import QT_TRANSLATE_NOOP - - -class Plane: - def __init__(self, obj): - obj.addProperty( - "App::PropertyEnumeration", - "SelectionPlane", - "Path", - QT_TRANSLATE_NOOP("App::Property", "Orientation plane of CNC path"), - ) - obj.SelectionPlane = ["XY", "XZ", "YZ"] - 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): - clonelist = ["XY", "XZ", "YZ"] - cindx = clonelist.index(str(obj.SelectionPlane)) - pathlist = ["G17", "G18", "G19"] - labelindx = clonelist.index(obj.SelectionPlane) + 1 - obj.Label = "Plane" + str(labelindx) - if obj.Active: - obj.Path = Path.Path(pathlist[cindx]) - obj.ViewObject.Visibility = True - else: - obj.Path = Path.Path("(inactive operation)") - obj.ViewObject.Visibility = False - - -class _ViewProviderPlane: - def __init__(self, vobj): # mandatory - 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("ShapeColor", mode) - vobj.setEditorMode("Transparency", mode) - vobj.setEditorMode("Visibility", mode) - - def __getstate__(self): # mandatory - return None - - def __setstate__(self, state): # mandatory - return None - - def getIcon(self): # optional - return ":/icons/Path_Plane.svg" - - def onChanged(self, vobj, prop): # optional - 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("ShapeColor", mode) - vobj.setEditorMode("Transparency", mode) - vobj.setEditorMode("Visibility", mode) - - def updateData(self, vobj, prop): # optional - # this is executed when a property of the APP OBJECT changes - pass - - def setEdit(self, vobj, mode): # optional - # this is executed when the object is double-clicked in the tree - pass - - def unsetEdit(self, vobj, mode): # optional - # this is executed when the user cancels or terminates edit mode - pass - - -class CommandPathPlane: - def GetResources(self): - return { - "Pixmap": "PathPlane", - "MenuText": QT_TRANSLATE_NOOP("PathPlane", "Selection Plane"), - "ToolTip": QT_TRANSLATE_NOOP( - "PathPlane", "Create a Selection Plane object" - ), - } - - 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 Selection Plane object") - FreeCADGui.addModule("PathScripts.PathPlane") - snippet = """ -import Path -import PathScripts -from PathScripts import PathUtils -prjexists = False -obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython","Plane") -PathScripts.PathPlane.Plane(obj) -obj.Active = True -PathScripts.PathPlane._ViewProviderPlane(obj.ViewObject) -PathUtils.addToJob(obj) - -""" - - FreeCADGui.doCommand(snippet) - FreeCAD.ActiveDocument.commitTransaction() - FreeCAD.ActiveDocument.recompute() - - -if FreeCAD.GuiUp: - # register the FreeCAD command - FreeCADGui.addCommand("Path_Plane", CommandPathPlane()) - - -FreeCAD.Console.PrintLog("Loading PathPlane... done\n")