Skip to content

Commit 70eaf1b

Browse files
examples update
1 parent 64b5991 commit 70eaf1b

6 files changed

Lines changed: 203 additions & 93 deletions

File tree

examples/_tutorial/1_arch.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
# from compas_tno.viewers import Viewer
66
# from compas_tno.plotters import TNOPlotter
77

8+
from compas_viewer import Viewer
9+
810
# ----------------------------------------
911
# 1. Geometric definition
1012
# ----------------------------------------
@@ -50,7 +52,7 @@
5052
# 5. Create analysis for maximum thrust and visualise
5153
# ----------------------------------------
5254

53-
analysis = Analysis.create_maxthrust_analysis(form, arch)
55+
analysis = Analysis.create_maxthrust_analysis(form, arch, printout=True)
5456
analysis.optimiser.set_constraints(["funicular", "envelope", "reac_bounds"])
5557
analysis.optimiser.set_starting_point("current")
5658
analysis.apply_selfweight()
@@ -59,6 +61,12 @@
5961
analysis.set_up_optimiser()
6062
analysis.run()
6163

64+
print('Form Diagram:', form)
65+
66+
viewer = Viewer()
67+
viewer.scene.add(form)
68+
viewer.show()
69+
6270
# view = Viewer(form, arch)
6371
# view.settings['camera.target'] = [0.5, 0, 0]
6472
# view.settings['camera.distance'] = 7.0

examples/_tutorial/2_crossvault_minmax.py

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,39 @@
88
from compas_tno.diagrams import FormDiagram
99
from compas_tno.shapes import Shape
1010

11+
# ----------------------------------------
12+
# 0. Vizualization function
13+
# ----------------------------------------
14+
15+
def visualization(vault, form):
16+
viewer = Viewer()
17+
18+
# viewer.scene.add(vault.middle, show_lines=False, name="Middle")
19+
viewer.scene.add(vault.intrados, show_lines=False, name="Intrados", opacity=0.5)
20+
viewer.scene.add(vault.extrados, show_lines=False, name="Extrados", opacity=0.5)
21+
22+
edges = list(form.edges_where({"_is_edge": True}))
23+
24+
max_thick = 0.1
25+
forces = [form.edge_attribute(edge, "q") * form.edge_length(edge) for edge in edges]
26+
fmax = math.sqrt(max(abs(max(forces)), abs(min(forces))))
27+
28+
pipes = []
29+
for edge in edges:
30+
qi = form.edge_attribute(edge, "q")
31+
line = form.edge_line(edge)
32+
length = line.length
33+
force = math.sqrt(abs(qi * length))
34+
radius = force / fmax * max_thick
35+
pipe = Cylinder.from_line_and_radius(line, radius)
36+
if force > 1e-3:
37+
pipes.append(pipe)
38+
viewer.scene.add(pipe, color=Color.red())
39+
40+
# viewer.scene.add(pipes, name="Pipes", color=Color.red())
41+
42+
viewer.show()
43+
1144
# ----------------------------------------
1245
# 1. Shape geometric definition
1346
# ----------------------------------------
@@ -20,7 +53,7 @@
2053
# ----------------------------------------
2154
# 2. Form diagram geometric definition
2255
# ----------------------------------------
23-
discretisation = 10
56+
discretisation = 14
2457
form = FormDiagram.create_cross_form(xy_span=xy_span, discretisation=discretisation)
2558

2659
# --------------------------------------------
@@ -32,8 +65,7 @@
3265
analysis.set_up_optimiser()
3366
analysis.run()
3467

35-
# view = Viewer(form)
36-
# view.show_solution()
68+
visualization(vault, form)
3769

3870
# --------------------------------------------
3971
# 4. Maximum thurst solution and visualisation
@@ -44,36 +76,5 @@
4476
analysis.set_up_optimiser()
4577
analysis.run()
4678

