Corners with two neighboring support vertices are removed. Edges between two support vertices are removed.
# ===============================================================================# Define Supports# ===============================================================================# update default attributesform.update_default_vertex_attributes({'is_anchor': False})# anchor the points on the boundaryanchors = []for vkey in form.vertices_on_boundary(): form.vertex_attribute(vkey, 'is_anchor', True) anchors.append(vkey)# ==============================================================================# Visualization# ==============================================================================# highlight anchor verticesfacecolor ={vkey: (200,200,200) for vkey in form.vertices()}for vkey in form.vertices_where({'is_anchor': True}): facecolor[vkey]= (255,0,0)# only show inner edges# hightlight leaf edgesedgecolor ={}for vkey in anchors: nbrs = form.vertex_neighbors(vkey)for nbr in nbrs:if nbr in anchors: edgecolor[(vkey, nbr)]= (250,250,250) edgecolor[(nbr, vkey)]= (250,250,250)else: edgecolor[(vkey, nbr)]= (0,255,0) edgecolor[(nbr, vkey)]= (0,255,0)formartist.clear_layer()formartist.draw_vertices(color=facecolor)formartist.draw_edges(color=edgecolor)
Step 3: Create Force Diagram
The Force Diagram is the dual of the Form Diagram, in the sense that both diagrams have the same number of edges and that vertices in one diagram correspond to faces in the other, and vice versa.
Step 4: solve the horizontal and vertical equilibirum of the structure.
update the force diagram so that the corresponding edges are perpendicular to each other.
TNA offers the force diagram which is not just the visualization of horizontal equilibrium of the shell structure, but also a means through which the designer can explicitly modify the internal forces, thereby enabling a careful and controlled transformation of the geometry of the shell structure.
# ==============================================================================# Modify Force Diagram# ==============================================================================for vkey in force.vertices(): x = force.vertex_attribute(vkey, 'x')if x >7000: force.vertex_attribute(vkey, 'x', x +2500)forceartist.clear_layer()forceartist.draw()forceartist.draw_edges(color=(0, 0, 255))