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
相关产品推荐
相关产品推荐

