Arch: Rebars can now be based on any wire, not only sketches

This commit is contained in:
Yorik van Havre
2017-04-05 17:25:57 -03:00
parent 779d2658aa
commit 0b398559ab

View File

@@ -114,14 +114,15 @@ class _CommandRebar:
if Draft.getType(obj) == "Structure":
if len(sel) > 1:
sk = sel[1].Object
if Draft.getType(sk) == "Sketch":
# we have a base object and a sketch: create the rebar now
FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Rebar"))
FreeCADGui.addModule("Arch")
FreeCADGui.doCommand("Arch.makeRebar(FreeCAD.ActiveDocument."+obj.Name+",FreeCAD.ActiveDocument."+sk.Name+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
return
if sk.isDerivedFrom("Part::Feature"):
if len(sk.Shape.Wires) == 1:
# we have a base object and a sketch: create the rebar now
FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Rebar"))
FreeCADGui.addModule("Arch")
FreeCADGui.doCommand("Arch.makeRebar(FreeCAD.ActiveDocument."+obj.Name+",FreeCAD.ActiveDocument."+sk.Name+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
return
else:
# we have only a base object: open the sketcher
FreeCADGui.activateWorkbench("SketcherWorkbench")
@@ -129,24 +130,25 @@ class _CommandRebar:
FreeCAD.ArchObserver = ArchComponent.ArchSelectionObserver(obj,FreeCAD.ActiveDocument.Objects[-1],hide=False,nextCommand="Arch_Rebar")
FreeCADGui.Selection.addObserver(FreeCAD.ArchObserver)
return
elif Draft.getType(obj) == "Sketch":
elif obj.isDerivedFrom("Part::Feature"):
if len(obj.Shape.Wires) == 1:
# we have only the sketch: extract the base object from it
if hasattr(obj,"Support"):
if obj.Support:
if len(obj.Support) != 0:
sup = obj.Support[0][0]
if hasattr(obj,"Support"):
if obj.Support:
if len(obj.Support) != 0:
sup = obj.Support[0][0]
else:
print("Arch: error: couldn't extract a base object")
return
FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Rebar"))
FreeCADGui.addModule("Arch")
FreeCADGui.doCommand("Arch.makeRebar(FreeCAD.ActiveDocument."+sup.Name+",FreeCAD.ActiveDocument."+obj.Name+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
return
else:
print("Arch: error: couldn't extract a base object")
return
FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Rebar"))
FreeCADGui.addModule("Arch")
FreeCADGui.doCommand("Arch.makeRebar(FreeCAD.ActiveDocument."+sup.Name+",FreeCAD.ActiveDocument."+obj.Name+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
return
else:
print("Arch: error: couldn't extract a base object")
return
FreeCAD.Console.PrintMessage(translate("Arch","Please select a base face on a structural object\n"))
FreeCADGui.Control.showDialog(ArchComponent.SelectionTaskPanel())