如何使用vtkThreshold获取在阈值内的点的点ID
我想知道怎么获取一个列表,里面包含那些位置在某个范围内的点的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())