Skip to content

Commit 0e91325

Browse files
committed
WIP-ADD update vizualization based on valuetype
1 parent 031428f commit 0e91325

File tree

3 files changed

+173
-54
lines changed

3 files changed

+173
-54
lines changed

src/gh/components/DF_vizualization/code.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,51 @@ def RunScript(self,
2323
sth sth
2424
"""
2525

26+
27+
2628
distances_flattened = [item for sublist in i_results.distances for item in sublist]
2729

2830
if i_viz_settings.lower_threshold is not None:
2931
min_value = i_viz_settings.lower_threshold
3032
else:
31-
min_value = min(min(sublist) for sublist in i_results.distances)
33+
# filter min,max value based on type
34+
if i_viz_settings.valueType == "Dist":
35+
min_value = min(min(sublist) for sublist in i_results.distances)
36+
elif i_viz_settings.valueType == "MSE":
37+
min_value = min(i_results.distances_mse)
3238

3339
if i_viz_settings.upper_threshold is not None:
3440
max_value = i_viz_settings.upper_threshold
3541
else:
36-
max_value = max(max(sublist) for sublist in i_results.distances)
42+
if i_viz_settings.valueType == "Dist":
43+
max_value = max(max(sublist) for sublist in i_results.distances)
44+
elif i_viz_settings.valueType == "MSE":
45+
max_value = max(i_results.distances_mse)
3746

3847
# check if i_results.source is a list of pointclouds or a mesh
3948
if type(i_results.source[0]) is diffcheck_bindings.dfb_geometry.DFPointCloud:
4049

4150
# convert to Rhino PCD
4251
o_source = [df_cvt_bindings.cvt_dfcloud_2_rhcloud(src) for src in i_results.source]
4352

53+
4454
# color geometry
45-
o_colored_geo = [df_vizualization.color_pcd(src, dist, min_value, max_value, i_viz_settings.palette) for src, dist in zip(o_source, i_results.distances)]
55+
if i_viz_settings.valueType == "Dist":
56+
o_colored_geo = [df_vizualization.color_pcd(src, dist, min_value, max_value, i_viz_settings) for src, dist in zip(o_source, i_results.distances)]
57+
elif i_viz_settings.valueType == "MSE":
58+
o_colored_geo = [df_vizualization.color_pcd(src, [dist], min_value, max_value, i_viz_settings) for src, dist in zip(o_source, i_results.distances_mse)]
4659

4760
elif type(i_results.source[0]) is rg.Mesh:
4861
# convert to Rhino Mesh
4962
o_source = i_results.source
5063

5164
# color geometry
52-
o_colored_geo = [df_vizualization.color_mesh(src, dist, min_value, max_value, i_viz_settings.palette) for src, dist in zip(o_source, i_results.distances)]
65+
if i_viz_settings.valueType == "Dist":
66+
o_colored_geo = [df_vizualization.color_mesh(src, dist, min_value, max_value, i_viz_settings) for src, dist in zip(o_source, i_results.distances)]
67+
elif i_viz_settings.valueType == "MSE":
68+
o_colored_geo = [df_vizualization.color_mesh(src, [dist], min_value, max_value, i_viz_settings) for src, dist in zip(o_source, i_results.distances_mse)]
5369

54-
o_legend = df_vizualization.create_legend(min_value, max_value, i_viz_settings.palette)
70+
o_legend = df_vizualization.create_legend(min_value, max_value, i_viz_settings)
5571

5672
o_histogram = df_vizualization.create_histogram(distances_flattened, min_value, max_value)
5773

src/gh/diffCheck/diffCheck/df_vizualization.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def interpolate_color(color1, color2, t):
7070
return Color.FromArgb(r, g, b)
7171

7272

73-
def value_to_color(value, min_value, max_value, palette):
73+
def value_to_color(value, min_value, max_value, settings):
7474
"""Map a value to a color based on a spectral colormap."""
7575

7676
if value < min_value:
@@ -79,7 +79,7 @@ def value_to_color(value, min_value, max_value, palette):
7979
value = max_value
8080

8181
# Define the spectral colormap (simplified)
82-
colormap = palette.colors
82+
colormap = settings.palette.colors
8383

8484
# Normalize the value within the range
8585
if min_value == max_value:
@@ -101,25 +101,32 @@ def value_to_color(value, min_value, max_value, palette):
101101
return interpolate_color(color1, color2, t)
102102

103103

104-
def color_pcd(pcd, values, min_value, max_value, palette):
104+
def color_pcd(pcd, values, min_value, max_value, settings):
105105

106106
for i, p in enumerate(pcd):
107-
mapped_color = value_to_color(values[i], min_value, max_value, palette)
107+
if len(values) > 1:
108+
mapped_color = value_to_color(values[i], min_value, max_value, settings)
109+
else:
110+
mapped_color = value_to_color(values[0], min_value, max_value, settings)
111+
108112
p.Color = mapped_color
109113
return pcd
110114

111115

112-
def color_mesh(mesh, values, min_value, max_value, palette):
116+
def color_mesh(mesh, values, min_value, max_value, settings):
113117
mesh.VertexColors.Clear()
114118
for i, vertex in enumerate(mesh.Vertices):
115-
116-
mapped_color = value_to_color(values[i], min_value, max_value, palette)
119+
# check the settings.
120+
if len(values) > 1:
121+
mapped_color = value_to_color(values[i], min_value, max_value, settings)
122+
else:
123+
mapped_color = value_to_color(values[i], min_value, max_value, settings)
117124
mesh.VertexColors.Add(mapped_color.R, mapped_color.G, mapped_color.B)
118125

119126
return mesh
120127

121128

122-
def create_legend(min_value, max_value, palette, steps=10, base_point=rg.Point3d(0, 0, 0),
129+
def create_legend(min_value, max_value, settings, steps=10, base_point=rg.Point3d(0, 0, 0),
123130
width=0.5, height=1, spacing=0):
124131
"""
125132
Create a legend in Rhino with colored hatches and text labels.
@@ -140,7 +147,7 @@ def create_legend(min_value, max_value, palette, steps=10, base_point=rg.Point3d
140147
for i in range(steps+1):
141148

142149
value = min_value + (max_value - min_value) * i / steps
143-
color = value_to_color(value, min_value, max_value, palette)
150+
color = value_to_color(value, min_value, max_value, settings)
144151

145152
if i > 0:
146153
mesh = rg.Mesh()

0 commit comments

Comments
 (0)