如何使用vtkThreshold获取在阈值内的点的点ID

0 投票
1 回答
542 浏览
提问于 2025-04-18 02:44

我想知道怎么获取一个列表,里面包含那些位置在某个范围内的点的ID。例如,我需要一个列表,里面是所有x坐标小于1的点。

  idlist = []
  ncells = UnstructuredGrid.GetNumberOfCells()
  for idx in xrange(ncells):
        p = UnstructuredGrid.GetPoint(idx)
        #Check if x less them 1
        if p[0] < 1:
            idlist.append(idx)

我在寻找一种更高效、更聪明的方法来实现这个。可能可以使用vtkUnstructuredGridFilter或者vtkThresholdPoints来做到这一点。

1 个回答

0

假设没有更简单的方法来遍历这个无结构网格,你可以写一个生成器,让这个功能看起来更优雅。

def generate_grid():
  for id in xrange(UnstructuredGrid.GetNumberOfCells())
    yield UnstructuredGrid.GetPoint(idx)

然后你可以在列表推导式中使用这个生成器,比如:

idlist = [point[0] for point in generate_grid() if point[0] < 1]

或者用在过滤器中:

idlist = filter(lambda point: point[0] < 1, generate_grid())

撰写回答