pyvista.PolyDataFilters.boolean_difference#

PolyDataFilters.boolean_difference(other_mesh, tolerance=1e-05, progress_bar=False)[ソース]#

2つのメッシュの間でブーリアン値の差分演算を行います.

基本的に,ブーリアン結合,切断,交差はすべて同じ操作です.ただ,オブジェクトの異なる部分が最終的に保持されるだけです.

2つのマニフォールドメッシュ AB の差は, A のメッシュのうち B に属さない部分の体積である.

注釈

ブーリアン演算が思った通りに反応しない(例えば,間違った部分が消えてしまう)場合,メッシュの1つが法線を内側に向けている可能性があります.法線を可視化するには, PolyDataFilters.plot_normals() を使用してください.

注釈

両方のメッシュはすべての3角形で構成されていなければなりません. これは PolyData.is_all_triangles でチェックし, PolyDataFilters.triangulate() で変換します.

バージョン 0.32.0 で変更: VTKのデフォルトの動作に合わせて動作を変更しました.

パラメータ:
other_meshpyvista.PolyData

ソースのメッシュを操作するメッシュ.

tolerancefloat, default: 1e-5

点の絶対的な距離がゼロとみなされるタイミングを決定するために使用される許容範囲.

progress_barbool, default: False

進行状況を示す進行状況バーを表示します.

戻り値:
pyvista.PolyData

ブーリアン演算の結果です.

2つの球体を使って真偽判定のデモンストレーションを行います. 最終的なメッシュには sphere_a しか含まれていないことに注意してください.

>>> import pyvista as pv
>>> sphere_a = pv.Sphere()
>>> sphere_b = pv.Sphere(center=(0.5, 0, 0))
>>> result = sphere_a.boolean_difference(sphere_b)
>>> pl = pv.Plotter()
>>> _ = pl.add_mesh(
...     sphere_a, color='r', style='wireframe', line_width=3
... )
>>> _ = pl.add_mesh(
...     sphere_b, color='b', style='wireframe', line_width=3
... )
>>> _ = pl.add_mesh(result, color='lightblue')
>>> pl.camera_position = 'xz'
>>> pl.show()
../../../_images/pyvista-PolyDataFilters-boolean_difference-1_00_00.png

このフィルターを使用したその他の例については, ブール演算 を参照してください.