Изменить размеры арматурного стержня до вставки

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

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

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Можно ли например для П-образного стержня (RebarShape 20) сначала изменить размеры А и Б, а потом его вставить в модель?
Или сначала его нужно вставить, закрыть транзакцию, а только потом, снова его найти, открыть транзакцию и поменять эти параметры?

Если я делаю это в рамках одной транзакции, то стержень ставится (с нужными размерами), но не в ту точку (XYZ origin), которую я указываю куда мне надо.
Создаю стержень вот по этому способу
Код - C# [Выбрать]
  1. public static Rebar CreateFromRebarShape(Document doc, RebarShape rebarShape, RebarBarType barType, Element host, XYZ origin, XYZ xVec, XYZ yVec);

Если же ставлю стержень, но без изменения размеров, то он ставится куда нужно, но тогда надо потом искать этот стержень и менять его параметры.
« Последнее редактирование: 04-04-2020, 15:26:58 от Александр Ривилис »

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Так метод тебе возвращает созданный стержень, зачем его искать?

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Тогда что не так?
Код - C# [Выбрать]
  1.                 XYZ startPosition = new XYZ(
  2.                     curve.GetEndPoint(0).X,
  3.                     curve.GetEndPoint(0).Y,
  4.                     curve.GetEndPoint(0).Z);
  5.  
  6.        Rebar bar = null;
  7. bar = Rebar.CreateFromRebarShape(
  8.                        document,
  9.                        _rebarShape,
  10.                        barType,
  11.                        item,
  12.  startPosition ,
  13. normalcross,
  14. lineNormal   );
  15.  
  16.  
  17.     Parameter prA = bar.LookupParameter("A");
  18.                     if (prA != null)
  19.                         prA.Set(2);
  20.  
  21.  


Если закомментировать prA. То стержень становится в нужное место.
Если с prA, то сдвигается

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
А если руками поставить значение? После того, как он был создан?

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Тогда всё нормально. Я его создал - он на месте. Я у него поменял - всё поменялось и он на месте
Ревит 2019

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Сейчас приходится. Поставить не нужного размера. Потом другой командой уже найти и поменять. Конечно проблема не большая, но вдруг чего я неправильно делаю. И можно исправить

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Тогда можешь попробовать 2 варианта.

1) после создания вызвать document.Regenerate()
2) разделить на 2 транзакции (объединив, например, с использованием TransactionGroup

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Спасибо. Попробую