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

ADN Club => Revit API => Тема начата: enot от 26-03-2019, 21:32:41

Название: Параллельность элементов
Отправлено: enot от 26-03-2019, 21:32:41
Есть ли метод апи, позволяющий проверить параллельность двух элементов (например труб)?
Название: Re: Параллельность элементов
Отправлено: Александр Игнатович от 26-03-2019, 21:42:13
1. Получить Element.Location as LocationCurve, если результат null - значит элемент не на основе линии
2. locationCurve.Curve as Line, если результат null - значит элемент не прямой
3. cuve1.Direction.CrossProduct(curve2.Direction).IsAlmostEqualTo(XYZ.Zero) - если выполняется, значит паралелльны
Название: Re: Параллельность элементов
Отправлено: enot от 26-03-2019, 21:59:39
cuve1.Direction.CrossProduct(curve2.Direction).IsAlmostEqualTo(XYZ.Zero)
Векторное произведение коллениарных векторов равно нулю :)
Супер,  благодарю!

еще попробовал так,
 
Код - C# [Выбрать]
  1.  bool isParallel =(Pipe1.Location as LocationCurve).Curve as Line).Direction.IsAlmostEqualTo((Pipe1.Location as LocationCurve).Curve as Line).Direction)
вроде, результат тот же.
Название: Re: Параллельность элементов
Отправлено: Александр Игнатович от 26-03-2019, 22:07:13
bool isParallel =(Pipe1.Location as LocationCurve).Curve as Line).Direction.IsAlmostEqualTo((Pipe1.Location as LocationCurve).Curve as Line).Direction)

Так не будет работать в случае противоположно направленных векторов. Ну и, кстати, nullreference exception никто не отменял
Название: Re: Параллельность элементов
Отправлено: enot от 26-03-2019, 22:11:16
Так не будет работать в случае противоположно направленных векторов
О, как...

nullreference exception
если у меня все элементы трубы - то в любом случае получим LocationCurve или вы не об этом
Название: Re: Параллельность элементов
Отправлено: Александр Игнатович от 26-03-2019, 22:27:38
О, как...

Ну как бы да, потому и векторное произведение.

если у меня все элементы трубы
Ну если так ограниченно, тогда норм
Название: Re: Параллельность элементов
Отправлено: enot от 26-03-2019, 23:05:52
А можно ли аналогично проверить на перпендикулярность?
Или для этого уже нужно использовать, например скалярное произведение двух векторов, которое должно быть равно нулю?
Название: Re: Параллельность элементов
Отправлено: Александр Игнатович от 26-03-2019, 23:55:29
скалярное произведение двух векторов, которое должно быть равно нулю?

в точку!