Сообщество программистов Autodesk в СНГ
ADN Club => VBA => Тема начата: Дамир от 09-07-2015, 10:53:43
-
Доброго времени, эксперты!
Задача состоит в том, чтобы отследить время редактирования чертежа. В одном приложении AutoCAD может быть открыто несколько чертежей. В свойствах (Файл/Свойства чертежа) чертежа (не приложения) во вкладке "Статистка" нашел пункт "Общее время редактирования". Провел эксперимент с двумя чертежами. Оказалось, что общее время редактирования на самом деле это время между открытием чертежа и закрытием. Т.е. чертеж находящийся в неактивном режиме в момент просмотра свойств покажет общее время, а не время именно редактирования, или хотя бы время активного режима.
Тестировал надстройки для отслеживания времени, но это тоже свойство с более красивым интерфейсом.
Вопрос 1: можно ли как то изменить правило отслеживания "общего времени" в этом свойстве? Или прошу подсказать иной способ фиксации времени активного (редактируемого) чертежа?
Также обнаружил, что при выполнении команды "ВРЕМЯ" или "TIME" получаю более расширенную информацию. Вопрос 2: как программно считать ее?
Заранее премного благодарен
-
Вопрос 1: можно ли как то изменить правило отслеживания "общего времени" в этом свойстве?
Нет. И вообще советую отказаться от этой задачи. Этот вопрос неоднократно обсуждался на dwg.ru и caduser.ru
Проектировщик открыл чертеж и пошел курить/обедать и т.д. Что будет означать время редакторования?
-
абсолютно с вами согласен. Задача - запрос клиента. Поэтому и должен придумать решение. Если бы приложение фиксировало время именно по активности пользователя - другое дело. Писать свой обработчик событий на чертеже, коих может быть 50 открытых, не хочется.
Спасибо
-
Остаётся или убедить клиента в непродуктивности его идеи, или писать свой обработчик. Причем, подозреваю, что возможностей VBA будет недостаточно.
-
Возможностей VBA действительно будет достаточно, проблема в возможной перегрузке AutoCAD'a обработчиком. Может быть открыто до 50 чертежей. Каждые 5-10 минут запроса активности провереки изменения на конкретном чертеже - это серьезно)
-
Запрос активности можно делать хоть каждую секунду. А вот находить изменения - это конечно перебор. Впрочем, есть ещё события базы данных (добавление/изменение/удаление примитивов). Что из этого есть в VBA я на память не помню, а компа со справкой рядом нет.
-
Спасибо за советы, Александр. Постараюсь что-нибудь придумать.
-
Заодно уточни у клиента что он понимает под "общим временем редактирования". Могут быть совершенно неочевидные нюансы.
-
Клиенту необходимо фиксировать время только редактирования файлов, т.е. суммарное время изменения файла. Диапазон между открытием и закрытием не интересен.
-
Я, конечно, извиняюсь, а если был запущен какой-то макрос, который блокирует доступ к чертежу этак на полчаса - эти полчаса считать как время редактирования? А пакетная печать - это попадает под понятие редактирования? :) А открытие внешней ссылки в контекстном режиме - это редактирование текущего чертежа или чертежа внешней ссылки? В общем, вопросов многовато...
-
Алексей, это идея принадлежит клиенту. Я не сторонник подобного контроля за деятельностью сотрудников
-
Так я и не спорю :) Я бы помимо всего остального еще и эти вопросы заказчику задал. ;)
-
Добавлю: иногда бывает так, что заказчик либо отказывается от идеи, либо приводит ее к более-менее внятному виду.
P.S. Как общая идея: повесить обработчик на смену активного документа, получить имя и путь текущего документа, записать соответствующие данные во внешнюю БД. А потом уже средствами БД строить отчеты. Но лично мне подобное решение не нравится в силу многих причин.
-
Извините что влезаю, но работник не только чертить должен, но и думать. Считать какие то параметры и конструкции, конструировать и прорабатывать варианты, как с этим соотносится продуктивность в виде времени редактирования, понять вообще невозможно.
А если так уж интересно, чем заняты сотрудники, то существует масса программ, которые делают скриншоты экрана с заданным интервалом и считают сколько времени открыта та или иная программа.