'List[object]' object has no attribute 'X'

revit
dynamo
closestpoint

#1

Hello friends, I’m trying to access the list of X-Coordinate value from the list of Points in python script. But when I run the script it shows the following error. Would appreciate if could share their experience opinion. Thank you


#2

Your input is an entire list and a list does not have a .X attribute. You’ll need to iterate over the list in your python script and then use .X on every item in your list.

listout = []
for point in StartPoints:
	listout.append(point.X)
#Assign your output to the OUT variable.
OUT = listout

#3

Thanks @T_Pover. I was wondering what’s wrong with my following code. Why it is not giving me the correct output.

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
#The inputs to this node will be stored as a list in the IN variables.
StartPoints = UnwrapElement(IN[0]) #List of start points of each line
EndPoints = UnwrapElement(IN[1]) #List of end points of each line

NewStartPoints = []
NewEndPoints = []

#Assign your output to the OUT variable.

for i in range(len(StartPoints)):
	for j in range(len(EndPoints)):
		if ((StartPoints[i].Y) == (EndPoints[j].Y)): #This code is not working, WHY?
			NewStartPoints.append(StartPoints[i])
			NewEndPoints.append(EndPoints[j])
		

OUT = NewStartPoints, NewEndPoints


#4

That;s because the Y values are inaccurate due to rounding issues, you will have to check if their values are almost equal.


#5

Yes, I thought that so. I was thinking there might be some work around for it. Anyway what I did was cast the values to integer than compare it. After that it was working. Thank you for your help. Appreciate it : -)
if (int(StartPoints[i].Y) == int(EndPoints[j].Y)):