Skip to content

Commit

Permalink
Arch: Creating windows no longer removes external refs from base sket…
Browse files Browse the repository at this point in the history
…ches - fixes #2326
  • Loading branch information
yorikvanhavre committed Dec 19, 2015
1 parent 73a716c commit 5b750aa
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/Mod/Arch/ArchCommands.py
Expand Up @@ -140,7 +140,7 @@ def removeComponents(objectsList,host=None):
for o in objectsList:
if not o in s:
s.append(o)
fixDAG(o)
#fixDAG(o)
if FreeCAD.GuiUp:
if not Draft.getType(o) in ["Window","Roof"]:
o.ViewObject.hide()
Expand Down
8 changes: 5 additions & 3 deletions src/Mod/Arch/ArchRebar.py
Expand Up @@ -56,9 +56,11 @@ def makeRebar(baseobj=None,sketch=None,diameter=None,amount=1,offset=None,name="
obj.Base = sketch
if FreeCAD.GuiUp:
sketch.ViewObject.hide()
a = baseobj.Armatures
import Arch
host = getattr(Arch,"make"+Draft.getType(baseobj))(baseobj)
a = host.Armatures
a.append(obj)
baseobj.Armatures = a
host.Armatures = a
if diameter:
obj.Diameter = diameter
else:
Expand All @@ -70,7 +72,7 @@ def makeRebar(baseobj=None,sketch=None,diameter=None,amount=1,offset=None,name="
else:
obj.OffsetStart = p.GetFloat("RebarOffset",30)
obj.OffsetEnd = p.GetFloat("RebarOffset",30)
ArchCommands.fixDAG(obj)
#ArchCommands.fixDAG(obj)
return obj


Expand Down
13 changes: 9 additions & 4 deletions src/Mod/Arch/ArchWindow.py
Expand Up @@ -431,10 +431,13 @@ def Activated(self):
FreeCADGui.addModule("Arch")
FreeCADGui.doCommand("win = Arch.makeWindow(FreeCAD.ActiveDocument."+obj.Name+")")
if host:
FreeCADGui.doCommand("Arch.removeComponents(win,host=FreeCAD.ActiveDocument."+host.Name+")")
# make a new object to avoid circular references
FreeCADGui.doCommand("host=Arch.make"+Draft.getType(host)+"(FreeCAD.ActiveDocument."+host.Name+")")
FreeCADGui.doCommand("Arch.removeComponents(win,host)")
siblings = host.Proxy.getSiblings(host)
for sibling in siblings:
FreeCADGui.doCommand("Arch.removeComponents(win,host=FreeCAD.ActiveDocument."+sibling.Name+")")
FreeCADGui.doCommand("host=Arch.make"+Draft.getType(sibling)+"(FreeCAD.ActiveDocument."+sibling.Name+")")
FreeCADGui.doCommand("Arch.removeComponents(win,host)")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
return
Expand Down Expand Up @@ -474,10 +477,12 @@ def getPoint(self,point=None,obj=None):
FreeCADGui.doCommand("win = Arch.makeWindowPreset(\"" + WindowPresets[self.Preset] + "\"," + wp + "placement=pl)")
if obj:
if Draft.getType(obj) in AllowedHosts:
FreeCADGui.doCommand("Arch.removeComponents(win,host=FreeCAD.ActiveDocument."+obj.Name+")")
FreeCADGui.doCommand("host=Arch.make"+Draft.getType(obj)+"(FreeCAD.ActiveDocument."+obj.Name+")")
FreeCADGui.doCommand("Arch.removeComponents(win,host)")
siblings = obj.Proxy.getSiblings(obj)
for sibling in siblings:
FreeCADGui.doCommand("Arch.removeComponents(win,host=FreeCAD.ActiveDocument."+sibling.Name+")")
FreeCADGui.doCommand("host=Arch.make"+Draft.getType(sibling)+"(FreeCAD.ActiveDocument."+sibling.Name+")")
FreeCADGui.doCommand("Arch.removeComponents(win,host)")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
return
Expand Down

0 comments on commit 5b750aa

Please sign in to comment.