我是Python的初学者,有一个关于转换数据结构的问题,因为在Grasshopper中使用它。
作为python代码的输出,我有一个立方体网格(GUID),在我称之为“代”的层中进行分层。除此之外,它输出一个数据网格,其中包含每个立方体应该获得什么颜色的信息。
例如:对于i=3中的j=5,在generation=5中,我有一个立方体。在另一个列表中,对于i=3中的j=5,在generation=5中,我将'green'作为一个字符串。在grasshopper中,我想将这个“绿色”值链接到一个样例,然后用它给正确的立方体上色。
问题是Python输出一个三维数组,而Grasshopper在树上工作。所以,我必须把我的输出转换成树状结构,其中第一级是“代”,第二级是“I”,第三级是“j”。
一个朋友给我发了这段代码,我想这就是开始的方法:
导入clr clr.AddReference(“蚱蜢”) 从Grasshopper.Kernel.Data导入GH_路径 从蚱蜢导入数据树
希望你们能帮忙! 泰莎
这是我的主要职能:
def Main():
intLength = input1
intWidth = input2
intGen = input3
arrValues = randomizeArray01(intLength,intWidth)
arrDensity = densityfunction(arrValues)
arrMeshes = render(arrValues,-1)
for k in range(intGen):
arrValues = applyGOL(arrValues,arrDensity)
arrDensity = densityfunction(arrValues)
genC = colorObject(arrValues)
colorList.append(genC)
genR = render(arrValues,k)
renderList.append(genR)
其中这是renderfunction:
^{pr2}$这是颜色函数:
def colorObject(arrValues):
arrColor = []
for i in range(len(arrValues)):
rowColor= []
for j in range(len(arrValues[i])):
if arrValues[i][j] == 0:
color = green
rowColor.append(color)
elif arrValues[i][j] ==1:
color = residential
rowColor.append(color)
elif arrValues[i][j] ==100:
color = retail
rowColor.append(color)
elif arrValues[i][j] ==1000:
color = road
rowColor.append(color)
arrColor.append(rowColor)
return arrColor
最后,这是我输出给蚱蜢的:
a = renderList
b = colorList
在蚱蜢里,这给了我一个Iron.Python.Runtime.运行时“列表”。
我手上没有一个工作版本的grasshopper,但我的代码是:
这个here的要点还有一个将树转换为列表的函数。在
这仍然有很多错误,没有递归,没有错误检查,没有分支魔术,但它在大多数情况下都能起作用。我很乐意看到它得到改进!在
在您的例子中,您可以通过管道将输出提供给您一个运行时列表到
raggedListToDataTree
函数中。在相关问题 更多 >
编程相关推荐