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

如何从PyVista的PolyData对象直接获取extract_feature_edges()提取的边界点索引

如何从PyVista的PolyData对象直接获取extract_feature_edges()提取的边界点索引

嘿,我太懂你不想靠numpy.where来凑的心情了——PyVista其实早就给你准备了更直接的方式,完全不用自己折腾坐标匹配那一套~

你用extract_feature_edges()提取出来的边界边对象(也就是你代码里的edges),其实自带了和原网格对应的点索引信息。当PyVista从原网格提取子数据集时,会自动把每个子点对应的原网格点ID存在point_data的vtkOriginalPointIds字段里,你直接读取这个字段就能拿到原PolyData里的边界点索引了,既高效又能避免浮点数匹配可能带来的精度问题。

修改后的代码大概是这样:

bot_surf_file = r'bottom.stl'
bot_surf_mesh = pv.PolyData(bot_surf_file)

# 只提取边界边,过滤其他类型的特征边
edges = bot_surf_mesh.extract_feature_edges(boundary_edges=True, feature_edges=False, manifold_edges=False)
# 直接获取原网格中的边界点索引
edge_points_indices = edges.point_data['vtkOriginalPointIds']

哦对了,我在调用extract_feature_edges的时候额外加了feature_edges=False, manifold_edges=False这两个参数,这样可以确保只提取你需要的边界边,过滤掉其他类型的特征边,让结果更纯净——如果你本来就只想要边界边的话,加上会更精准。

这样拿到的edge_points_indices就是一个一维数组,里面全是原bot_surf_mesh中属于边界的点的索引,完全不用再碰numpy.where,完美契合你的需求~

备注:内容来源于stack exchange,提问作者IzaeDA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:18:05