55
66import Rhino .Geometry as rg
77from System .Drawing import Color
8-
8+ from diffCheck import df_vizualization
99
1010class DFVizSettings :
1111 """
@@ -18,8 +18,40 @@ def __init__(self, valueType, upper_threshold, lower_threshold, palette):
1818
1919 self .upper_threshold = upper_threshold
2020 self .lower_threshold = lower_threshold
21- self .palette = palette
21+ self .palette = df_vizualization .DFColorMap (palette )
22+
23+
24+ class DFColorMap :
25+ """
26+ This class compiles the settings for the vizualization into one object
27+ """
2228
29+ def __init__ (self , name ):
30+ self .names = name
31+ if name == "Jet" :
32+ self .colors = [
33+ Color .FromArgb (0 , 0 , 255 ), # Blue
34+ Color .FromArgb (0 , 255 , 255 ), # Cyan
35+ Color .FromArgb (0 , 255 , 0 ), # Green
36+ Color .FromArgb (255 , 255 , 0 ), # Yellow
37+ Color .FromArgb (255 , 0 , 0 ), # Red
38+ ]
39+ elif name == "Rainbow" :
40+ self .colors = [
41+ Color .FromArgb (127 , 0 , 255 ),
42+ Color .FromArgb (0 , 180 , 235 ),
43+ Color .FromArgb (128 , 254 , 179 ),
44+ Color .FromArgb (255 , 178 , 96 ),
45+ Color .FromArgb (125 , 3 , 254 )
46+ ]
47+ elif name == "RdPu" :
48+ self .colors = [
49+ Color .FromArgb (254 , 246 , 242 ),
50+ Color .FromArgb (251 , 196 , 191 ),
51+ Color .FromArgb (246 , 103 , 160 ),
52+ Color .FromArgb (172 , 1 , 125 ),
53+ Color .FromArgb (254 , 246 , 242 )
54+ ]
2355
2456def interpolate_color (color1 , color2 , t ):
2557 """Interpolate between two colors."""
@@ -30,7 +62,7 @@ def interpolate_color(color1, color2, t):
3062 return Color .FromArgb (r , g , b )
3163
3264
33- def value_to_color (value , min_value , max_value ):
65+ def value_to_color (value , min_value , max_value , palette ):
3466 """Map a value to a color based on a spectral colormap."""
3567
3668 if value < min_value :
@@ -39,13 +71,7 @@ def value_to_color(value, min_value, max_value):
3971 value = max_value
4072
4173 # Define the spectral colormap (simplified)
42- colormap = [
43- Color .FromArgb (0 , 0 , 255 ), # Blue
44- Color .FromArgb (0 , 255 , 255 ), # Cyan
45- Color .FromArgb (0 , 255 , 0 ), # Green
46- Color .FromArgb (255 , 255 , 0 ), # Yellow
47- Color .FromArgb (255 , 0 , 0 ), # Red
48- ]
74+ colormap = palette .colors
4975
5076 # Normalize the value within the range
5177 if min_value == max_value :
@@ -67,25 +93,25 @@ def value_to_color(value, min_value, max_value):
6793 return interpolate_color (color1 , color2 , t )
6894
6995
70- def color_pcd (pcd , values , min_value , max_value ):
96+ def color_pcd (pcd , values , min_value , max_value , palette ):
7197
7298 for i , p in enumerate (pcd ):
73- mapped_color = value_to_color (values [i ], min_value , max_value )
99+ mapped_color = value_to_color (values [i ], min_value , max_value , palette )
74100 p .Color = mapped_color
75101 return pcd
76102
77103
78- def color_mesh (mesh , values , min_value , max_value ):
104+ def color_mesh (mesh , values , min_value , max_value , palette ):
79105 mesh .VertexColors .Clear ()
80106 for i , vertex in enumerate (mesh .Vertices ):
81107
82- mapped_color = value_to_color (values [i ], min_value , max_value )
108+ mapped_color = value_to_color (values [i ], min_value , max_value , palette )
83109 mesh .VertexColors .Add (mapped_color .R , mapped_color .G , mapped_color .B )
84110
85111 return mesh
86112
87113
88- def create_legend (min_value , max_value , steps = 10 , base_point = rg .Point3d (0 , 0 , 0 ),
114+ def create_legend (min_value , max_value , palette , steps = 10 , base_point = rg .Point3d (0 , 0 , 0 ),
89115 width = 0.5 , height = 1 , spacing = 0 ):
90116 """
91117 Create a legend in Rhino with colored hatches and text labels.
@@ -106,7 +132,7 @@ def create_legend(min_value, max_value, steps=10, base_point=rg.Point3d(0, 0, 0)
106132 for i in range (steps + 1 ):
107133
108134 value = min_value + (max_value - min_value ) * i / steps
109- color = value_to_color (value , min_value , max_value )
135+ color = value_to_color (value , min_value , max_value , palette )
110136
111137 if i > 0 :
112138 mesh = rg .Mesh ()
0 commit comments