From 2b38876e40659b1d1233cf5e8ca6c7ddb7927091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Cerc=C3=B3s=20Pita?= Date: Mon, 20 May 2013 09:29:18 -0400 Subject: [PATCH] Managed situations when no tank volume can be found --- src/Mod/Ship/TankInstance.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Mod/Ship/TankInstance.py b/src/Mod/Ship/TankInstance.py index 8bb084bf9..d85db4856 100644 --- a/src/Mod/Ship/TankInstance.py +++ b/src/Mod/Ship/TankInstance.py @@ -735,9 +735,12 @@ def tankWeight(obj, angles=Vector(0.0,0.0,0.0), cor=Vector(0.0,0.0,0.0)): z = z0 + dz dx = bbox.XMax-bbox.XMin dy = bbox.YMax-bbox.YMin - box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0))) - fluid = s.common(box) - vol = fluid.Volume + try: + box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0))) + fluid = s.common(box) + vol = fluid.Volume + except: + vol = 0.0 W[0] = W[0] + vol*obj.Density # Compute fluid solid in rotated position (non linear rotation # are ussually computed as Roll -> Pitch -> Yaw). @@ -755,9 +758,12 @@ def tankWeight(obj, angles=Vector(0.0,0.0,0.0), cor=Vector(0.0,0.0,0.0)): while(abs(vol - v) > Error): z = z + (vol - v) / (dx*dy) dz = z - z0 - box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0))) - fluid = s.common(box) - v = fluid.Volume + try: + box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0))) + fluid = s.common(box) + v = fluid.Volume + except: + v = 0.0 if(abs(vol - v) / (dx*dy) <= 0.000001): break # Add fluid moments