From 22dfc6d65515431aa1dc7b4c6a5fac00b76f6ff7 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Mon, 26 Sep 2022 00:46:04 +0800 Subject: [PATCH 1/3] [ArchWall] Use and Create ArchSketch if add-on is present --- src/Mod/Arch/ArchWall.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 6a1816ef40..75f16af3fd 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -171,12 +171,23 @@ def joinWalls(walls,delete=False): if base.Base: if base.Base.Shape.Faces: return None - if Draft.getType(base.Base) == "Sketcher::SketchObject": + # Use ArchSketch if SketchArch add-on is present + if Draft.getType(base.Base) == "ArchSketch": sk = base.Base else: - sk = Draft.makeSketch(base.Base,autoconstraints=True) - if sk: + try: + import ArchSketchObject + newSk=ArchSketchObject.makeArchSketch() + except: + if Draft.getType(base.Base) != "Sketcher::SketchObject": + newSk=FreeCAD.ActiveDocument.addObject("Sketcher::SketchObject","WallTrace") + else: + newSk=None + if newSk: + sk = Draft.makeSketch(base.Base,autoconstraints=True, addTo=newSk) base.Base = sk + else: + sk = base.Base for w in walls: if w.Base: if not w.Base.Shape.Faces: @@ -421,7 +432,12 @@ class _CommandWall: FreeCADGui.addModule("Draft") if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch").GetBool("WallSketches",True): - FreeCADGui.doCommand('base=FreeCAD.ActiveDocument.addObject("Sketcher::SketchObject","WallTrace")') + # Use ArchSketch if SketchArch add-on is present + try: + FreeCADGui.doCommand('import ArchSketchObject') + FreeCADGui.doCommand('base=ArchSketchObject.makeArchSketch()') + except: + FreeCADGui.doCommand('base=FreeCAD.ActiveDocument.addObject("Sketcher::SketchObject","WallTrace")') FreeCADGui.doCommand('base.Placement = FreeCAD.DraftWorkingPlane.getPlacement()') FreeCADGui.doCommand('base.addGeometry(trace)') else: From 0e0c26647e63fa89138e39244550f0895f04ab28 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Sun, 23 Oct 2022 11:33:24 +0800 Subject: [PATCH 2/3] [ArchWall] Use and Create ArchSketch if add-on is present: following Yorik's comment (~ 17.10.2022) https://github.com/FreeCAD/FreeCAD/pull/7526#discussion_r997010867 --- src/Mod/Arch/ArchWall.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 75f16af3fd..1965cb4c14 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -434,6 +434,7 @@ class _CommandWall: if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch").GetBool("WallSketches",True): # Use ArchSketch if SketchArch add-on is present try: + import ArchSketchObject FreeCADGui.doCommand('import ArchSketchObject') FreeCADGui.doCommand('base=ArchSketchObject.makeArchSketch()') except: From 77ea0cb5e668472662b83f2add885e1cabd7def5 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Thu, 27 Oct 2022 00:59:02 +0800 Subject: [PATCH 3/3] [ArchWall] Use and Create ArchSketch if add-on is present: Add 'dummy' ArchSketchObject.py FreeCAD forum discussion - https://forum.freecadweb.org/viewtopic.php?f=23&t=71917&start=20#p636252 --- src/Mod/Arch/ArchSketchObject.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/Mod/Arch/ArchSketchObject.py diff --git a/src/Mod/Arch/ArchSketchObject.py b/src/Mod/Arch/ArchSketchObject.py new file mode 100644 index 0000000000..cc763c56ca --- /dev/null +++ b/src/Mod/Arch/ArchSketchObject.py @@ -0,0 +1,32 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2022 * +#* Paul Lee * +#* * +#* 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 * +#* * +#*************************************************************************** + +class ArchSketchObject: + def __init__(self, obj): + pass + +class ArchSketch(ArchSketchObject): + def __init__(self, obj): + pass + +#from ArchSketchObjectExt import ArchSketch # Not works