47-
# view = Viewer(form)
48-
# view.show_solution()
49-
50-
# =============================================================================
51-
# Viz
52-
# =============================================================================
53-
54-
viewer = Viewer()
55-
56-
viewer.scene.add(vault.middle, show_lines=False, name="Middle")
57-
viewer.scene.add(vault.intrados, show_lines=False, name="Intrados", opacity=0.5)
58-
viewer.scene.add(vault.extrados, show_lines=False, name="Extrados", opacity=0.5)
59-
60-
edges = list(form.edges_where({"_is_edge": True}))
61-
62-
max_thick = 0.1
63-
forces = [form.edge_attribute(edge, "q") * form.edge_length(edge) for edge in edges]
64-
fmax = math.sqrt(max(abs(max(forces)), abs(min(forces))))
65-
66-
pipes = []
67-
for edge in edges:
68-
q = form.edge_attribute(edge, "q")
69-
line = form.edge_line(edge)
70-
length = line.length
71-
force = math.sqrt(abs(q * length))
72-
radius = force / fmax * max_thick
73-
pipe = Cylinder.from_line_and_radius(line, radius)
74-
if force > 1e-3:
75-
pipes.append(pipe)
76-
77-
viewer.scene.add(pipes, name="Pipes", color=Color.red())
79+
visualization(vault, form)
7880

79-
viewer.show()

examples/_tutorial/3_crossvault_fan.py

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,39 @@
88
from compas_tno.diagrams import FormDiagram
99
from compas_tno.shapes import Shape
1010

11+
# ----------------------------------------
12+
# 0. Vizualization function
13+
# ----------------------------------------
14+
15+
def visualization(vault, form):
16+
viewer = Viewer()
17+
18+
# viewer.scene.add(vault.middle, show_lines=False, name="Middle")
19+
viewer.scene.add(vault.intrados, show_lines=False, name="Intrados", opacity=0.5)
20+
viewer.scene.add(vault.extrados, show_lines=False, name="Extrados", opacity=0.5)
21+
22+
edges = list(form.edges_where({"_is_edge": True}))
23+
24+
max_thick = 0.1
25+
forces = [form.edge_attribute(edge, "q") * form.edge_length(edge) for edge in edges]
26+
fmax = math.sqrt(max(abs(max(forces)), abs(min(forces))))
27+
28+
pipes = []
29+
for edge in edges:
30+
qi = form.edge_attribute(edge, "q")
31+
line = form.edge_line(edge)
32+
length = line.length
33+
force = math.sqrt(abs(qi * length))
34+
radius = force / fmax * max_thick
35+
pipe = Cylinder.from_line_and_radius(line, radius)
36+
if force > 1e-3:
37+
pipes.append(pipe)
38+
viewer.scene.add(pipe, color=Color.red())
39+
40+
# viewer.scene.add(pipes, name="Pipes", color=Color.red())
41+
42+
viewer.show()
43+
1144
# ----------------------------------------
1245
# 1. Shape geometric definition
1346
# ----------------------------------------
@@ -32,9 +65,7 @@
3265
analysis.set_up_optimiser()
3366
analysis.run()
3467

35-
# view = Viewer(form)
36-
# view.settings['scale.reactions'] = 0.004
37-
# view.show_solution()
68+
visualization(vault, form)
3869

3970
# --------------------------------------------
4071
# 4. Maximum thurst solution and visualisation
@@ -45,37 +76,4 @@
4576
analysis.set_up_optimiser()
4677
analysis.run()
4778

48-
# view = Viewer(form)
49-
# view.settings['scale.reactions'] = 0.004
50-
# view.show_solution()
51-
52-
# =============================================================================
53-
# Viz
54-
# =============================================================================
55-
56-
viewer = Viewer()
57-
58-
viewer.scene.add(vault.middle, show_lines=False, name="Middle")
59-
viewer.scene.add(vault.intrados, show_lines=False, name="Intrados", opacity=0.5)
60-
viewer.scene.add(vault.extrados, show_lines=False, name="Extrados", opacity=0.5)
61-
62-
edges = list(form.edges_where({"_is_edge": True}))
63-
64-
max_thick = 0.1
65-
forces = [form.edge_attribute(edge, "q") * form.edge_length(edge) for edge in edges]
66-
fmax = math.sqrt(max(abs(max(forces)), abs(min(forces))))
67-
68-
pipes = []
69-
for edge in edges:
70-
q = form.edge_attribute(edge, "q")
71-
line = form.edge_line(edge)
72-
length = line.length
73-
force = math.sqrt(abs(q * length))
74-
radius = force / fmax * max_thick
75-
pipe = Cylinder.from_line_and_radius(line, radius)
76-
if force > 1e-3:
77-
pipes.append(pipe)
78-
79-
viewer.scene.add(pipes, name="Pipes", color=Color.red())
80-
81-
viewer.show()
79+
visualization(vault, form)

examples/_tutorial/4_dome_minthk.py

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,44 @@
22
from compas_tno.diagrams import FormDiagram
33
from compas_tno.shapes import Shape
44

5+
from compas_viewer import Viewer
6+
import math
7+
from compas.colors import Color
8+
from compas.geometry import Cylinder
9+
10+
# ----------------------------------------
11+
# 0. Vizualization function
12+
# ----------------------------------------
13+
14+
def visualization(vault, form):
15+
viewer = Viewer()
16+
17+
# viewer.scene.add(vault.middle, show_lines=False, name="Middle")
18+
viewer.scene.add(vault.intrados, show_lines=False, name="Intrados", opacity=0.5)
19+
viewer.scene.add(vault.extrados, show_lines=False, name="Extrados", opacity=0.5)
20+
21+
edges = list(form.edges_where({"_is_edge": True}))
22+
23+
max_thick = 0.1
24+
forces = [form.edge_attribute(edge, "q") * form.edge_length(edge) for edge in edges]
25+
fmax = math.sqrt(max(abs(max(forces)), abs(min(forces))))
26+
27+
pipes = []
28+
for edge in edges:
29+
qi = form.edge_attribute(edge, "q")
30+
line = form.edge_line(edge)
31+
length = line.length
32+
force = math.sqrt(abs(qi * length))
33+
radius = force / fmax * max_thick
34+
pipe = Cylinder.from_line_and_radius(line, radius)
35+
if force > 1e-3:
36+
pipes.append(pipe)
37+
viewer.scene.add(pipe, color=Color.red())
38+
39+
# viewer.scene.add(pipes, name="Pipes", color=Color.red())
40+
41+
viewer.show()
42+
543
# ----------------------------------------
644
# 1. Shape geometric definition
745
# ----------------------------------------
@@ -31,10 +69,4 @@
3169
thk_min = analysis.optimiser.fopt
3270
dome_min = Shape.create_dome(radius=radius, thk=thk_min, center=center)
3371

34-
# view = Viewer(form, dome_min)
35-
# view.scale_edge_thickness(5.0)
36-
# view.draw_form()
37-
# view.draw_shape()
38-
# view.draw_reactions(extend_reactions=True)
39-
# view.draw_cracks()
40-
# view.show()
72+
visualization(dome_min, form)

examples/_tutorial/5_dome_settlement.py

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,44 @@
66
from compas_tno.diagrams import FormDiagram
77
from compas_tno.shapes import Shape
88

9+
from compas_viewer import Viewer
10+
import math
11+
from compas.colors import Color
12+
from compas.geometry import Cylinder
13+
14+
# ----------------------------------------
15+
# 0. Vizualization function
16+
# ----------------------------------------
17+
18+
def visualization(vault, form):
19+
viewer = Viewer()
20+
21+
# viewer.scene.add(vault.middle, show_lines=False, name="Middle")
22+
viewer.scene.add(vault.intrados, show_lines=False, name="Intrados", opacity=0.5)
23+
viewer.scene.add(vault.extrados, show_lines=False, name="Extrados", opacity=0.5)
24+
25+
edges = list(form.edges_where({"_is_edge": True}))
26+
27+
max_thick = 0.1
28+
forces = [form.edge_attribute(edge, "q") * form.edge_length(edge) for edge in edges]
29+
fmax = math.sqrt(max(abs(max(forces)), abs(min(forces))))
30+
31+
pipes = []
32+
for edge in edges:
33+
qi = form.edge_attribute(edge, "q")
34+
line = form.edge_line(edge)
35+
length = line.length
36+
force = math.sqrt(abs(qi * length))
37+
radius = force / fmax * max_thick
38+
pipe = Cylinder.from_line_and_radius(line, radius)
39+
if force > 1e-3:
40+
pipes.append(pipe)
41+
viewer.scene.add(pipe, color=Color.red())
42+
43+
# viewer.scene.add(pipes, name="Pipes", color=Color.red())
44+
45+
viewer.show()
46+
947
# ----------------------------------------
1048
# 1. Shape geometric definition
1149
# ----------------------------------------
@@ -57,14 +95,4 @@
5795
analysis.set_up_optimiser()
5896
analysis.run()
5997

60-
# view = Viewer(form, dome)
61-
# view.scale_edge_thickness(5.0)
62-
# view.draw_form()
63-
# view.draw_shape()
64-
# view.draw_reactions(extend_reactions=True)
65-
# view.draw_cracks()
66-
# for i in range(len(vectors_plot)):
67-
# vector = vectors_plot[i]
68-
# base = base_plot[i]
69-
# view.draw_vector(vector=vector, base=base)
70-
# view.show()
98+
visualization(dome, form)

0 commit comments

Comments
 (0)