Как изменить диаметр загиба арматурного стержня

Автор Тема: Как изменить диаметр загиба арматурного стержня  (Прочитано 4734 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ivmaxАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 70
  • Карма: 3
Здравствуйте! Подскажите пожалуйста как изменить параметры отмеченные на скрине?
Пробовал изменять параметр BuiltInParameter.REBAR_BAR_STIRRUP_BEND_DIAMETER и через RebarBendData, не получилось.


Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Пробовал изменять параметр BuiltInParameter.REBAR_BAR_STIRRUP_BEND_DIAMETER и через RebarBendData, не получилось.
А что именно не получилось? Ошибка или просто ничего не происходит. В любом случае, код, который вы пробовали применить, в студию.

Оффлайн ivmaxАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 70
  • Карма: 3
Пробовал следующие варианты:
Код - C# [Выбрать]
  1.  void test1 (Document doc, Rebar r)
  2.         {
  3.             bool result;
  4.             Transaction tr = new Transaction(doc, "s");
  5.             tr.Start("ss");
  6.            // Parameter p = r.get_Parameter(BuiltInParameter.REBAR_BAR_STIRRUP_BEND_DIAMETER);  - Ссылка на объект не указывает на экземпляр объекта
  7.             Parameter p = r.get_Parameter(BuiltInParameter.REBAR_INSTANCE_BEND_DIAMETER);
  8.             result = p.Set(46 / 304.8); // Возвращает false
  9.             TaskDialog.Show("Title", result.ToString());
  10.             tr.Commit();
  11.         }

и

Код - C# [Выбрать]
  1. void test2 (Document doc, Rebar r)
  2.         {          
  3.             Transaction tr = new Transaction(doc, "s");
  4.             tr.Start("ss");
  5.             RebarBendData rbd = r.GetBendData();
  6.             rbd.BendRadius = 23 / 304.8;
  7.             rbd.BarDiameter = 25 / 304.8;
  8.             rbd.HookBendRadius = 35 / 304.8;
  9.             tr.Commit();
  10.         }

в test1() метод Set() возвращает false, в test2() ничего не меняется.
« Последнее редактирование: 16-11-2016, 11:42:22 от Виктор Чекалин »

Отмечено как Решение ivmax 16-11-2016, 13:37:55

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
ivmax,
Параметры, отмеченные на скриншоте, являются параметрами типоразмера арматуры. В коде вы пытаетесь изменить параметр экземпляра.

Типоразмер арматуры задается классом RebarBarType, у которого есть нужные вам методы - .StandardBendDiameter и StandardHookBendDiameter.
Чтобы добраться до этого типоразмера, нужно получить тип объекта Rebar:
Код - C# [Выбрать]
  1. var rebarBarType = r.Document.GetElement(r.GetTypeId()) as RebarBarType;

Оффлайн ivmaxАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 70
  • Карма: 3
Спасибо! Все работает.