После этого отрабатывается метод, назначенный на событие завершения команды:А что в этом методе? Может что-то модифицируешь в чертеже?
Код - C# [Выбрать]
doc.CommandEnded
Александр, в данном конкретном случае - нет. Для чистоты эксперимента, я сейчас закомментирую все тело этого метода и еще раз проверю.Возможно не в этом коде, а в каком-то другом, который тоже выполняется в одном из событий (в твоём другом коде, в коде Civil 3D, в коде другого приложения).
Возможно не в этом коде, а в каком-то другом, который тоже выполняется в одном из событий (в твоём другом коде, в коде Civil 3D, в коде другого приложения).Я отслеживал в режиме отладки и в методе DrawableOverrule.ViewportDraw() у меня стояла точка останова и я попадал туда только после завершения метода обработки завершения команды. Как отследить выполнение других функций и методов, на которые не попасть в режиме отладки, я не знаю :(
Как отследить выполнение других функций и методов, на которые не попасть в режиме отладки, я не знаюНикак. Но я не понимаю в чем проблема. Ну вызывается ViewportDraw многократно. Ну и что?
Но я не понимаю в чем проблема. Ну вызывается ViewportDraw многократно. Ну и что?Дело в том, что дважды выполняется вычерчивание объектов, и на это затрачивается в два раза больше времени, чем надо. При работе с большими объектами это очень сказывается на скорости работы с чертежом. В моем случае переключение с модели на лист или любая регенерация чертежа выполняется около 30 секунд. Для пользователей это крайне неудобно, вот и была поставлена задача оптимизировать модуль.
Дело в том, что дважды выполняется вычерчивание объектов, и на это затрачивается в два раза больше времени, чем надо.Зачем ты их рисуешь по два раза? Отмечай у себя, что уже их нарисовал и не рисуй повторно.
А может быть ты в DrawableOverrule.ViewportDraw модифицируешь базу и из-за этого повторно вызывается DrawableOverrule.ViewportDraw ?Хм... убрал