Как правильно изменить значение "Отметка поверхности в точке вставки" колодца

Автор Тема: Как правильно изменить значение "Отметка поверхности в точке вставки" колодца  (Прочитано 3337 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет.
При программном изменении свойства "Отметка поверхности в точке вставки" (SurfaceAdjustmentValue) Civil принимает значение, но не происходит требуемых перестроений в самом чертеже
Меняю значение так:
Код - C# [Выбрать]
  1. using (AcadHelpers.Document.LockDocument())
  2. using (Transaction tr = AcadHelpers.Database.TransactionManager.StartTransaction())
  3. {
  4.     var structure = tr.GetObject(_objectId, OpenMode.ForWrite) as Structure;
  5.     if (structure != null)
  6.         structure.SurfaceAdjustmentValue = value;
  7.     tr.Commit();
  8. }
  9. Autodesk.AutoCAD.Internal.Utils.FlushGraphics();
Если менять это значение через окно свойств в самом Civil, то там автоматически меняется и значение "Отметка края при вставке". При этом на профиле перестраивается графика. Но в моем случае графика не перестраивается.
Могу предположить, что либо нужно вызвать какой-то метод, либо менять еще какое-то свойство. Но вот какое?

Отмечено как Решение Александр Пекшев aka Modis 14-12-2017, 18:07:04

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Цитировать
Как правильно изменить значение "Отметка поверхности в точке вставки" колодца
Как-то название совсем не в тему. Отметка поверхности в точке вставки колодца изменяется независимо от колодца, если изменяется сама поверхность. Но вопрос-то совсем о другом.
Цитировать
Но в моем случае графика не перестраивается.
Могу предположить, что либо нужно вызвать какой-то метод, либо менять еще какое-то свойство. Но вот какое?
Тут всё не так просто, потому что есть ещё такое свойство, как Structure.AutomaticRimSurfaceAdjustment. Если оно установлено в false, то верх колодца задаётся жёстко отметкой, а не привязывается к поверхности. Второй момент (который, на самом деле, должен быть первым) - надо проверять, а есть ли вообще у колодца ссылочная поверхность? Ну и последнее - действительно глючат эти свойства задания корректировки поверхности, глубины отстойника и т.п. В том плане, что не происходит автоматическое обновление колодца. Такое поведение свойств и методов для Civil - обычное дело, к сожалению. Приходится дёргать связанные свойства: запоминать предыдущее значение, выставлять новое, возвращать исходное...
В данном случае, у меня есть такое решение для корректировки поверхности колодца (надо же было так перевести!):
Код - C# [Выбрать]
  1. if (structure != null
  2.     && structure.RefSurfaceId.CheckObjectIdFor<TinSurface>()
  3.     && structure.AutomaticRimSurfaceAdjustment)
  4. {
  5.     try
  6.     {
  7.         structure.UpgradeOpen();
  8.         structure.SurfaceAdjustmentValue = doubleRes.Value;
  9.         structure.AutomaticRimSurfaceAdjustment = false;        
  10.         structure.AutomaticRimSurfaceAdjustment = true;          
  11.     }
  12.     catch(System.Exception ex)
  13.     {
  14.         Debug.WriteLine(ex.Message);
  15.         Debug.WriteLine(ex.StackTrace);
  16.         ed.WriteMessage
  17.             ("\nНе удалось задать корректировку для колодца {0}",
  18.             structure.Name);
  19.     }
  20. }
  21.  
То есть, надо "подёргать" свойство AutomaticRimSurfaceAdjustment, тогда графика колодца обновляется.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Дмитрий Загорулькин, спасибо. У меня мелькала мысль, что нужно это значение попробовать поменять туда-сюда. Буду пробовать

Про перевод - да, дурацкий перевод =) Это мне в ТЗ на разработку так прописали

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Про перевод - да, дурацкий перевод =) Это мне в ТЗ на разработку так прописали
Я имел в виду, что так перевели криво те, кто занимался переводом Civil. Нормально эти значения должны называться примерно как-то так: "Отступ верха колодца от поверхности" и "Автоматическая корректировка верха колодца по поверхности", а не "Значение корректировки поверхности" и "Автоматическая корректировка поверхности".


Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Дмитрий Загорулькин, еще раз спасибо. Костыль сработал

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Пожалуйста! Ещё бы не сработал - это надёжный костыль :)
Копировал код из приложения, которое уже года 3 работает без нареканий по этому функционалу.