Как правильно изменить значение "Отметка поверхности в точке вставки" колодца
Как-то название совсем не в тему. Отметка поверхности в точке вставки колодца изменяется независимо от колодца, если изменяется сама поверхность. Но вопрос-то совсем о другом.
Но в моем случае графика не перестраивается.
Могу предположить, что либо нужно вызвать какой-то метод, либо менять еще какое-то свойство. Но вот какое?
Тут всё не так просто, потому что есть ещё такое свойство, как Structure.AutomaticRimSurfaceAdjustment. Если оно установлено в false, то верх колодца задаётся жёстко отметкой, а не привязывается к поверхности. Второй момент (который, на самом деле, должен быть первым) - надо проверять, а есть ли вообще у колодца ссылочная поверхность? Ну и последнее - действительно глючат эти свойства задания корректировки поверхности, глубины отстойника и т.п. В том плане, что не происходит автоматическое обновление колодца. Такое поведение свойств и методов для Civil - обычное дело, к сожалению. Приходится дёргать связанные свойства: запоминать предыдущее значение, выставлять новое, возвращать исходное...
В данном случае, у меня есть такое решение для корректировки поверхности колодца (надо же было так перевести!):
if (structure != null
&& structure.RefSurfaceId.CheckObjectIdFor<TinSurface>()
&& structure.AutomaticRimSurfaceAdjustment)
{
try
{
structure.UpgradeOpen();
structure.SurfaceAdjustmentValue = doubleRes.Value;
structure.AutomaticRimSurfaceAdjustment = false;
structure.AutomaticRimSurfaceAdjustment = true;
}
catch(System.Exception ex)
{
Debug.WriteLine(ex.Message);
Debug.WriteLine(ex.StackTrace);
ed.WriteMessage
("\nНе удалось задать корректировку для колодца {0}",
structure.Name);
}
}
То есть, надо "подёргать" свойство AutomaticRimSurfaceAdjustment, тогда графика колодца обновляется.