cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Learn all about PTC Community Badges. Engage with PTC and see how many you can earn! X

String parameter with decimal figures cut-off

tleati
12-Amethyst

String parameter with decimal figures cut-off

Hello,

I have a problem, I have a parameter defined as a string and that should appear as, in this specific model, "4,0", but which indeed appears as "4," --> without the zero.

(It cuts-off the last figure).

The strange thing is that if I add a test parameter defined in the same way (in the same) it comes out correctly as "4,0". I post below a screen recording of what I mean:

Video Link : 6284

(hoping that is clear).

Anyone knows what is it due to and how to fix it?

Thanks

bye bye

9 REPLIES 9

Hi Tommaso,

I haven't seen this problem before, but I would suggest using the "=?" toolbutton in the Relations window to investigate.

This pops up a small dialogue box which allows you to evaluate any formula, and immediately see the answer - so for example, you can check the value of pro_mp_mass and also the result of pro_mp_mass - floor(pro_mp_mass), just by copying and pasting from the Relations editor.

Try evaluating small parts of your relations in this way, and make sure that each small part gives the answer you were expecting.

Good luck!

Hi Johnatan,

yes, it definitely was a mistake in the logic that, with this particular number, gave back an error in a string line.

Indeed massa_disegno appears "correctly" as "4,".

thanks

bye bye

mender
12-Amethyst
(To:tleati)

Are you positive this is a string-valued parameter?  Removing trailing zeroes (generally via detail setup options lead_trail_zeroes and lead_trail_zeroes_scope, generally driven by your standards) would make considerably more sense if it were a real number -valued parameter.

tleati
12-Amethyst
(To:mender)

Hi Matthew,

yes I had to make it a string parameter just for reasons linked to the approximations and, above all, to the fact that that parameter massa_disegno is a value I had built to "please" the eye in the drawing tables, that is an indication of mass rounded accordingly to the value of the mass, e.g. 5,2 kg, 204 kg, 768 g...depends on the order of size of the mass).

bye bye

BenLoosli
23-Emerald II
(To:tleati)

Check your If/Else logic, I think the mp_pro_mass is falling through and using the default statement at the end, rather than the one you are using for the test.

Like Jonathan said, use the relation tools '=?' to evaluate the relations and see where they go.

TomU
23-Emerald IV
(To:BenLoosli)

Exactly.  The statement you copied from is only for values less than 0.05.  4.0 is going to be handled by the last 'else' statement.

tleati
12-Amethyst
(To:BenLoosli)

Hi Ben,

yes, the problem in fact was exactly on the logic, it grabs the second last line.

bye bye

MartinHanak
24-Ruby III
(To:tleati)

Tomasso,

I suggest you to change the structure of IF commands in relations to the following one.

if pro_mp_mass < 0.0005
   /* mass < 0.0005
else
   /* mass >= 0.0005
   if pro_mp_mass < 0.05
      /* mass >= 0.0005 AND mass < 0.05
   else
      /* mass >= 0.05
      if pro_mp_mass < 0.95
         /* mass >= 0.05 AND mass < 0.95
      else
         /* mass >= 0.95
         if pro_mp_mass < 1
            /* mass >= 0.95 AND mass < 1
         else
            /* mass >= 1
         endif
      endif
   endif
endif

Martin Hanak


Martin Hanák
tleati
12-Amethyst
(To:MartinHanak)

Hi Martin,

yes, it was missing the interval " 0,95 >   >=0,05 " (which I wrongly thought came in the "else" case) and I modified it by adding an if with it:

if pro_mp_mass<1 & pro_mp_mass >= 0.0005

       massa_disegno=itos(1000*pro_mp_mass) + " g"

else

       if pro_mp_mass-floor(pro_mp_mass) < 0.05

       massa_disegno=itos(floor(pro_mp_mass)) + ",0" + " kg"

       endif

       if pro_mp_mass-floor(pro_mp_mass) >= 0.95

       massa_disegno=itos(ceil(pro_mp_mass)) + ",0" + " kg"

       endif

       if pro_mp_mass-floor(pro_mp_mass) < 0.95 & pro_mp_mass-floor(pro_mp_mass) >= 0.05

       massa_disegno=itos(floor(pro_mp_mass)) + ","+ itos(10*(pro_mp_mass-floor(pro_mp_mass))) + " kg"

       endif

       if pro_mp_mass < 0.0005

       massa_disegno="< 1 g"

       endif

endif

and now comes out correctly...(didn't realize it conviced that was ok...better later than ever ).

bye bye

Announcements
Business Continuity with Creo: Learn more about it here.

Top Tags