From 957f7237821031f22fc86fdf6468a0a85ee0855d Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Mon, 20 Apr 2015 21:23:52 +0100 Subject: [PATCH] FEM: Make sure .inp doesn't contain force values that crash ccx ccx crashes when a force has too many digits like this: FemConstraintForce,2,1.5966711853290134e-18 but it's OK with that format: FemConstraintForce,2,1.5966711853e-18 An example of ccx error: *ERROR reading *CLOAD. Card image: FEMCONSTRAINTFORCE,3,1.5966711853290134E-18 This commits adds formatting to make sure the numbers are within ccx limits. Signed-off-by: Przemo Firszt --- src/Mod/Fem/MechanicalAnalysis.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Mod/Fem/MechanicalAnalysis.py b/src/Mod/Fem/MechanicalAnalysis.py index fbf5f4398..060543f62 100644 --- a/src/Mod/Fem/MechanicalAnalysis.py +++ b/src/Mod/Fem/MechanicalAnalysis.py @@ -543,9 +543,12 @@ class _JobControlTaskPanel: vec = ForceObject['Object'].DirectionVector inpfile.write('*CLOAD\n') inpfile.write('** force: ' + str(ForceObject['NodeLoad']) + ' N, direction: ' + str(vec) + '\n') - inpfile.write(ForceObject['Object'].Name + ',1,' + repr(vec.x * ForceObject['NodeLoad']) + '\n') - inpfile.write(ForceObject['Object'].Name + ',2,' + repr(vec.y * ForceObject['NodeLoad']) + '\n') - inpfile.write(ForceObject['Object'].Name + ',3,' + repr(vec.z * ForceObject['NodeLoad']) + '\n\n') + v1 = "{:.15}".format(repr(vec.x * ForceObject['NodeLoad'])) + v2 = "{:.15}".format(repr(vec.y * ForceObject['NodeLoad'])) + v3 = "{:.15}".format(repr(vec.z * ForceObject['NodeLoad'])) + inpfile.write(ForceObject['Object'].Name + ',1,' + v1 + '\n') + inpfile.write(ForceObject['Object'].Name + ',2,' + v2 + '\n') + inpfile.write(ForceObject['Object'].Name + ',3,' + v3 + '\n\n') # write outputs, both are needed by FreeCAD inpfile.write('\n** outputs --> frd file\n')