Как создать спиральный RebarShape с помощью метода RebarShapeDefinitionByArc?

Автор Тема: Как создать спиральный RebarShape с помощью метода RebarShapeDefinitionByArc?  (Прочитано 1365 раз)

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

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

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
Метод:
public RebarShapeDefinitionByArc(
   Document doc,
   double height,
   double pitch,
   int baseFinishingTurns,
   int topFinishingTurns
)

Полученный RebarShape я пытаюсь использовать в методе CreateFromRebarShape, но получаю ошибку
С существующим RebarShape всё получается

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Какую конкретно ошибку? Пробовал параметры метода взять из существующего? Пробовал перед CreateFromRebarShape doc.Regenerate() выполнить? В отдельных транзакциях?

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

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
ошибка

Код - Visual Basic [Выбрать]
  1.     Private Function CreateRebarShape(document As Document)
  2.         Dim sp1 = New RebarShapeDefinitionByArc(document, 5, 0.5, 1, 1)
  3.         Return RebarShape.Create(document, sp1, Nothing, RebarStyle.Standard, StirrupTieAttachmentType.ExteriorFace,
  4.                                  0, RebarHookOrientation.Left, 0, RebarHookOrientation.Left, 0)
  5.     End Function
  6.  
  7.     Private Function CreateRebar5(document As Document, host As FamilyInstance, barType As RebarBarType, rShape As RebarShape)
  8.         Dim origin As New XYZ(0, 0, -5) ''
  9.        Return Rebar.CreateFromRebarShape(document, rShape, barType, host, origin, XYZ.BasisX, XYZ.BasisY)
  10.     End Function

Вот тоже самое спрашивали

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
В общем, разобрался. Нужно доопределить constraint-ы формы. Для этого добавляем параметр и назначаем constraint. Т.е.
Код - C# [Выбрать]
  1. sp1.AddParameter(prmId, defaultDiameter);
  2. sp1.AddConstraintDiameter(prmId, RebarShapeArcReferenceType.External)

prmId нужно взять из существующего общего параметра, который есть в модели, что-то вроде SharedParameterElement.Lookup(doc, new Guid("451baa80-7503-48d3-8c39-ff293fe0bad9")).Id

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

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
класс, а я пытался создать новый
спираль появилась, но при попытке её редактирования (как семейства)  - выскакивает ошибка

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

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