Arch: External edges are now automatically removed from Rebars base sketches

This commit is contained in:
Yorik van Havre 2015-06-25 19:54:57 -03:00
parent 864e0bcccb
commit 89cbdb35b6
2 changed files with 12 additions and 33 deletions

View File

@ -140,27 +140,10 @@ def removeComponents(objectsList,host=None):
for o in objectsList:
if not o in s:
s.append(o)
if Draft.getType(o) == "Window":
# fix for sketch-based windows
if o.Base:
if o.Base.Support:
if isinstance(o.Base.Support,tuple):
if o.Base.Support[0].Name == host.Name:
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing"))
o.Base.Support = None
elif o.Base.Support.Name == host.Name:
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing"))
o.Base.Support = None
elif o.Base.ExternalGeometry:
for i in range(len(o.Base.ExternalGeometry)):
if o.Base.ExternalGeometry[i][0].Name == host.Name:
o.Base.delExternal(i)
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing"))
break
else:
if FreeCAD.GuiUp:
if not Draft.getType(o) == "Roof":
o.ViewObject.hide()
fixDAG(o)
if FreeCAD.GuiUp:
if not Draft.getType(o) in ["Window","Roof"]:
o.ViewObject.hide()
host.Subtractions = s
else:
for o in objectsList:
@ -216,25 +199,20 @@ def makeComponent(baseobj=None,name="Component",delete=False):
obj.Shape = baseobj
return obj
def fixWindow(obj):
'''fixWindow(object): Fixes non-DAG problems in windows
def fixDAG(obj):
'''fixDAG(object): Fixes non-DAG problems in windows and rebars
by removing supports and external geometry from underlying sketches'''
if Draft.getType(obj) == "Window":
if Draft.getType(obj) in ["Window","Rebar"]:
if obj.Base:
if hasattr(obj.Base,"Support"):
if obj.Base.Support:
if isinstance(o.Base.Support,tuple):
if obj.Base.Support[0]:
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing"))
obj.Base.Support = None
elif obj.Base.Support:
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing"))
obj.Base.Support = None
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing"))
obj.Base.Support = None
if hasattr(obj.Base,"ExternalGeometry"):
if obj.Base.ExternalGeometry:
for i in range(len(obj.Base.ExternalGeometry)):
for g in obj.Base.ExternalGeometry:
obj.Base.delExternal(0)
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch external references to avoid cross-referencing"))
FreeCAD.Console.PrintMessage(translate("Arch","removing sketch external reference to avoid cross-referencing"))
def copyProperties(obj1,obj2):
'''copyProperties(obj1,obj2): Copies properties values from obj1 to obj2,

View File

@ -69,6 +69,7 @@ def makeRebar(baseobj,sketch,diameter=None,amount=1,offset=None,name="Rebar"):
else:
obj.OffsetStart = p.GetFloat("RebarOffset",30)
obj.OffsetEnd = p.GetFloat("RebarOffset",30)
ArchCommands.fixDAG(obj)
return obj