Skip to content

Commit

Permalink
Arch: Fixed bugs when working without GUI
Browse files Browse the repository at this point in the history
  • Loading branch information
yorikvanhavre committed Jul 17, 2014
1 parent 0fda229 commit eea2744
Show file tree
Hide file tree
Showing 13 changed files with 63 additions and 42 deletions.
3 changes: 2 additions & 1 deletion src/Mod/Arch/ArchAxis.py
Expand Up @@ -41,7 +41,8 @@ def makeAxis(num=5,size=1000,name=translate("Arch","Axes")):
based on the given number of axes and interval distances'''
obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython",name)
_Axis(obj)
_ViewProviderAxis(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderAxis(obj.ViewObject)
if num:
dist = []
angles = []
Expand Down
9 changes: 5 additions & 4 deletions src/Mod/Arch/ArchBuilding.py
Expand Up @@ -34,12 +34,13 @@ def translate(ctxt,txt):
__author__ = "Yorik van Havre"
__url__ = "http://www.freecadweb.org"

def makeBuilding(objectslist=None,join=False,name=translate("Arch","Building")):
'''makeBuilding(objectslist,[joinmode]): creates a building including the
objects from the given list. If joinmode is True, components will be joined.'''
def makeBuilding(objectslist=None,baseobj=None,name=translate("Arch","Building")):
'''makeBuilding(objectslist): creates a building including the
objects from the given list.'''
obj = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython",name)
_Building(obj)
_ViewProviderBuilding(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderBuilding(obj.ViewObject)
if objectslist:
obj.Group = objectslist
return obj
Expand Down
7 changes: 3 additions & 4 deletions src/Mod/Arch/ArchFloor.py
Expand Up @@ -34,10 +34,9 @@ def translate(ctxt,txt):
__author__ = "Yorik van Havre"
__url__ = "http://www.freecadweb.org"

def makeFloor(objectslist=None,join=True,name=translate("Arch","Floor")):
'''makeFloor(objectslist,[joinmode]): creates a floor including the
objects from the given list. If joinmode is False, components will
not be joined.'''
def makeFloor(objectslist=None,baseobj=None,name=translate("Arch","Floor")):
'''makeFloor(objectslist): creates a floor including the
objects from the given list.'''
obj = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython",name)
_Floor(obj)
if FreeCAD.GuiUp:
Expand Down
16 changes: 10 additions & 6 deletions src/Mod/Arch/ArchFrame.py
Expand Up @@ -38,15 +38,19 @@ def translate(ctxt,txt):
# Possible roles for frames
Roles = ['Covering','Member','Railing','Shading Device','Tendon']

def makeFrame(base,profile,name=translate("Arch","Frame")):
"""makeFrame(base,profile,[name]): creates a frame object from a base sketch (or any other object
def makeFrame(baseobj,profile,name=translate("Arch","Frame")):
"""makeFrame(baseobj,profile,[name]): creates a frame object from a base sketch (or any other object
containing wires) and a profile object (an extrudable 2D object containing faces or closed wires)"""
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Frame(obj)
_ViewProviderFrame(obj.ViewObject)
obj.Base = base
obj.Profile = profile
#profile.ViewObject.hide()
if FreeCAD.GuiUp:
_ViewProviderFrame(obj.ViewObject)
if baseobj:
obj.Base = baseobj
if profile:
obj.Profile = profile
if FreeCAD.GuiUp:
profile.ViewObject.hide()
return obj

class _CommandFrame:
Expand Down
8 changes: 5 additions & 3 deletions src/Mod/Arch/ArchRebar.py
Expand Up @@ -42,7 +42,9 @@ def makeRebar(baseobj,sketch,diameter=None,amount=1,offset=None,name=translate("
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Rebar(obj)
_ViewProviderRebar(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderRebar(obj.ViewObject)
obj.ViewObject.ShapeColor = ArchCommands.getDefaultColor("Rebar")
if hasattr(sketch,"Support"):
if sketch.Support:
if isinstance(sketch.Support,tuple):
Expand All @@ -51,7 +53,8 @@ def makeRebar(baseobj,sketch,diameter=None,amount=1,offset=None,name=translate("
elif sketch.Support == baseobj:
sketch.Support = None
obj.Base = sketch
sketch.ViewObject.hide()
if FreeCAD.GuiUp:
sketch.ViewObject.hide()
a = baseobj.Armatures
a.append(obj)
baseobj.Armatures = a
Expand All @@ -66,7 +69,6 @@ def makeRebar(baseobj,sketch,diameter=None,amount=1,offset=None,name=translate("
else:
obj.OffsetStart = p.GetFloat("RebarOffset",30)
obj.OffsetEnd = p.GetFloat("RebarOffset",30)
obj.ViewObject.ShapeColor = ArchCommands.getDefaultColor("Rebar")
return obj


Expand Down
3 changes: 2 additions & 1 deletion src/Mod/Arch/ArchRoof.py
Expand Up @@ -42,7 +42,8 @@ def makeRoof(baseobj=None,facenr=1,angle=45,name=translate("Arch","Roof")):
= roof).'''
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Roof(obj)
_ViewProviderRoof(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderRoof(obj.ViewObject)
if baseobj:
obj.Base = baseobj
obj.Face = facenr
Expand Down
3 changes: 2 additions & 1 deletion src/Mod/Arch/ArchSectionPlane.py
Expand Up @@ -37,7 +37,8 @@ def makeSectionPlane(objectslist=None,name=translate("Arch","Section")):
given objects. If no object is given, the whole document will be considered."""
obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython",name)
_SectionPlane(obj)
_ViewProviderSectionPlane(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderSectionPlane(obj.ViewObject)
if objectslist:
g = []
for o in objectslist:
Expand Down
7 changes: 5 additions & 2 deletions src/Mod/Arch/ArchSite.py
Expand Up @@ -34,14 +34,17 @@ def translate(ctxt,txt):
__author__ = "Yorik van Havre"
__url__ = "http://www.freecadweb.org"

def makeSite(objectslist=None,name=translate("Arch","Site")):
def makeSite(objectslist=None,baseobj=None,name=translate("Arch","Site")):
'''makeBuilding(objectslist): creates a site including the
objects from the given list.'''
obj = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython",name)
_Site(obj)
_ViewProviderSite(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderSite(obj.ViewObject)
if objectslist:
obj.Group = objectslist
if baseobj:
obj.Terrain = baseobj
return obj

class _CommandSite:
Expand Down
3 changes: 2 additions & 1 deletion src/Mod/Arch/ArchSpace.py
Expand Up @@ -40,7 +40,8 @@ def makeSpace(objects=None,name=translate("Arch","Space")):
selection objects as got from getSelectionEx(), or a list of tuples (object, subobjectname)"""
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Space(obj)
_ViewProviderSpace(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderSpace(obj.ViewObject)
if objects:
if not isinstance(objects,list):
objects = [objects]
Expand Down
13 changes: 7 additions & 6 deletions src/Mod/Arch/ArchStairs.py
Expand Up @@ -36,15 +36,16 @@ def translate(ctxt,txt):
return txt


def makeStairs(base=None,length=None,width=None,height=None,steps=None,name=translate("Arch","Stairs")):
"""makeStairs([base,length,width,height,steps]): creates a Stairs
def makeStairs(baseobj=None,length=None,width=None,height=None,steps=None,name=translate("Arch","Stairs")):
"""makeStairs([baseobj,length,width,height,steps]): creates a Stairs
objects with given attributes."""
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Stairs(obj)
_ViewProviderStairs(obj.ViewObject)
if base:
obj.Base = base
if FreeCAD.GuiUp:
_ViewProviderStairs(obj.ViewObject)
if baseobj:
obj.Base = baseobj
if length:
obj.Length = length
else:
Expand Down Expand Up @@ -80,7 +81,7 @@ def Activated(self):
FreeCADGui.doCommand("import Arch")
if len(FreeCADGui.Selection.getSelection()) == 1:
n = FreeCADGui.Selection.getSelection()[0].Name
FreeCADGui.doCommand("Arch.makeStairs(base=FreeCAD.ActiveDocument."+n+")")
FreeCADGui.doCommand("Arch.makeStairs(baseobj=FreeCAD.ActiveDocument."+n+")")
else:
FreeCADGui.doCommand("Arch.makeStairs()")
FreeCAD.ActiveDocument.commitTransaction()
Expand Down
16 changes: 10 additions & 6 deletions src/Mod/Arch/ArchStructure.py
Expand Up @@ -295,7 +295,9 @@ def makeStructure(baseobj=None,length=None,width=None,height=None,name=translate
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Structure(obj)
_ViewProviderStructure(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderStructure(obj.ViewObject)
obj.ViewObject.ShapeColor = ArchCommands.getDefaultColor("Structure")
if baseobj:
obj.Base = baseobj
obj.Base.ViewObject.hide()
Expand All @@ -316,7 +318,6 @@ def makeStructure(baseobj=None,length=None,width=None,height=None,name=translate
obj.Length = p.GetFloat("StructureLength",100)
if height > length:
obj.Role = "Column"
obj.ViewObject.ShapeColor = ArchCommands.getDefaultColor("Structure")
return obj

def makeStructuralSystem(objects,axes,name=translate("Arch","StructuralSystem")):
Expand All @@ -329,12 +330,14 @@ def makeStructuralSystem(objects,axes,name=translate("Arch","StructuralSystem"))
for o in objects:
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_StructuralSystem(obj)
_ViewProviderStructuralSystem(obj.ViewObject)
if FreeCAD.GuiUp:
_ViewProviderStructuralSystem(obj.ViewObject)
obj.Base = o
obj.Axes = axes
result.append(obj)
o.ViewObject.hide()
Draft.formatObject(obj,o)
if FreeCAD.GuiUp:
o.ViewObject.hide()
Draft.formatObject(obj,o)
FreeCAD.ActiveDocument.recompute()
if len(result) == 1:
return result[0]
Expand All @@ -353,7 +356,8 @@ def makeProfile(W=46,H=80,tw=3.8,tf=5.2,name="Profile"):
obj.Height = H
obj.WebThickness = tw
obj.FlangeThickness = tf
Draft._ViewProviderDraft(obj.ViewObject)
if FreeCAD.GuiUp:
Draft._ViewProviderDraft(obj.ViewObject)
return obj

class _CommandStructure:
Expand Down
1 change: 0 additions & 1 deletion src/Mod/Arch/ArchWall.py
Expand Up @@ -49,7 +49,6 @@ def makeWall(baseobj=None,length=None,width=None,height=None,align="Center",face
if FreeCAD.GuiUp:
_ViewProviderWall(obj.ViewObject)
obj.ViewObject.ShapeColor = ArchCommands.getDefaultColor("Wall")

if baseobj:
obj.Base = baseobj
if face:
Expand Down
16 changes: 10 additions & 6 deletions src/Mod/Arch/ArchWindow.py
Expand Up @@ -51,11 +51,12 @@ def makeWindow(baseobj=None,width=None,height=None,parts=None,name=translate("Ar
if Draft.getType(baseobj) == "Window":
obj = Draft.clone(baseobj)
return obj
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Window(obj)
_ViewProviderWindow(obj.ViewObject)
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj.ViewObject.Transparency=p.GetInt("WindowTransparency",85)
if FreeCAD.GuiUp:
_ViewProviderWindow(obj.ViewObject)
obj.ViewObject.Transparency=p.GetInt("WindowTransparency",85)
if width:
obj.Width = width
if height:
Expand All @@ -67,7 +68,7 @@ def makeWindow(baseobj=None,width=None,height=None,parts=None,name=translate("Ar
obj.WindowParts = parts
else:
if baseobj:
if baseobj.isDerivedFrom("Part::Feature"):
if baseobj.isDerivedFrom("Part::Part2DObject"):
if baseobj.Shape.Wires:
i = 0
ws = ''
Expand All @@ -77,7 +78,7 @@ def makeWindow(baseobj=None,width=None,height=None,parts=None,name=translate("Ar
ws += "Wire" + str(i)
i += 1
obj.WindowParts = ["Default","Frame",ws,"1","0"]
if obj.Base:
if obj.Base and FreeCAD.GuiUp:
obj.Base.ViewObject.DisplayMode = "Wireframe"
obj.Base.ViewObject.hide()
return obj
Expand Down Expand Up @@ -673,7 +674,10 @@ def execute(self,obj):
if not DraftGeomUtils.isNull(pl):
base.Placement = pl
elif not obj.WindowParts:
pass
if not obj.Base.Shape.isNull():
base = obj.Base.Shape.copy()
if not DraftGeomUtils.isNull(pl):
base.Placement = base.Placement.multiply(pl)
else:
print "Arch: Bad formatting of window parts definitions"

Expand Down

0 comments on commit eea2744

Please sign in to comment.