저는 파이썬에서 초보자이며 데이터 구조를 변환하는 것에 대해 Grasshopper에서 사용하기 위해 질문이 있습니다.메뚜기에서 파이썬으로 배열 목록을 변환합니다.
내 파이썬 코드의 출력물로서, 저는 세대 (generations)라고 불리는 것에 큐브 (GUID 's) 격자를 가지고 있습니다. 그 외에도 각 큐브에서 얻을 수있는 색에 대한 정보가 들어있는 데이터 표를 출력합니다.
예 : i = 3 인 j = 5, 세대 = 5에서 큐브가 있습니다. 다른 목록에서, i = 3에서 j = 5, 세대 = 5에서 문자열로 '녹색'을가집니다. 메뚜기에서이 '녹색'값을 견본과 연결 한 다음 오른쪽 큐브에 색상을 지정하고 싶습니다.
Grasshopper가 나무에서 작동하는 동안 문제는 파이썬이 3 차원 배열을 출력한다는 것입니다. 따라서 출력을 트리 구조로 변환해야합니다. 트리 구조는 첫 번째 수준이 '생성'이고 두 번째 수준이 'i'이고 세 번째 수준이 'j'입니다.
친구가 나에게이 코드 조각을 보내, 그래서 그 시작하는 방법을 추측 :
수입 CLR clr.AddReference ("메뚜기") 을 Grasshopper.Kernel.Data 가져 오기 GH_Path 에서 메뚜기 수입에서 DataTree
여러분 모두 도와주세요.
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입니다 : 테사
는이 내 mainfunction입니다
def render(arrValues, z):
rs.EnableRedraw(False)
arrMeshes = []
for i in range(len(arrValues)):
arrRow = []
for j in range(len(arrValues[i])):
box = addMeshBox([(i-0.5),(len(arrValues[i])-j-0.5),z-0.5], [(i+0.5),(len(arrValues[i])-j+0.5),z+0.5])
arrRow.append(box)
arrMeshes.append(arrRow)
rs.EnableRedraw(True)
return arrMeshes
그리고 이것은 colorfunction입니다 :
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.List'의 목록을 제공합니다
는 결국, 이것은 무엇 메뚜기에 내가 출력합니다.
당신이 의미하는 바가 분명하지 않습니다. * 파이썬 코드의 출력물로서, 저는 세대 (generations)라고 불리는 것에 큐브 (GUID)의 그리드가 있습니다. 그 외에도 각 큐브에서 얻을 수있는 색에 대한 정보가 들어있는 데이터 표를 출력합니다. * 또는 다음 두 단락에서 의미하는 바를 말합니다.변환하려는 예제 데이터를 추가 한 경우 (수동으로 인공 예제를 입력 할 수 있음) 우리가 작업 할 수있는 Python 코드는 누구나 답변을 시도하는 데 도움이됩니다. – YXD
답변 해 주셔서 감사합니다! 나는이 코드를 추가했다. 더 필요하면 말해줘! – user2115063