Hi all,
I am looking for someone to help as I am facing some problem while scripting something using For loop in GH-Python.
The desired output is a list of values.
All the steps are written in the file that is attached herewith. A screenshot is also attached here.
Waiting for the valuable replies.
Thank you
Problem.gh (8.4 KB)
Two things from a quick look:
- Your white space/indentation is all over the place.
- You should set appropriate Access and Type Hints on your inputs.
Sorry but I did not get your first point. Can you explain a it a bit more?
, never mind.
Usually when you copy/paste pieces of code your indentation goes haywire.
https://docs.python.org/2.0/ref/indentation.html
1 Like
But I tried to write it by myself and it is not working. May be it is too difficult to understand.
I am not at my PC, but usually if the indentation is wrong you would get an error. From the screenshot it is not visible. Have you tried to flatten the output? Currently you are getting a data tree. If you want a list, like you stated in the original post, then perhaps you must flatten the output.
Flatten the output is not giving the output either 
Specifically, distance
is not a list, hence your E
only ever holds one item, and you never start your first loop. Made some highlights here:
I have simplified things in GH-Python file now. May this will help understanding it.Problem.gh (8.8 KB)
The float command is not working with âList Accessâ so as the entire code. What to do next?
There is a lot of strange things going on here (like the break
calls). But basically you need to understand the type of data you are inputting. If you set your distance
input to List Access and your Type Hint to float
, it will be a Python list of floats. So you could do something like this (note that your indentation still has a space too many):
I am new to GH and Python that is why I am lacking in the understandings.
I have managed to split the code into different steps, but I still need to combine it in one file. See if you can still help. Please.
Problem.gh (12.9 KB)
Hi Zohaibneduet
You can do thisïŒ
import rhinoscriptsyntax as rs
import math as ma
E = []
list1 = []
list2 = []
list3 = []
for i in xrange(len(x)):
Area = ma.pi* ma.pow(R,2)
num = Area * float(x[i])
E.append(num)
pt1 = float(num)
if(i<(len(x)-1)):
pt2 = float(Area * float(x[i+1]))
print pt2
dE = (pt2)-(pt1)
list1.append(dE)
alpha = dE - x[i]
list2.append(alpha)
Final_E= alpha * num
list3.append(Final_E)
a = E
b = list1
c = list2
d = list3
You canât use the âPanelâ component input, which will cause errors.
my gh fileïŒ
Problem (1).gh (14.4 KB)
2 Likes
@603419608 Thanks a lot! Your Code is working fine. But I need to output only one list i.e âdâ in this case, but when I am applying âifâ loop in the beginning then it is not displaying the output list in panel.
I have attached my file herewith. Can you please guide a little more?
Thanks once again.
My file: Problem_With_loop.gh (9.4 KB)
Hi Zohaibneduet
âValue Listâ component output null.
my gh file:
Problem_With_loop.gh (12.5 KB)
1 Like
Thanks a lot @603419608 it is working, but canât we do it by using if loop in the script, without using the panel as output with value list?
Just like it was done in some previous work of mine.
screen shot:
Value_list used in previous work is :
@603419608 Aha! Thanks a lot for your valuable guidance man! Your code really worked!
I found my basic mistake, it was just âCircularâ instead of âCircularâ when providing to Value_list.
Thanks a lot again 