Я работаю с 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
Как сохранить несколько выбранных регионов в интерактивном выборе сетки PyVista ⇐ Python
Программы на Python
1762213272
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")
Подробнее здесь: [url]https://stackoverflow.com/questions/79807764/how-to-maintain-multiple-selected-regions-in-pyvista-interactive-mesh-picking[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия