사전은 키라고 하는 다른 데이터 부분과 연관된 데이터 모음을 나타냅니다. 사전은 데이터를 검색하고, 삭제하고, 모음에 삽입할 수 있는 기능을 제공합니다.
기본적으로 사전을 항목을 조회하는 매우 지능적인 방법으로 생각할 수 있습니다.
그동안 Dynamo에서 사전 기능을 사용할 수 있었지만, Dynamo 2.0에서는 이 데이터 유형을 관리하는 새로운 방법을 도입했습니다.
원본 이미지 출처: sixtysecondrevit.com
Revit에서 포함된 데이터의 일부를 사용해서 항목을 조회하려고 한 적이 있습니까?
다음 예와 같이 작업을 수행할 수 있습니다.
아래 이미지에서는 Revit 모델의 모든 룸을 수집하고, 원하는 룸의 색인(룸 번호 기준)을 가져오고, 마지막으로 색인의 룸을 가져오는 작업을 수행합니다.
모델의 모든 룸을 수집합니다.
찾을 룸 번호입니다.
룸 번호를 가져오고 해당 룸 번호가 있는 색인을 찾습니다.
색인에서 룸을 가져옵니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
이제 사전을 사용하여 이 아이디어를 다시 작성해 보겠습니다. 먼저 Revit 모델에서 모든 룸을 수집해야 합니다.
작업할 Revit 카테고리를 선택합니다(이 경우에는 룸 사용).
Dynamo에 모든 요소를 수집하도록 지시합니다.
다음에는 이 데이터를 조회하는 데 사용할 키를 결정해야 합니다. 키에 대한 정보는 사전이란 무엇입니까? 섹션에서 찾을 수 있습니다.
사용할 데이터는 룸 번호입니다.
이제 지정된 키 및 요소로 사전을 작성합니다.
적절한 입력이 주어지면 노드 Dictionary.ByKeysValues가 사전을 작성합니다.
Keys
는 문자열이어야 하지만,values
는 다양한 객체 유형일 수 있습니다.
마지막으로, 이제 룸 번호를 사용하여 사전에서 룸을 검색할 수 있습니다.
String
은 사전에서 객체를 조회하는 데 사용하는 키입니다.Dictionary.ValueAtKey가 이제 사전에서 객체를 가져옵니다.
동일한 사전 논리를 사용하여 그룹화된 객체로 사전을 작성할 수도 있습니다. 지정된 레벨에서 모든 룸을 조회하려면 다음과 같이 위 그래프를 수정하면 됩니다.
이제 룸 번호를 키로 사용하는 대신, 매개변수 값을 사용할 수 있습니다(이 경우에는 레벨 사용).
이제 룸이 있는 레벨을 기준으로 룸을 그룹화할 수 있습니다.
이제 요소가 레벨로 그룹화되므로 공유 키(고유 키)를 사전용 키로 사용하고 룸 리스트를 요소로 사용할 수 있습니다.
마지막으로 Revit 모델의 레벨을 사용하여 사전에서 해당 레벨에 있는 룸을 조회할 수 있습니다.
Dictionary.ValueAtKey
는 레벨 이름을 가져온 후 해당 레벨에서 룸 객체를 반환합니다.
사전을 사용할 수 있는 기회는 무궁무진합니다. Revit의 BIM 데이터를 요소 자체에 연결하는 기능은 다양한 사용 사례에 제시할 수 있습니다.
Dynamo 2.0에서는 사전 데이터 유형을 리스트 데이터 유형과 분리하는 개념을 도입했습니다. 이러한 변경으로 인해 워크플로우에서 데이터를 작성하고 사용하는 방법도 크게 달라질 수 있습니다. 2.0 이전에는 사전과 리스트가 데이터 유형으로 결합되어 있었습니다. 간단히 말해, 리스트는 실제로 정수 키가 있는 사전이었습니다.
사전은 각 키가 각 모음에서 고유한 키-값 쌍 집합으로 구성된 데이터 유형입니다. 사전에는 순서가 없으므로 기본적으로 리스트의 경우처럼 색인 값 대신, 키를 사용하여 "항목을 조회"할 수 있습니다. Dynamo 2.0에서 문자열만 키가 될 수 있습니다.
리스트는 정렬된 값의 모음으로 구성된 데이터 유형입니다. Dynamo에서 리스트는 정수를 색인 값으로 사용합니다.
리스트에서 사전을 분리하면서 사전이 일급 객체가 되었고, 사전을 사용하여 색인 값을 기억하거나 엄격한 리스트 구조를 유지할 필요 없이 전체 워크플로우에서 빠르고 쉽게 값을 저장하고 조회할 수 있게 되었습니다. 사용자 테스트를 통해 일부 GetItemAtIndex
노드 대신, 사전을 활용할 때 그래프 크기가 크게 감소된 것을 확인할 수 있었습니다.
구문 이 변경되었으며, 이로 인해 코드 블록에서 사전 및 리스트를 초기화하고 사용하는 방법도 달라졌습니다.
사전은 구문 {key:value}
를 사용합니다.
리스트는 구문 [value,value,value]
를 사용합니다.
사전을 작성, 수정 및 조회할 수 있도록 _새 노드_가 라이브러리에 추가되었습니다.
v1.x 코드 블록에서 작성된 리스트는 스크립트를 로드할 때 중괄호 { }
대신 대괄호 [ ]
를 사용하는 새 리스트 구문으로 자동으로 마이그레이션됩니다. \
컴퓨터 과학에서 리스트와 같은 사전은 객체 모음을 의미합니다. 리스트는 특정 순서로 나열되지만, 사전은 정렬되지 않은 모음입니다. 순차적인 번호(색인)를 사용하지 않고 대신 키를 사용합니다.
아래 이미지는 사전의 잠재적인 사용 사례를 보여줍니다. 사전은 직접적인 상관 관계가 없을 수도 있는 두 가지 데이터 조각을 연관 짓는 데 사용되는 경우가 많습니다. 여기에서는 나중에 조회할 수 있도록 스페인어 버전 단어를 영어 버전에 연결합니다.
두 가지 데이터 요소를 연결할 사전을 작성합니다.
지정된 키를 사용하여 값을 가져옵니다.
Dynamo 2.0에서는 사전에 대해 이전에 앞서 논의한 노드가 도입되어 있으며, 코드 블록에도 이에 대한 새 기능이 포함되어 있습니다.
아래와 같은 구문이나 노드의 DesignScript 기반 표현을 사용할 수 있습니다.
사전은 Dynamo의 객체 유형이므로 사전에서 다음 커밋을 수행할 수 있습니다.
이러한 종류의 상호작용을 유지하는 것은 Revit 데이터를 문자열에 연관 지을 때 특히 유용합니다. 다음으로, 몇 가지 Revit 사용 사례를 살펴보겠습니다.
Dynamo 2.0은 다양한 사전 노드를 제공하는데, 그러한 노드 중에는 create, action 및 query 노드가 있습니다.
1.Dictionary.ByKeysValues
는 제공된 값과 키를 사용해서 사전을 작성합니다. 항목 수는 가장 짧은 리스트 입력이 됩니다.
Dictionary.Components
는 입력 사전의 구성요소를 생성합니다. (create 노드의 역 작업입니다.)
Dictionary.RemoveKeys
는 입력 키가 제거된 새 사전 객체를 생성합니다.
Dictionary.SetValueAtKeys
는 입력 키와 값을 기준으로 새 사전을 생성하여 해당 키의 현재 값을 대치합니다.
Dictionary.ValueAtKey
는 입력 키의 값을 반환합니다.
Dictionary.Count
는 사전에 있는 키 값 쌍의 수를 알려줍니다.
Dictionary.Keys
는 현재 사전에 저장된 키를 반환합니다.
Dictionary.Values
는 현재 사전에 저장된 값을 반환합니다.
색인과 리스트로 작업하는 이전 방법 대신, 전반적으로 데이터를 사전과 연관 짓는 것이 유용한 대안이 될 수 있습니다.