@@ -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