Mở đầu

Bài viết hôm nay sẽ tổng hợp những gì liên quan đến Flatten.Node được sử dụng rất phổ biến trong Dynamo giúp bạn duỗi danh sách ra để làm việc.

Sử dụng Node

FlattentDynamo1

Dùng CodeBlock

FlattenCodeBlock

Viết Script tùy chỉnh

Ở đây mình sẽ giới thiệu hai phương pháp, một với dựng lại và một với tận dụng thư viện đã có sẵn(DSCoreNodes).

# Load the Python Standard and DesignScript Libraries
import sys
import clr
clr.AddReference('DSCoreNodes')
from DSCore.List import Flatten
OUT = Flatten(IN[0])
view raw FlattenDSCore.py hosted with ❤ by GitHub
import collections
def flattenList(unflattened_list):
if isinstance(unflattened_list,collections.Iterable):
return [sub_element for element in unflattened_list for sub_element in flattenList(element)]
else:
return [unflattened_list]
OUT = flattenList(IN[0])
view raw flattenList.py hosted with ❤ by GitHub
# The inputs to this node will be stored as a list in the IN variables.
def flatten(x):
result = []
try:
for el in x:
if hasattr(el, "__iter__") and not isinstance(el, basestring):
result.extend(flatten(el))
else:
result.append(el)
except:
result = x
return result
OUT = flatten(IN[0])
view raw FlattenPython.py hosted with ❤ by GitHub

FlattentDynamo

Tổng kết

Các kết quả trên đều cho ra cùng một kết quả giống nhau, như vậy mình sẽ có cái nhìn tổng thể và bao quát hơn thông qua 4 cách viết này.Hi vọng sẽ bổ sung kiến thức cho bạn về vấn đề này.Chúc các bạn có một ngày làm việc vui vẻ.