본문으로 건너뛰기

CreateHeatmap

public HeatmapResult CreateHeatmap(List<Node> nodes, Func<Vertex3D, double> scalar, string category)

개체 메시의 정점마다 값을 계산해 색으로 칠한 히트맵 형상을 만듭니다. 원본 개체는 바꾸지 않습니다.

Remarks​

메시 조회는 UI 스레드에서만 동작하므로 이 메서드도 UI 스레드에서 호출합니다. 메시 노드는 최대 4,096개까지만 칠하며 그 뒤는 보지 않습니다.
히트맵을 끄려면 같은 분류의 형상을 삭제하면 됩니다 — 원본 색을 따로 보관하거나 되돌릴 필요가 없습니다.
원본이 히트맵과 겹쳐 보이면 원본 개체를 숨기고 형상만 남깁니다.

Parameters​

NameTypeDescription
nodesList<Node>개체 List — 어셈블리를 넘기면 하위 메시 노드 전체를 칠합니다.
scalarFunc<Vertex3D, double>정점 좌표(mm)를 받아 값을 돌려주는 함수 — 값이 작으면 파랑, 크면 빨강으로 칠해집니다.
categorystring생성된 형상에 붙일 분류 — Delete 로 한 번에 지울 때 사용합니다.

Returns​

TypeDescription
HeatmapResult생성된 형상 목록과 색 범위(최소/최대). 메시 노드가 4,096개를 넘어 일부만 칠해졌으면 Truncated 가 true. 실패하면 빈 결과를 반환하고 사유는 LastOperationStatus 에 남습니다.

Examples​

// VIZCore3DX.NET Control
private VIZCore3DX.NET.VIZCore3DXControl vizcore3dx;

private void ShowHeightHeatmap()
{
List<Data.Node> nodes = vizcore3dx.Object3D.FromFilter(Object3dFilter.SELECTED_TOP);
if (nodes.Count == 0) return;

// 높이(Z)에 따라 색을 칠하고, 원본은 숨겨 히트맵만 보이게 한다
Data.HeatmapResult heatmap = vizcore3dx.Shape.CreateHeatmap(nodes, v => v.Z, "HEIGHT_HEATMAP");
if (heatmap.Shapes.Count == 0) return;

vizcore3dx.Object3D.Show(nodes, false);
System.Diagnostics.Debug.WriteLine($"Z range : {heatmap.Minimum:F1} ~ {heatmap.Maximum:F1} mm");
}

private void HideHeightHeatmap()
{
vizcore3dx.Shape.Delete("HEIGHT_HEATMAP");
vizcore3dx.Object3D.Show(vizcore3dx.Object3D.FromFilter(Object3dFilter.SELECTED_TOP), true);
}