Доступ к данным ячеек из программируемого фильтра Paraview

Мне нужно создать программируемый фильтр с помощью Paraview. Идея состоит в том, чтобы создать вектор с именем Speed, равный скорости в невращающейся части, равной скорости + скорости вращения во вращающейся части.

Проблема в том, что я не могу принять значение скорости в каждой отдельной ячейке.

input0 = inputs[0]
radius=3
Speed1=input0.PointData["U"]
K=vtk.vtkDoubleArray()
X=input0.PointData["X"]
Y=input0.PointData["Y"]
Z=input0.PointData["Z"]

pdi = self.GetInput()
numPts = pdi.GetNumberOfPoints()

for i in range(0, numPts):
    if X.getvalue(i)^2+Y.getvalue(i)^2<radius:
    temp=U.getvalue(i)
    else:
    temp=U.getvalue(i)+rot
Speed.InsertNextValue(1)
output.PointData.append(Speed, "Speed")

Проблема в том, что X.getvalue(i) не работает.


person Carlo Augusto Pasquinucci    schedule 08.12.2017    source источник
comment
ваш вопрос не ясен. содержится ли массив X в вашем наборе данных PointData или CellData?   -  person Mathieu Westphal    schedule 22.12.2017
comment
Также массив Speed ​​еще не создан.   -  person Mathieu Westphal    schedule 22.12.2017
comment
Спасибо за ответ. X ранее создавался как PointData в предыдущем фильтре калькулятора. Единственная проблема заключается в том, как получить доступ к этим данным, поскольку они представляют собой что-то вроде vtkdataarray.   -  person Carlo Augusto Pasquinucci    schedule 31.12.2017
comment
Вместо этого в теме вопроса упоминаются CellData, а в теле также упоминаются ячейки.   -  person Mathieu Westphal    schedule 05.01.2018
comment
@mathieuWestphal, ты или прав, но для меня то же самое. Мне нужно решение, это не проблема, если вы работаете с ячейками или точками.   -  person Carlo Augusto Pasquinucci    schedule 05.01.2018


Ответы (1)


Правильный синтаксис

X[i]

Документацию можно найти здесь

person Mathieu Westphal    schedule 05.01.2018
comment
Привет, Матье, спасибо за ответ, но он не работает, потому что X - это vtk. - person Carlo Augusto Pasquinucci; 10.01.2018
comment
Х это втк? что это означает ? - person Mathieu Westphal; 10.01.2018
comment
Извините, я не закончил фразы. X — это vtkCompositeDataArray, а не vtkGenericDataArray. Может быть в этом проблема? Я использую Praview 5.4.1 для 64-битной Windows. - person Carlo Augusto Pasquinucci; 14.01.2018
comment
Вы сказали, что X был создан в фильтре калькулятора, следовательно, это vtkDoubleArray, GetValue должен работать, вы можете попробовать GetVariantValue. - person Mathieu Westphal; 14.01.2018
comment
Да, X создается в фильтре калькулятора, но у меня всегда было: AttributeError: объект 'VTKCompositeDataArray' не имеет атрибута 'GetVariantValue', а также getVariantValue и GetValue, а также getvalue. Может быть по-другому, если оригинальный источник основан на OpenFoam или Ensight? Извините, но для меня важно найти решение. - person Carlo Augusto Pasquinucci; 14.01.2018
comment
Как можно переключиться с VTKCompositeDataArray на другие типы? Спасибо и извините - person Carlo Augusto Pasquinucci; 14.01.2018
comment
Большое спасибо! Кажется, работает лучше. По крайней мере, у меня нет ни одной ошибки. - person Carlo Augusto Pasquinucci; 16.01.2018
comment
Я хотел бы скопировать окончательный код для других пользователей, и, возможно, кто-нибудь поможет мне найти лучший способ конвертировать VTKArray в float. Большое спасибо! Кажется, работает лучше. По крайней мере, у меня нет ни одной ошибки. Я хотел бы улучшить способ преобразования в float. из алгоритмов импорта vtk.numpy_interface как algs input0 = inputs[0] X=input0.PointData[Result] c=X[1] f=algs.min(c) тип печати(f) - person Carlo Augusto Pasquinucci; 16.01.2018
comment
ваш последний комментарий был неясен. Пожалуйста, примите мой ответ, если он решил вашу проблему - person Mathieu Westphal; 17.01.2018