top of page
  • 作家相片Yimin Chen

Grasshopper 幾種調整資料結構的方法

因為昨天在fb grasshopper 資訊交流站 回答了一個問題,剛好也有幾個網友提供不同的方法,因此把它整理成一篇文章,提供給更多人未來在學習Grasshopper可以參考。


原始問題:


原始問題
原始問題

解法1:

我自己提供的解法,但應該算是最麻煩的解法,是利用Path Mapper,這個節點沒看說明真的不會用,我第一次找教學的時候也是看得一知半解,但後面發現它的彈性比較大,可以解決更複雜的結構調整。


利用path mapper分群組
利用path mapper分群組


解法邏輯很簡單,先將原本三個集合{A1, A2, A3}, {B1, B2, B3}, {C1, C2, C3}接在一起變成一個大的List {A1, A2, A3, B1, B2, B3, C1, C2, C3},接著來調整List的順序

接著我們透過一個Path Mapper的物件,左鍵點兩下後開啟編輯視窗,輸入

{A}(i) -> {i%3}

此輸入法的意思是,我們把原本在List A中編號0到編號8的總共9個物件重新群組,我們利用i%3,也就是找出i除以3之後的餘數來分類,餘數為0的A1, B1, C1會掉到第一組裡,餘數為1的A2, B2, C2會跑到第二組,其餘依此類推即可完成簡單的分類。

關於Path Mapper的詳細用法可參考下圖,不是我自己製作的圖,因此是英文的,原圖出處我已經忘記從哪找到的,大家可以參考看看。


path mapper用法範例
path mapper用法範例

解法2:

利用Graft與Merge,此法是我認為最簡單的作法,請參考下圖。


透過Graft與Merge重新排序
透過Graft與Merge重新排序

剛看到這個問題的時候腦中馬上就浮現這個做法,不過有人更快回答了(感謝 陳志源Chun-Chan Chien 這兩位朋友的示範),所以當時我是提供path mapper這個額外的解法。


此解法的概念很簡單,但不好說明,先透過Graft將三組資料結構各多分為3組資料,因此目前的資料結構從3X3變成3X3X1組資料,接著利用Merge把同樣資料結構的物件放在一起,因此就可以得到我們想要的樣子。


解法3

利用Weave,這個節點在此之前我一直不清楚怎麼用,感謝Chen Ching-Hsin的示範,我們先上圖


利用Weave給定排序的規則
利用Weave給定排序的規則

上圖上方的解法就是本題的解法,簡單的說我們給定0, 1, 2這個規則,因此它會照這個順序先從編號0的List取一個值,再去1的List取值...依此類推,依照這個規則不斷取值直到結束。


下方則是提供更複雜的排序方法,我們給定0, 1, 2, 2, 1, 0,讓它取值所以它會依照A->B->C->C->B->A的順序來取值,因此最後的結果就是{A1, B1, C1, C2, B2, A2, A3, B3, C3}。

434 次查看0 則留言
bottom of page