Hello,

I’ve made this python script that converts values from specified units to desired units and it’s working as expected with the exception of the S output.

I would like this output to return the Sum of the R list results.

I realize this is a pretty basic question but I can’t figure it out or find a working example of how to achieve this. (Python newbie, sorry)

Thanks for your help & guidance!

Script:

```
V = float(V)
C = [C]
conversion_functions = {
"in_ft": lambda V: V / 12,
"ft_in": lambda V: V * 12,
"m_ft": lambda V: V / 0.3048,
"cm_ft": lambda V: V / 30.48,
"cm_in": lambda V: V / 2.54,
"mm_ft": lambda V: V / 0.0328084,
"ft_m": lambda V: V * 0.3048,
"ft_cm": lambda V: V * 30.48,
"ft_mm": lambda V: V * 304.8,
"in_m": lambda V: V * 0.0254,
"in_cm": lambda V: V * 2.54,
"in_mm": lambda V: V * 25.4,
}
Results = []
for i in C:
if i in conversion_functions:
R = conversion_functions[i](V)
Results.append(R)
print Results
else:
R = V
S = sum(Results)
```

Graph Space:

Well, you might want to check out the rhinoscriptsyntax built-in unit scaling methods:

`rs.UnitSystem()`

will get you the current file units, *and allow you to change them and scale the geometry or not.

https://developer.rhino3d.com/api/RhinoScriptSyntax/#document-UnitSystem

`rs.UnitScale()`

will give you the scale factor for converting between unit systems if you just need that.

https://developer.rhino3d.com/api/RhinoScriptSyntax/#document-UnitScale

Both work in the GH Python component… *but I’m not sure about actually changing the Rhino document unit setting.

2 Likes

So you need to set the input access to ‘List Access’:

```
functions = {
"in_ft": lambda V: V / 12,
"ft_in": lambda V: V * 12,
"m_ft": lambda V: V / 0.3048,
"cm_ft": lambda V: V / 30.48,
"cm_in": lambda V: V / 2.54,
"mm_ft": lambda V: V / 0.0328084,
"ft_m": lambda V: V * 0.3048,
"ft_cm": lambda V: V * 30.48,
"ft_mm": lambda V: V * 304.8,
"in_m": lambda V: V * 0.0254,
"in_cm": lambda V: V * 2.54,
"in_mm": lambda V: V * 25.4,
}
Results = []
for v, c in zip(V,C):
if c in functions:
Results.append(functions[c](v))
else:
Results.append(v)
R = Results
S = sum(Results)
```

Michael.gh (5.1 KB)

1 Like

Thanks @Mahdiyar,

However, I’m running across the same error as I was earlier when trying to summate the loop values.

Error:

Runtime error (TypeErrorException): float is not iterable

Traceback:

line 28, in script

Is this telling us that the variable needs to be a list and it is reading it as a single value?

I set the input to List Access but get the error regardless.

Thank you for your help!

Thanks @Helvetosaur,

Here’s what I came up with after your suggestion (I like how this is simplified from my previous example):

Graph Spaces:

Python:

```
import rhinoscriptsyntax as rs
F = int(F)
V = float(V)
CS = rs.UnitSystem()
SF = rs.UnitScale(CS,F)
print CS
print SF
R = SF*V
print R
```

Any tips for returning the R as the sum of the two values?

Thank you!

Alright I figured it out with many a chatGPT ring around the rosie.

Posting here in case anyone is interested:

```
import rhinoscriptsyntax as rs
CS = rs.UnitSystem()
SF = [rs.UnitScale(CS, f) for f in F]
# Scale each V value by the corresponding SF value
R = [sf * v for sf, v in zip(SF, V)]
S = sum(R)
```

Graph Space:

Thank you all for your help!!

Not to be *that guy*, but finding the `sum()`

function is a Google away:

Or more directly yet, search the Python docs:

1 Like

No for sure you are right! I was trying that but my issue was that I was trying to iterate over a float and couldn’t figure out how to make it work with a list.

So when I attempted sum and math.fsum at one point I kept getting the error about float not being iterable.

That was why I needed the loop logic and inputs to give list access.

I’m still trying to wrap my head around a lot of python basics and I appreciate the help and counter points. Thanks @AndersDeleuran

1 Like

Ah yes, sorry, I just returned to work after a long sick leave and think I was a bit triggered by the sudden ChatGPT idiocracy of it all. Apologies for the knee jerking and happy Pythoning

No worries at all! I mostly leverage ChatGPT to explain errors to me and ask it if there are ways to optimize the code or different approaches.

It certainly isn’t a google replacement and definitely doesn’t know how to create any complex code (yet) but for a newbie like me it’s been really helpful to have it generate syntax for me that I can learn from or asking it about options for different functions.

and thank you!

1 Like