Forum

Author Topic: Выполнение Задач в едином окне прогресса  (Read 6950 times)

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Здравствуйте,
Возможно ли выполнение процедур, оформленных в python в виде Task в одном окне с единым прогрессбаром. Т.е. есть ли менеджер, в который в виде списка можно было отправить свои задачи, а он внутри бы уже выполнял apply.
Допусти к примеру предыдущего поста, нужно импортировать LAS файлы, а потом их объединить:

Code: [Select]
        ImportTask = Metashape.Tasks.ImportPoints()
        ImportTask.format = Metashape.PointsFormatLAS
        ImportTask.calculate_normals = False
        ImportTask.crs = self.chunk.crs

        MergeTask = Metashape.Tasks.MergeAssets()
        MergeTask.source_data = Metashape.DataSource.DenseCloudData

        for i,item in enumerate(files):
            print('{} from {}'.format(i+1,len(files)))
            self.chunk.dense_cloud = None
            ImportTask.path = item
            ImportTask.apply(self.chunk)
            self.chunk.dense_cloud.label = os.path.basename(item.split('.')[0])

        curent_clouds = self.chunk.dense_clouds
        intesection = [x for x in curent_clouds if x not in prev_clouds]

        self.chunk.dense_cloud = None
        MergeTask.assets = [dense_cloud.key for dense_cloud in intesection]
        MergeTask.apply(self.chunk)
        self.chunk.dense_cloud.label = 'LiDAR cloud'

        self.chunk.remove(intesection)

В какой контейнер отправить ImportTask и MergeTask, чтобы они исполнялись в одном окне прогресса?

Спасибо
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 14846
    • View Profile
Добрый день, Александр,

Пока изменений в этом отношении со времени Вашего предыдущего реквеста (https://www.agisoft.com/forum/index.php?topic=9920.0) не было.

Кажется, Вам тогда удалось суметь самостоятельно найти обходной путь путём запуска из отдельных потоков для скрытия диалогов прогресса по умолчанию. Если этот путь по-прежнему работает, то Вам нужно создать собственный диалог прогресса через PySide, в который передавать необходимые значения. Например, логически разбить его по числу входящих задач и для каждой этой части получать прогресс через callback задачи Metashape.
Например, в данном случае дать 75% задаче импорта облаков точек, а 25% - объединению, причём импорт разбить ещё на N частей по числу импортируемых облаков.
Best regards,
Alexey Pasumansky,
Agisoft LLC

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Спасибо. Понятно. Я просто думал, что раз использую подход с использованием Тасков, может можно засунуть все в один прогресс бар. Сделаю, значит, как делал. Свой виджет с Qthread и очередью.
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет