Skip to content

Commit 9733416

Browse files
committed
add show_force colors to pipes in thrustdiagram
1 parent 03ce534 commit 9733416

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/compas_rv/scene/thrustobject.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,26 @@ def diagram(self) -> ThrustDiagram:
7979
def diagram(self, diagram: ThrustDiagram) -> None:
8080
self.mesh = diagram
8181

82+
def compute_pipe_colors(self, tol=1e-3) -> None:
83+
84+
edges = list(self.mesh.edges())
85+
86+
forces = [self.mesh.edge_attribute(edge, "_f") for edge in edges]
87+
magnitudes = [abs(f) for f in forces]
88+
fmin = min(magnitudes)
89+
fmax = max(magnitudes)
90+
if fmax - fmin < tol:
91+
return
92+
colors = []
93+
94+
for force, magnitude in zip(forces, magnitudes):
95+
if fmin != fmax:
96+
colors.append(Color.from_i((magnitude - fmin) / (fmax - fmin)))
97+
98+
pipe_colors = dict(zip(edges, colors))
99+
100+
return pipe_colors
101+
82102
def draw(self):
83103
faces = []
84104
if self.show_faces:
@@ -211,13 +231,19 @@ def draw_pipes(self):
211231
scale = self.session.settings.drawing.scale_pipes
212232
tol = self.session.settings.drawing.tol_pipes
213233

234+
pipe_colors = self.compute_pipe_colors()
235+
214236
for edge in self.mesh.edges():
215237
force = self.mesh.edge_attribute(edge, "_f")
216238

217239
if force != 0:
218240
line = self.mesh.edge_line(edge)
219241
radius = abs(force) * scale
242+
220243
color = self.compressioncolor
244+
if self.session.settings.drawing.show_forces:
245+
color=pipe_colors[edge]
246+
221247
if radius > tol:
222248
pipe = Cylinder.from_line_and_radius(line, radius)
223249
name = "{}.edge.{}.force".format(self.mesh.name, edge)

0 commit comments

Comments
 (0)