From 22dfc6d65515431aa1dc7b4c6a5fac00b76f6ff7 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Mon, 26 Sep 2022 00:46:04 +0800 Subject: [PATCH] [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: