Skip to content

Commit 5659188

Browse files
committed
set formdiagram supports
1 parent a42a7fb commit 5659188

File tree

2 files changed

+104
-3
lines changed

2 files changed

+104
-3
lines changed

commands/TNA_formdiagram.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,12 @@ def RunCommand():
103103
if not n:
104104
return
105105

106-
formdiagram = FormDiagram.create_cross(x_span=x_span, y_span=y_span, n=n)
106+
formdiagram = FormDiagram.create_cross(
107+
x_span=x_span,
108+
y_span=y_span,
109+
n=n,
110+
supports=None, # type: ignore
111+
)
107112

108113
session["params"]["formdiagram"] = "cross"
109114
session["params"]["x_span"] = x_span
@@ -133,7 +138,13 @@ def RunCommand():
133138
if not n_hoops:
134139
return
135140

136-
formdiagram = FormDiagram.create_fan(x_span=x_span, y_span=y_span, n_fans=n_fans, n_hoops=n_hoops)
141+
formdiagram = FormDiagram.create_fan(
142+
x_span=x_span,
143+
y_span=y_span,
144+
n_fans=n_fans,
145+
n_hoops=n_hoops,
146+
supports=None, # type: ignore
147+
)
137148

138149
session["params"]["formdiagram"] = "fan"
139150
session["params"]["x_span"] = x_span
@@ -164,7 +175,13 @@ def RunCommand():
164175
if not ny:
165176
return
166177

167-
formdiagram = FormDiagram.create_ortho(x_span=x_span, y_span=y_span, nx=nx, ny=ny)
178+
formdiagram = FormDiagram.create_ortho(
179+
x_span=x_span,
180+
y_span=y_span,
181+
nx=nx,
182+
ny=ny,
183+
supports=None, # type: ignore
184+
)
168185

169186
session["params"]["formdiagram"] = "ortho"
170187
session["params"]["x_span"] = x_span

commands/TNA_supports.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#! python3
2+
# venv: brg-csd
3+
# r: compas_masonry
4+
5+
import rhinoscriptsyntax as rs # type: ignore
6+
7+
from compas_masonry.scene import RhinoFormDiagramObject
8+
from compas_masonry.session import MasonrySession as Session
9+
from compas_rui import feedback
10+
from compas_tna.diagrams import FormDiagram
11+
12+
13+
def RunCommand():
14+
session = Session()
15+
16+
formdiagram = session["formdiagram"]
17+
18+
if not formdiagram:
19+
feedback.warn("There is no FormDiagram. Please create one first.")
20+
return
21+
22+
formobject: RhinoFormDiagramObject = session.scene.find_by_itemtype(FormDiagram) # type: ignore
23+
if not formobject:
24+
session.scene.add(formdiagram, name="FormDiagram", layer="Masonry::TNA::FormDiagram") # type: ignore
25+
26+
formobject.redraw()
27+
28+
# =============================================================================
29+
# Update the supports
30+
# =============================================================================
31+
32+
rs.UnselectAllObjects()
33+
34+
options = ["Add", "Remove"]
35+
option = rs.GetString("Add or Remove supports", strings=options)
36+
if not option:
37+
return
38+
39+
if option == "Add":
40+
formobject.show_vertices = list(formobject.vertices()) # type: ignore
41+
formobject.show_edges = list(formobject.edges()) # type: ignore
42+
formobject.redraw()
43+
44+
selected = formobject.select_vertices()
45+
46+
if selected:
47+
formobject.mesh.vertices_attribute(name="is_support", value=True, keys=selected)
48+
49+
elif option == "Remove":
50+
formobject.show_vertices = list(formobject.vertices()) # type: ignore
51+
formobject.show_edges = list(formobject.edges()) # type: ignore
52+
formobject.redraw()
53+
54+
selected = formobject.select_vertices()
55+
56+
if selected:
57+
formobject.mesh.vertices_attribute(name="is_support", value=False, keys=selected)
58+
59+
# =============================================================================
60+
# Update scene
61+
# =============================================================================
62+
63+
rs.UnselectAllObjects()
64+
65+
formobject.show_edges = False # type: ignore
66+
formobject.show_faces = True # type: ignore
67+
formobject.redraw()
68+
69+
rs.Redraw()
70+
71+
# =============================================================================
72+
# Save
73+
# =============================================================================
74+
75+
# if session.settings.autosave:
76+
# session.record(name="Analysis")
77+
78+
79+
# =============================================================================
80+
# Run as main
81+
# =============================================================================
82+
83+
if __name__ == "__main__":
84+
RunCommand()

0 commit comments

Comments
 (0)