Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: Alex25 от 28-12-2020, 13:56:35
-
Добрый день. Подскажите, лучший способ, как можно посчитать время, когда в окне Revit не происходит никаких действий. Через какое событие это лучше было бы делать (Idling,DocumentChanged )?
-
Эффективные менеджеры подъехали?
Что считать неактивностью? Отсутствие изменений в модели? Или вообще каких-бы то ни было действий? Чел открывает разные модели, виды, но не вносит изменений - неактивность?
Как будешь считать, если 2 Revit-а открыто, в одном что-то делается, а во второй - так, посматривают иногда?
-
Стало интересно, как посчитать "простой".
Пока ищу в каком направление двигаться.
Неактивность - когда мышка находится в Revit окне и не двигается. Если два Revit файла открыты, то я собираю инфу по каждому файлу отдельно. Например,
- открываю файл - записал время
- синхронизировался - записал время.
За это время просчитать, когда мышка находилась в Revit и была неактивна, самое подходящее событие Idling.
-
Так не трогать Revit, обойтись системными средствами. Idling - тебе будет или процессор кушать, если SetRaiseWithoutDelay вызовешь, или же, наоборот, вызываться с непонятными интервалами, плюс есть ещё режимы, в которых она не работает. Например, в режиме создания или редактирования некоторых объектов, в режиме редактирования групп (вроде бы).
Я бы посмотрел в сторону WinAPI, там есть, например, SetWinEventHook для отслеживания событий. Отдельной программкой в автозагрузке или вообще сервисом Windows.
-
Спасибо за информацию, а какой самый простой способ высчитать время "простоя"? Например, в Idling записать счетчик ++idling_time и выводить в конце
TimeSpan idling_time = new TimeSpan(idling_counter).TotalSeconds;
-
И что будет считать этот код?
Тогда уж по твоим хотелкам - сохраняем в идлинге текущую позицию мыши и текущее время, в следующем идлинге, если позиция мыши не изменилась, добавляем прошедший с сохраненного времени интервал к чему-то, перезаписываем позицию мыши и текущее время. И тут лайфхак - включаем режим редактирования перекрытия, событие вообще не запускается