From 2977392bbe57ea306de93c0eed87d5af4f7c4b4a Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Wed, 7 Sep 2016 20:15:42 -0300 Subject: [PATCH] Arch: more failsafe area computation --- src/Mod/Arch/ArchComponent.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index f62ad3a91c..b321773da1 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -709,8 +709,18 @@ class Component: import Drawing,Part pset = [] for f in fset: - pf = Part.Face(Part.Wire(Drawing.project(f,FreeCAD.Vector(0,0,1))[0].Edges)) - pset.append(pf) + try: + pf = Part.Face(Part.Wire(Drawing.project(f,FreeCAD.Vector(0,0,1))[0].Edges)) + except Part.OCCError: + # error in computing the areas. Better set them to zero than show a wrong value + if obj.HorizontalArea.Value != 0: + print "Error computing areas for ",obj.Label + obj.HorizontalArea = 0 + if hasattr(obj,"PerimeterLength"): + if obj.PerimeterLength.Value != 0: + obj.PerimeterLength = 0 + else: + pset.append(pf) if pset: self.flatarea = pset.pop() for f in pset: