In this weird format, how can I select a given x-coordinate at a certain indices (let’s say list 3) in python script?
It is easier to get points from the vertex first using nodes such as Deconstruct.Vertex and the OTTB node Vertex.PointGeometry and then filtering point values as @Alban_de_Chasteigner has demonstrated.
A bit of a hack way (just DSCore functions) in Python is to convert it to a string, process the characters, then float it back to a number for further use… though you could do the same thing with OOTB nodes, outside the python environment.
import clr
clr.AddReference('DSCoreNodes')
import DSCore
from DSCore import *
vtex = DSCore.List.Flatten(IN[0],1)
ind=IN[1]
strlist = []
dataX=[]
dataY=[]
dataZ=[]
for v in vtex:
strlist.append(v.ToString())
for s in strlist:
data=String.Split(s,"X = ","Y = ","Z = ",",","))")
dataX.append(DSCore.List.GetItemAtIndex(data,1))
dataY.append(DSCore.List.GetItemAtIndex(data,3))
dataZ.append(DSCore.List.GetItemAtIndex(data,5))
for x,y,z in zip(dataX,dataY,dataZ):
indx=DSCore.List.GetItemAtIndex(dataX,ind)
indy=DSCore.List.GetItemAtIndex(dataY,ind)
indz=DSCore.List.GetItemAtIndex(dataZ,ind)
OUT = float(indx),float(indy),float(indz)
3 Likes
Thanks so much! One thing I do have left is to list all X-values in a given list. How do I do this without selecting at a single indices in python script? Would I have do a while loop while using a counter?
Nvm I got it.