You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyVista中如何从PolyData提取的特征线中保留轮廓线?

可以实现,两种方法搞定

方法1:调用extract_feature_edges时直接指定仅提取轮廓边

extract_feature_edges默认会提取所有类型的特征边(边界边、特征角边、非流形边等),但你可以通过参数精准控制,只保留轮廓边(边界边):

# 仅提取原始网格的轮廓线条
lines = mesh.extract_feature_edges(
    boundary_edges=True,
    feature_edges=False,
    manifold_edges=False,
    non_manifold_edges=False
)

各参数作用:

  • boundary_edges=True:开启提取边界边(也就是你需要的轮廓线)
  • feature_edges=False:关闭特征角边的提取
  • manifold_edges=False:关闭流形边的提取
  • non_manifold_edges=False:关闭非流形边的提取

方法2:对已提取的全量特征边进行过滤

如果已经提前提取了所有特征边集合,也可以通过过滤单元数据中的FeatureEdges数组来筛选轮廓边。VTK会为每条特征边标记类型,其中边界边对应的标记值为1,你可以用阈值工具筛选:

import vtk

# 假设lines是已提取的全量特征边PolyData对象
threshold_filter = vtk.vtkThreshold()
threshold_filter.SetInputData(lines)
# 指定要筛选的单元数据数组
threshold_filter.SetInputArrayToProcess(
    0, 0, 0,
    vtk.vtkDataObject.FIELD_ASSOCIATION_CELLS,
    "FeatureEdges"
)
# 仅保留标记值为1的边(即边界边/轮廓线)
threshold_filter.ThresholdBetween(1, 1)
threshold_filter.Update()

# 最终得到的就是仅包含轮廓线的子集
outline_lines = threshold_filter.GetOutput()

内容的提问来源于stack exchange,提问作者dba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 13:57:28