The other
day I was looking to round the value of a parameter. I was actually
calculating distance from the floor to the top of a flange on a conical
tank and the value came with billion digit precision. It's nice to
have it but it doesn't look professional when dimensionsing or
measuring from it.
Couple of
words on rounding parameters and using functions:
Functions
The
following are the supported functions as presented in the Autodesk
Inventor help page.
Syntax
|
Returns
Unit Type
|
Expected
Unit Type
|
cos(expr)
|
unitless
|
angle
|
sin(expr)
|
unitless
|
angle
|
tan(expr)
|
unitless
|
angle
|
acos(expr)
|
angle
|
unitless
|
asin(expr)
|
angle
|
unitless
|
atan(expr)
|
angle
|
unitless
|
cosh(expr)
|
unitless
|
angle
|
tanh(expr)
|
unitless
|
angle
|
acosh(expr)
|
angle
|
unitless
|
asinh(expr)
|
angle
|
unitless
|
sqrt(expr)
|
unit^1/2
|
any
|
sign(expr)
|
unitless
|
any
(Return 0 if negative, 1 if positive.)
|
exp(expr)
|
unitless
|
any
(Return exponential power of expression: for example, return 2
for 100, 3 for 1000, and so on.)
|
floor(expr)
|
unitless
|
unitless
(Next lowest whole number.)
|
ceil(expr)
|
unitless
|
unitless
(Next highest whole number.)
|
round(expr)
|
unitless
|
unitless
(Closest whole number.)
|
abs(expr)
|
any
|
any
|
max(expr1;expr2)
|
any
|
any
|
min(expr1;expr2)
|
any
|
any
|
ln(expr)
|
unitless
|
unitless
|
log(expr)
|
unitless
|
unitless
|
pow(expr1;expr2)
|
unit^expr2
|
any
and unitless, respectively
|
random(expr)
|
unitless
|
unitless
|
isolate(expr;unit;unit)
|
any
|
any
|
The
last one isolate is used to change from one unit to another and this
if usefull if you need to calculate the number of holes (of type
unitles ul) by dividing a linear dimension (of unit mm) by another
linear dimension (of unit mm). The normal result will be of type mm
and you need to convert it to unitless ul like this:
isolate((total_length
/ hole_dist); mm; ul)
Now
I was looking to round the result of an equation to an integer but
the result was surprising.
Round 1497.21 = 1500 ?!?
Ceil 1497.21 = 1500 ?!?
Floor 1497.21 = 1490 ?!?
Round 1497.00 = 1500 ?!?
Ceil 1497.00 = 1500 ?!?
Floor 1497.00 = 1490 ?!?
Round 1497.51 = 1500 ?!?
Ceil 1497.51 = 1500 ?!?
Floor 1497.51 = 1490 ?!?
So in order to get a proper rounding you need to multiply it first by a multiple of 10, then do the operation and divide again by the same 10 multiple.
Round (1497.21 * 10) /10 = 1497
Ceil (1497.21 * 10) / 10 = 1498
Floor (1497.21 * 10) / 10 = 1497
Round (1497.00 * 10) /10 = 1497
Ceil (1497.00 * 10) / 10 = 1498
Floor (1497.00 * 10) / 10 = 1497
Round (1497.51 * 10) /10 = 1498
Ceil (1497.51 * 10) / 10 = 1498
Floor (1497.51 * 10) / 10 = 1497
I am missing something and it's got to do with the unit conversion for sure, but for now this will do.
ADS
No comments:
Post a Comment