본문 바로가기

흔한말 (collection)/Dynamo

Dynamo로 Revit 객체의 형상을 포함한 각종 정보들을 가져오기

300x250

Revit에서 작성된 BIM 객체들의 정보를 조회하고 조작하는 것은 Revit 안에서도 가능합니다.
하지만 작성된 정보들을 데이터베이스의 형태로 조작하고 변형하거나,
기존 데이터를 활용하여 새로운 데이터를 만들어내는 것은 아무래도 제한적일 수 밖에 없습니다.

이러한 상황에서 Dynamo는 다수의 Revit 객체가 포함한 다양한 데이터들을 효과적으로 컨트롤하는 수단이 되어줍니다.
프로그래밍이 모든 사용자의 니즈에 맞춰 기민하게 대응하기 어려운 만큼,
저는 Dynamo를 통해 커스터마이제이션에 대한 요구를 어느정도 해소해 주는 느낌으로 사용하고 있습니다.

그래서 그 가장 첫번재 단계로써, 작성된 부재들의 정보를 다이나모 안으로 당겨(?)오는 노드들의 기본 활용을 소개해 드리려고 합니다.

모델링 파일 실행

일단 다른 포스트에서 소개해 드렸던 레빗샘플파일 찾는 법을 통해 Revit으로 샘플 프로젝트 파일을 열어줍니다.

여러가지 기능으로 작성된 부재들이 모여서 주택을 형성한 샘플 프로젝트가 열립니다.

Dynamo 실행

그림과 같이 manage(관리)탭의 가장 우측에 있는 Visual Programming 그룹에서 Dynamo 버튼을 누르면 Dynamo 도 실행할 수 있습니다.
Revit 프로젝트와 Dynamo 는 1:1로 대응되어 실행되므로, 여러개의 프로젝트가 레빗 상에서 열려있게 되면 다이나모는 정상 작동하지 않습니다.

새 파일 열어서 노드 배치하기

카테고리별 객체 소환하기

레빗에서의 모든 객체는 특정 카테고리에 소속되게 됩니다. 따라서 다양한 부재들을 한꺼번에 소환하기 보다는,
카테고리 별로 분류해서 정보를 조회하도록 기본 노드가 구성되어 있습니다.
여기서는 "Walls" 카테고리를 대상으로 코딩을 진행하겠습니다.
상기 그림처럼 'Categories', 'All Elements of Category'의 2개 노드를 꺼내면 준비는 완료됩니다.

형상 가져오기

가장 직관적으로 확인할 수 있는 정보인 형상 정보를 불러와 보겠습니다.
좌측의 라이브러리 창에서 Revit>Elements>Element로 이동해 Element.Geometry 노드를 배치하면
Walls 에 해당하는 객체들의 형상을 즉각적으로 확인할 수 있습니다.

노드 위에 마우스 포인터를 올려 핀모양 버튼을 클릭하면, 리스트로 정렬된 정보들을 확인할 수 있습니다.

체적 가져오기

이번에는 각 벽체가 갖는 체적을 객체 별로 조회해 보도록 하겠습니다.
우리가 조회할 값은 Revit 상의 Property 창에서 보이는 "Volume"이라는 매개변수에 할당된 값입니다.

객체의 정보를 조회하는 노드의 이름은 Element.GetParameterValueByName 입니다.
이 노드는 (조회할 대상, 조회할 매개변수 명) 의 2가지 인자를 받아서 결과값을 리턴하는 함수입니다.
2번째 인자 값에는, 빈 공간에서 마우스를 더블클릭하여 생성된 코드블럭에 "Volume"이라고 입력한 뒤, 이 값을 대입해 주도록 하겠습니다.

그림과 같이 각 객체의 체적 값이 리스트로 정렬되어 반환된 것을 확인할 수 있습니다.

레벨 가져오기

마찬가지 방식으로 벽체가 위치한 레벨도 조회해 보겠습니다.
벽체의 위치는 "Base Constraint"라는 매개변수 명에 할당되어 있으므로,
GetParameterValueByName노드의 2번째 인자로 해당 String을 넣어주면 되겠습니다.

이번에는 각 벽체가 속해있는 레벨이 리스트의 형태로 도출된 것을 볼 수 있습니다.
여기서 반환된 'Level' 역시 Revit 객체로써, 다시 한번 GetParameterValueByName노드를 이용해서 레벨 이름과 레벨 높이 등을 추가로 조회할 수 있습니다.

반응형