Dynamo에서 대규모 데이터 세트로 효율적으로 작업
이 페이지에서는 Dynamo에서 대규모 데이터 세트로 효율적으로 작업하기 위한 몇 가지 경험 법칙을 소개합니다. 다음 팁을 사용하여 그래프에서 발생하는 병목 현상을 파악하면 그래프 실행 시간을 몇 시간이 아닌 몇 분으로 단축할 수 있습니다.
목차:
형상 생성과 테셀레이션
메모리 사용
Revit API
형상 생성과 테셀레이션
Dynamo에서 형상을 작성하는 것과 그리는 것은 완전히 다른 두 가지 이벤트입니다. 일반적으로 형상 작성이 객체 그리기보다 훨씬 빠르고 메모리를 적게 사용합니다. 형상이 정장을 만들기 위한 측정값 리스트라면 테셀레이션은 정장 자체입니다. 팔의 길이, 비용 등과 같은 측정값을 보면 정장에 대해 많은 것을 알 수 있지만 항상 거의 그렇듯이 완성된 정장을 보고 입어봐야 잘 맞는지 알 수 있습니다. 마찬가지로 다듬지 않은 형상이 있으면 경계 상자, 면적 및 체적을 확인하고 다른 형상과 교차하며 SAT 또는 Revit으로 내보낼 수 있습니다. 그러나 거의 항상 형상을 다듬어야 제대로 맞출 수 있습니다.
Dynamo 그래프에 객체가 많아 실행 중에 느려지는 경우 그래프에서 테셀레이션 단계를 제거하여 속도를 높일 수 있습니다.
Dynamo의 형상 노드는 항상 다듬어집니다*. 따라서 다듬지 않은 형상으로 작업할 수 있는 두 가지 옵션(Python 노드 및 ZeroTouch 노드)이 있습니다. Python 또는 ZeroTouch 노드에서 형상 객체를 반환하지 않는 한 형상은 다듬어지지 않습니다. 예를 들어, 그래프에 여러 선 노드, 여러 로프트 노드, 두껍게 하기 노드에 연결된 점 노드가 여러 개 있으면 형상이 각 단계에서 다듬어집니다. 대신 이 논리를 Python 또는 ZeroTouch 노드에 번들로 묶고 노드에서 최종 객체만 반환하도록 할 수 있습니다.
ZeroTouch 노드 사용에 대한 자세한 내용은 이 입문서의 Dynamo를 위한 개발 섹션에서 확인할 수 있습니다.
메모리 사용
형상을 더 이상 다듬지 않으면 형상이 과도하게 누적되어 메모리 병목 현상이 발생할 수 있습니다. Dynamo의 형상 객체는 작성할 때 사소하지만 적지 않은 양의 메모리를 사용합니다. 작업하는 객체 수가 수십만 또는 수백만 개가 되면 메모리 사용량이 누적되어 Dynamo 또는 Revit이 비정상적으로 종료될 수 있습니다. Dynamo 버전 2.5 이상에서는 사용되지 않는 객체를 제거하여 이러한 문제가 드러나지 않게 처리되지만, 2.5 이전 버전에서 많은 형상을 작성하지 않도록 방지하는 한 가지 방법은 객체 작업이 완료된 후 객체를 제거하는 것입니다. 예를 들어 각각 수십 개의 점이 필요한 NurbsCurve를 수십만 개 작성한다고 가정해 보겠습니다. 이렇게 할 수 있는 한 가지 방법은 Dynamo에서 2차원 리스트를 작성하여 NurbsCurve.ByPoints 노드에 제공하는 것입니다. 하지만 이렇게 하려면 수백만 개의 점을 작성해야 합니다. 또 다른 방법은 Python 또는 ZeroTouch 노드를 사용하는 것입니다. 이 노드에서 십여 개의 점을 작성하여 NurbsCurve.ByPoints에 제공한 다음 Dispose() 메서드를 호출하여 십여 개의 점을 제거할 수 있습니다. ZeroTouch 노드 사용에 대한 자세한 내용은 이 입문서의 Dynamo를 위한 개발 섹션에서 확인할 수 있습니다. 형상 객체를 작성한 후 제거하면 특정 상황에서 메모리 사용량을 크게 줄일 수 있습니다. Dynamo 2.5 이상을 사용하는 경우 이를 자동으로 처리하지만, 사용 사례에서 결정적인 순간에 메모리를 줄여야 하는 경우에는 사용자가 형상을 확실하게 제거하는 것이 좋습니다. Dynamo 2.5에 추가된 새로운 안정성 기능에 대한 자세한 내용은 Dynamo 형상 안정성 개선 사항을 참조하십시오.
Revit API
ZeroTouch 또는 Python 노드에서 객체를 적극적으로 삭제하고 있지만 여전히 메모리 또는 성능 문제가 발생하면 Dynamo를 완전히 우회하고 API를 통해 직접 Revit 객체를 작성해야 할 수 있습니다. 예를 들어, 점 정보에 대한 Excel 파일을 구문 분석하고 이 정보를 사용하여 API를 통해 XYZ 및 기타 Revit 요소를 작성할 수 있습니다. 이 시점에서 Revit은 피할 수 없는 궁극적인 병목 지점이 됩니다.
Last updated