注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
エッジを抽出#
サーフェスからエッジを抽出します.
import pyvista as pv
from pyvista import examples
vtkのマニュアルによると,メッシュのエッジは次のいずれかです.
境界(1つのポリゴンで使用)またはラインセル
非多様体(3つ以上の多角形によって使用されます)
フィーチャエッジ(2つの3角形で使用され,2面角がfeature_angleより大きいエッジ)
多様体のエッジ(ちょうど2つのポリゴンで使用されるエッジ).
extract_feature_edges()
フィルタは,特徴的な角度が与えられたときにそれらのエッジを抽出し,元のメッシュのエッジを表す線を含むデータセットを返します.
まず,サンプルのCADモデルの周囲のエッジを抽出してみましょう.
# Download the example CAD model and extract all feature edges above 45 degrees
mesh = examples.download_cad_model()
edges = mesh.extract_feature_edges(45)
# Render the edge lines on top of the original mesh. Zoom in to provide a better figure.
p = pv.Plotter()
p.add_mesh(mesh, color=True)
p.add_mesh(edges, color="red", line_width=5)
p.camera.zoom(1.5)
p.show()
この解析は pyvista.PolyData
オブジェクトに対して行うことができます.牛のメッシュの例を見てみましょう.
mesh = examples.download_cow()
edges = mesh.extract_feature_edges(20)
p = pv.Plotter()
p.add_mesh(mesh, color=True)
p.add_mesh(edges, color="red", line_width=5)
p.camera_position = [(9.5, 3.0, 5.5), (2.5, 1, 0), (0, 1, 0)]
p.show()
pyvista.PolyData.n_open_edges
プロパティと pyvista.DataSetFilters.extract_feature_edges()
フィルタを利用して, pyvista.PolyData
メッシュの開いたエッジをカウントおよび抽出できます.
# Download a sample surface mesh with visible open edges
mesh = examples.download_bunny()
mesh
次のコマンドを使用すると,開いたエッジの数を取得できます:
mesh.n_open_edges
223
pyvista.DataSetFilters.extract_feature_edges()
の boundary_edges
オプションを使用すると,これらのエッジを抽出できます.
edges = mesh.extract_feature_edges(boundary_edges=True, feature_edges=False, manifold_edges=False)
p = pv.Plotter()
p.add_mesh(mesh, color=True)
p.add_mesh(edges, color="red", line_width=5)
p.camera_position = [(-0.2, -0.13, 0.12), (-0.015, 0.10, -0.0), (0.28, 0.26, 0.9)]
p.show()
Total running time of the script: (0 minutes 2.758 seconds)