При перерисовке труб и колодцев столкнулся с очередной проблемой. Если выполнить полную перерисовку элемента сети на виде профиля, то теряется динамика между этим элементом и его метками. Это проявляется при изменении масштаба чертежа (что влечет за собой изменение масштаба вида профиля), при перемещении элемента на плане... В общем - при любом действии, которое вызывает изменение положение объекта на виде профиля.
Получается, что отрисовка меток колодцев и труб завязана на отрисовку геометрии колодцев и труб. А если я выполняю полную перерисовку (не вызываю в коде метода base.WorldDraw или base.ViewportDraw), то метки не перерисовываются. Регенерация не спасает. Пробовал принудительно вызывать для них методы Draw и ViewportDraw - не помогает. Пробовал переопределять методы WorldDraw и ViewportDraw в разных сочетаниях (только одно, только другое, и то и другое...) - тоже не спасает. Может быть, подкините еще какую-нибудь идею?
Извините, вам запрещён просмотр содержимого спойлеров.
Извините, вам запрещён просмотр содержимого спойлеров.
Да, колодцы сами перерисовываются, но поведение меток - как на видео.
Если интересно:
Аналог регена по Вашему способу - в методе ProfileViewPartsRegen. Заменял вызов в методе Execute2Regen.
Извините, вам запрещён просмотр содержимого спойлеров.
Ответ ADN: Похоже, обновление метки элемента сети на виде профиля (PartProfileLabel) вызывается через отрисовку элемента сети на виде профиля (ProfileViewPart). Так что, если не вызывать base.WorldDraw (...) для ProfileViewPart, его метки не обновятся. Не удалось найти какого-то способа обойти это.
На самом деле, получилось найти приемлемый вариант. Можно воспользоваться простым трюком. Отключить в настройках стиля всю отрисовку элемента на виде профиля. И тогда, можно спокойно вызывать base.WorldDraw (...). Не смотря на то, что отрисовывать этому методу нечего, метки обновляются.
Ну и, чтобы вручную не настраивать кучу стилей, можно использовать код, типа такого:
Извините, вам запрещён просмотр содержимого спойлеров.