円柱を用いたトラス状のFEAソリューションのプロット#

点と点の間のつながりを,スカラーで色づけされた円柱として3Dにプロットします.

import numpy as np

import pyvista

トラスの点と要素を定義します. ここでは,有限要素解析から来ているように, ノード と呼びます.

nodes = [
    [0.0, 0.0, 0.0],
    [0.0, 1.0, 0.0],
    [4.0, 3.0, 0.0],
    [4.0, 0.0, 0.0],
    [0.0, 1.0, 2.0],
    [4.0, 1.0, 2.0],
    [4.0, 3.0, 2.0],
]


edges = np.array(
    [
        [0, 4],
        [1, 4],
        [3, 4],
        [5, 4],
        [6, 4],
        [3, 5],
        [2, 5],
        [5, 6],
        [2, 6],
    ]
)

# We must "pad" the edges to indicate to vtk how many points per edge
padding = np.empty(edges.shape[0], int) * 2
padding[:] = 2
edges_w_padding = np.vstack((padding, edges.T)).T
edges_w_padding
array([[2, 0, 4],
       [2, 1, 4],
       [2, 3, 4],
       [2, 5, 4],
       [2, 6, 4],
       [2, 3, 5],
       [2, 2, 5],
       [2, 5, 6],
       [2, 2, 6]])

ラインをチューブとしてレンダリングしながらトラスをプロットします.

mesh = pyvista.PolyData(nodes, edges_w_padding)

colors = range(edges.shape[0])
mesh.plot(
    scalars=colors,
    render_lines_as_tubes=True,
    style='wireframe',
    line_width=10,
    cmap='jet',
    show_scalar_bar=False,
    background='w',
)
create truss

Total running time of the script: (0 minutes 0.457 seconds)

Sphinx-Galleryによるギャラリー