diff --git a/src/Mod/Draft/CMakeLists.txt b/src/Mod/Draft/CMakeLists.txt index 12598f5a25..5b7ddd5975 100644 --- a/src/Mod/Draft/CMakeLists.txt +++ b/src/Mod/Draft/CMakeLists.txt @@ -63,6 +63,7 @@ SET(Draft_functions draftfunctions/cut.py draftfunctions/downgrade.py draftfunctions/draftify.py + draftfunctions/extrude.py draftfunctions/fuse.py draftfunctions/heal.py draftfunctions/join.py diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 673e03eadd..557006771e 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -185,6 +185,8 @@ from draftfunctions.downgrade import downgrade from draftfunctions.draftify import draftify +from draftfunctions.extrude import extrude + from draftfunctions.fuse import fuse from draftfunctions.heal import heal @@ -501,25 +503,6 @@ def makePointArray(base, ptlst): return obj -def extrude(obj,vector,solid=False): - """makeExtrusion(object,vector): extrudes the given object - in the direction given by the vector. The original object - gets hidden.""" - if not FreeCAD.ActiveDocument: - FreeCAD.Console.PrintError("No active document. Aborting\n") - return - newobj = FreeCAD.ActiveDocument.addObject("Part::Extrusion","Extrusion") - newobj.Base = obj - newobj.Dir = vector - newobj.Solid = solid - if gui: - obj.ViewObject.Visibility = False - formatObject(newobj,obj) - select(newobj) - - return newobj - - def moveVertex(object, vertex_index, vector): points = object.Points points[vertex_index] = points[vertex_index].add(vector) diff --git a/src/Mod/Draft/draftfunctions/extrude.py b/src/Mod/Draft/draftfunctions/extrude.py new file mode 100644 index 0000000000..8ac7851c61 --- /dev/null +++ b/src/Mod/Draft/draftfunctions/extrude.py @@ -0,0 +1,61 @@ +# *************************************************************************** +# * Copyright (c) 2009, 2010 Yorik van Havre * +# * Copyright (c) 2009, 2010 Ken Cline * +# * Copyright (c) 2020 FreeCAD Developers * +# * * +# * 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 * +# * * +# *************************************************************************** +"""This module provides the code for Draft extrude function. +""" +## @package extrude +# \ingroup DRAFT +# \brief This module provides the code for Draft extrude function. + +import FreeCAD as App + +import draftutils.gui_utils as gui_utils + + +def extrude(obj, vector, solid=False): + """extrude(object, vector, [solid]) + + Create a Part::Extrusion object from a given object. + + Parameters + ---------- + obj : + + vector : Base.Vector + The extrusion direction and module. + + solid : bool + TODO: describe. + """ + if not App.ActiveDocument: + App.Console.PrintError("No active document. Aborting\n") + return + newobj = App.ActiveDocument.addObject("Part::Extrusion", "Extrusion") + newobj.Base = obj + newobj.Dir = vector + newobj.Solid = solid + if App.GuiUp: + obj.ViewObject.Visibility = False + gui_utils.format_object(newobj,obj) + gui_utils.select(newobj) + + return newobj