Поворот CurveArray

Автор Тема: Поворот CurveArray  (Прочитано 5248 раз)

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Поворот CurveArray
« : 09-11-2020, 17:19:09 »
И снова здрасте. Пытаюсь получить профиль горизонтальной балки, получаю CurveArray, но профиль получаю горизонтальный, но мне нужно получить вертикальный. Пытался сделать с помощью CreateRotation, но в таком случае они сливаются в одну линию, но не поворачиваются, то есть те линии, которые должны быть вертикальные, они равны 0 и по сути это точки... Как можно получить  профиль так, как он расположен в проекте? Допустим если балка горизонтальная, то профиль должен получитсья вертикальный. Никак не могу сообразить. Заранее спасибо.


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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Поворот CurveArray
« Ответ #1 : 09-11-2020, 17:53:27 »
Да вроде как просто использовать FamilyInstance.GetTotalTransform()

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Поворот CurveArray
« Ответ #2 : 09-11-2020, 18:11:11 »
Я его использую как раз как рекомендовали в прошлой теме, они располагаются корректно, но к сожалению не поворачиваются

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Поворот CurveArray
« Ответ #3 : 09-11-2020, 18:18:48 »
Значит, оно у тебя в семействе самом так располагается

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Поворот CurveArray
« Ответ #4 : 09-11-2020, 18:35:05 »
Да, в данном случае, я получаю профиль выдавливания (SweptProfile), но он в самом семействе вертикально стоит. Или это не то?


Отмечено как Решение user32 10-11-2020, 11:52:28

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Поворот CurveArray
« Ответ #5 : 10-11-2020, 11:24:26 »
Похоже, что вне зависимости от расположения в семействе в Swept profile инстанса, профиль всегда лежит в плоскости X0Y. Но есть driving curve. Вот быстрокод на python shell-е, насколько я понял твою задачу:
Код - Python [Выбрать]
  1. beam = selection[0]
  2.  
  3. sweptProfile = beam.GetSweptProfile()
  4.  
  5. derivatives = sweptProfile.GetDrivingCurve().ComputeDerivatives(0.5, True)
  6.  
  7. plane = Plane.CreateByNormalAndOrigin(derivatives.BasisX.Normalize(), derivatives.Origin)
  8.  
  9. transform = Transform.Identity
  10. transform.Origin = plane.Origin
  11. transform.BasisX = plane.XVec
  12. transform.BasisY = plane.YVec
  13. transform.BasisZ = plane.Normal
  14.  
  15. profile = sweptProfile.GetSweptProfile()
  16.  
  17. tx = Transaction(doc, "swept profile")
  18. tx.Start()
  19.  
  20. sketchPlane = SketchPlane.Create(doc, plane)
  21.  
  22. for curve in profile.Curves:
  23.         transformedCurve = curve.CreateTransformed(transform)
  24.         doc.Create.NewModelCurve(transformedCurve, sketchPlane)
  25.  
  26. tx.Commit()




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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Поворот CurveArray
« Ответ #6 : 10-11-2020, 11:40:05 »
Спасибо попробую