Rendering¶
Pynite has a built-in Rendering
library to help you visualize your model. This library can be used to produce basic rendererings of the model, loads, the deformed shape, and can generate interactive plots in Jupyter Notebooks.
The Rendering
library relies on Pyvista which in turn relies on The Visualization Toolkit (VTK) by Kitware. This library was chosen because it is cross-platform, widely used, regularly maintained, and reliable.
The Renderer object¶
Pynite uses a Renderer
object in the Rendering
library to do the heavy lifting for you. To create a Renderer
for your model you just create a new instance of the Renderer
class and pass your model to it:
# Import the `Renderer` object
from Pynite.Rendering import Renderer
# Create a `Renderer` for this model
my_rndr = Renderer(my_model)
Renderer Options¶
The Renderer
object has some default properties you may wish to change. Below are examples of these options:
my_rndr.deformed_shape = True # Turns on the deformed shape during rendering
my_rndr.annotation_size = 2 # Scales model annotations to 2 model length units
my_rndr.deformed_scale = 30 # Sets the scale of deformations
my_rndr.render_nodes = False # Turns off the nodes during rendering
my_rndr.render_loads = False # Turns off load rendering
my_rndr.color_map = 'Txy' # Changes plate contours to show shear stresses
my_rndr.combo_name = '1.4D' # The name of the load combination to render
my_rndr.case = None # The load case to render - ignored if a load combination is specified
my_rndr.labels = False # Turns off label renderings
my_rndr.scalar_bar = True # Turns on the scalar bar for plate contours
my_rndr.scalar_bar_text_size = 24 # Adjusts the text height for the scalar bar
Rendering the Model and Screenshots¶
Once you’ve got your settings the way you want them, you can render your model using render_model
:
my_rndr.render_model()
You can also create a screenshot using screenshot
. Pass the filepath
for the screenshot as a string. Use interact=True
if you want to position the screenshot before capturing it, then it q
to capture it. If you close out of the window instead of hitting q
it will capture the original positioning instead (this is a Pyvista
nuance).
my_rndr.screeenshot(filepath, interact=True)