Как сохранить несколько выбранных регионов в интерактивном выборе сетки PyVistaPython

Программы на Python
Ответить
Anonymous
 Как сохранить несколько выбранных регионов в интерактивном выборе сетки PyVista

Сообщение Anonymous »

Я работаю с PyVista над созданием интерактивного средства просмотра STL, в котором пользователи смогут выбирать несколько регионов сетки. Текущий код допускает выбор, но имеет проблему: ранее выбранные регионы исчезают при выборе новых. Данные выбора правильно сохраняются в фоновом режиме (что подтверждается сохраненным файлом), но визуальное представление показывает только самый последний выбор. Я ищу способ сделать так, чтобы все выбранные области оставались заметно выделенными соответствующими цветами, поскольку пользователь продолжает выбирать новые области.
import pyvista as pv
import numpy as np

mesh = pv.read('tumor.stl')
plotter = pv.Plotter()

colors = [[1,0,0], [0,1,0], [0,0,1], [1,1,0], [1,0,1]]
color_index = 0
selected = []

def pick_cell(cell_id):
global color_index
if cell_id is not None:
# Get next color
color = colors[color_index]
color_index = (color_index + 1) % len(colors)

# Add to selection
selected.append(cell_id)

# Highlight by changing cell color in main mesh
mesh.cell_data["selected"] = np.zeros(mesh.n_cells)
for idx in selected:
mesh.cell_data["selected"][idx] = 1

# Update display
plotter.add_mesh(mesh, scalars="selected", cmap=['lightgray', color],
show_scalar_bar=True, name="main_mesh", copy_mesh=True)

print(f"Selected triangle {cell_id}")

def save_selection():
# Save selected triangle indices
with open('selected_triangles.txt', 'w') as f:
for cell_id in selected:
f.write(f"{cell_id}\n")
print(f"Saved {len(selected)} triangles to selected_triangles.txt")

# Setup plot
plotter.add_mesh(mesh, color='lightgray', name="main_mesh")
plotter.add_text("Click triangles to select\nPress 'S' to save", position='lower_left')

# Enable interaction
plotter.enable_cell_picking(callback=pick_cell, through=False)
plotter.add_key_event("s", save_selection)

# Start
plotter.show()

# After closing
print(f"Final: {len(selected)} triangles selected")


Подробнее здесь: https://stackoverflow.com/questions/798 ... sh-picking
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»