Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: ivmax от 09-11-2016, 23:27:24

Название: Как изменить диаметр загиба арматурного стержня
Отправлено: ivmax от 09-11-2016, 23:27:24
Здравствуйте! Подскажите пожалуйста как изменить параметры отмеченные на скрине?
Пробовал изменять параметр BuiltInParameter.REBAR_BAR_STIRRUP_BEND_DIAMETER и через RebarBendData, не получилось.
(https://s15.postimg.org/i53rh5bjb/2016_11_09_23_20_50.jpg) (https://postimg.org/image/i53rh5bjb/)
Название: Re: Как изменить диаметр загиба арматурного стержня
Отправлено: Виктор Чекалин от 15-11-2016, 10:25:31
Пробовал изменять параметр BuiltInParameter.REBAR_BAR_STIRRUP_BEND_DIAMETER и через RebarBendData, не получилось.
А что именно не получилось? Ошибка или просто ничего не происходит. В любом случае, код, который вы пробовали применить, в студию.
Название: Re: Как изменить диаметр загиба арматурного стержня
Отправлено: ivmax от 16-11-2016, 11:34:42
Пробовал следующие варианты:
Код - 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() ничего не меняется.
Название: Re: Как изменить диаметр загиба арматурного стержня
Отправлено: Виктор Чекалин от 16-11-2016, 12:06:53
ivmax,
Параметры, отмеченные на скриншоте, являются параметрами типоразмера арматуры. В коде вы пытаетесь изменить параметр экземпляра.

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