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 <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt 2015-04-20 21:23:52 +01:00 committed by wmayer
parent 13b8d323b2
commit 957f723782

View File

@ -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')