Skip to content

Commit

Permalink
use ad hoc viewer implementation for base examples
Browse files Browse the repository at this point in the history
  • Loading branch information
tomvanmele committed Jun 24, 2024
1 parent 8907605 commit 238adba
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 15 deletions.
2 changes: 0 additions & 2 deletions docs/examples/01_rtl.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
from compas_ags.diagrams import FormDiagram
from compas_ags.diagrams import FormGraph

# from compas_ags.viewers import Viewer

# ==============================================================================
# Construct the graph of a single panel truss,
# including loads and reaction forces.
Expand Down
65 changes: 58 additions & 7 deletions docs/examples/02_lpopt.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
# from compas_ags.viewers import Viewer
from compas_viewer import Viewer
from compas_viewer.config import Config

from compas.colors import Color
from compas.geometry import Box
from compas.geometry import Circle
from compas.geometry import Polygon
from compas.geometry import bounding_box
from compas_ags.ags import graphstatics
from compas_ags.ags import loadpath
from compas_ags.diagrams import ForceDiagram
Expand Down Expand Up @@ -115,9 +122,53 @@
# 4. display force and form diagrams
# ------------------------------------------------------------------------------

# viewer = Viewer(form, force, delay_setup=False, figsize=(12, 7.5))

# viewer.draw_form(forcescale=5, vertexlabel={key: str(key) for key in form.vertices()}, vertexsize=0.2)
# viewer.draw_force(vertexlabel={key: str(key) for key in force.vertices()}, vertexsize=0.2)

# viewer.show()
loadcolor = Color.green().darkened(50)
reactioncolor = Color.green().darkened(50)
tensioncolor = Color.red().lightened(25)
compressioncolor = Color.blue().lightened(25)

b1 = Box.from_bounding_box(bounding_box(form.vertices_attributes("xyz")))
b2 = Box.from_bounding_box(bounding_box(force.vertices_attributes("xyz")))

dx = b2.xmin - b1.xmax
if dx < 1:
dx = 1.5 * (b1.xmax - b2.xmin)
else:
dx = 0

config = Config()
config.renderer.view = "top"
config.renderer.gridsize = [100, 100, 100, 100]

viewer = Viewer(config=config)

viewer.scene.add(form, show_faces=False, show_lines=False, name="FormDiagram")
viewer.scene.add(force.translated([dx, 0, 0]), show_faces=False, name="ForceDiagram")

circles = [Circle.from_point_and_radius(form.vertex_point(vertex) + [0, 0, 0.001], 0.1).to_polygon(n=128) for vertex in form.vertices()]
viewer.scene.add(circles, name="Vertices", facecolor=Color.white(), linecolor=Color.black())

external = []
compression = []
tension = []
for edge in form.edges():
line = form.edge_line(edge)
vector = line.direction.cross([0, 0, 1])
force = form.edge_attribute(edge, name="f")
w = 0.01 * 0.5 * abs(force)
a = line.start + vector * -w
b = line.end + vector * -w
c = line.end + vector * +w
d = line.start + vector * +w
if form.edge_attribute(edge, name="is_external"):
external.append(Polygon([a, b, c, d]))
elif force > 0:
tension.append(Polygon([a, b, c, d]))
elif force < 0:
compression.append(Polygon([a, b, c, d]))

viewer.scene.add(external, name="External Forces", facecolor=reactioncolor, linecolor=reactioncolor.contrast)
viewer.scene.add(compression, name="Compression", facecolor=compressioncolor, linecolor=compressioncolor.contrast)
viewer.scene.add(tension, name="Tension", facecolor=tensioncolor, linecolor=tensioncolor.contrast)

viewer.show()
33 changes: 27 additions & 6 deletions docs/examples/03_fink.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
from compas_viewer import Viewer
from compas_viewer.config import Config

import compas_ags
from compas.colors import Color
from compas.geometry import Box
from compas.geometry import Circle
from compas.geometry import Polygon
from compas.geometry import bounding_box
from compas.geometry import normalize_vector
from compas.geometry import scale_vector
from compas.geometry import subtract_vectors
Expand Down Expand Up @@ -29,7 +37,7 @@
# Construct a planar embedding of the graph
# ==============================================================================

embedding = graph.copy()
embedding: FormGraph = graph.copy()

if embedding.is_crossed():

Expand All @@ -38,7 +46,7 @@
# and compute a spring layout to find a planar embedding
# finally we re-add the leaves towards "the outside"

noleaves = embedding.copy()
noleaves: FormGraph = embedding.copy()
for node in embedding.leaves():
noleaves.delete_node(node)

Expand Down Expand Up @@ -76,7 +84,20 @@
# Visualize the result
# ==============================================================================

# plotter = MeshPlotter(form, figsize=(12, 7.5))
# plotter.draw_vertices(text="key", radius=0.3)
# plotter.draw_edges()
# plotter.show()
loadcolor = Color.green().darkened(50)
reactioncolor = Color.green().darkened(50)
tensioncolor = Color.red().lightened(25)
compressioncolor = Color.blue().lightened(25)

config = Config()
config.renderer.view = "top"
config.renderer.gridsize = [100, 100, 100, 100]

viewer = Viewer(config=config)

viewer.scene.add(form, show_faces=False, show_lines=True, linewidth=2, name="FormDiagram")

circles = [Circle.from_point_and_radius(form.vertex_point(vertex) + [0, 0, 0.001], 0.1).to_polygon(n=128) for vertex in form.vertices()]
viewer.scene.add(circles, name="Vertices", facecolor=Color.white(), linecolor=Color.black())

viewer.show()
Empty file.
Empty file added src/compas_ags/viewer/viewer.py
Empty file.

0 comments on commit 238adba

Please sign in to comment.