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

ADN Club => Revit API => Тема начата: enot от 13-02-2019, 10:49:20

Название: SectionView => Normal
Отправлено: enot от 13-02-2019, 10:49:20
как определить Normal для ViewSection?

Насколько я понимаю, если на плане делаем горизонтальный, либо вертикальный разрез , то у него Normal будет XYZ.BasisX , либо XYZ.BasisY  (но если сделать произвольный по диагонали разрез - какой у него тогда будет Normal ?)

Пробовал как то так:
var View_Normal = doc.ActiveView.ViewDirection.Normalize()
но что то не то получается
Название: Re: SectionView => Normal
Отправлено: Александр Пекшев aka Modis от 13-02-2019, 11:16:53
(https://i.postimg.cc/G80mx6yp/2019-02-13-11-07-58-Autodesk-Revit-2017-2-1.png) (https://postimg.cc/G80mx6yp)

ViewDirection - вектор, который показывает направление вашего взгляда на модель на текущем виде. Но ИЗ монитора на НАС
UpDirection - вектор, показывающий направление вверх в модели. По идее везде должен быть одинаков
RightDirection - направление вправо относительно вида

Вот смотрите план с разрезом, свойства которого на первом скриншоте:

(https://i.postimg.cc/Fkrp1WGP/2019-02-13-11-12-52-Autodesk-Revit-2017-2-01.png) (https://postimg.cc/Fkrp1WGP)

Разрез сделан горизонтально на плане и смотрю я "снизу вверх" относительно плана. Т.е. направление направо - это вдоль оси Х (как видим значение RightDirection == (1, 0, 0)). При этом мой взгляд на разрезе будет направлен вдоль оси Y. А так как значение ViewDirection показывает направление ИЗ монитора на НАС, то и значение ViewDirection == (0, -1, 0)
Название: Re: SectionView => Normal
Отправлено: Александр Игнатович от 13-02-2019, 11:31:16
ViewDirection всегда направлен в сторону пользователя, как указал Александр. CropBox.Transform.BasisZ - куда указывает разрез, в данном случае, они всегда в противоположных направлениях.

У разрезов есть ограничения, направление либо произвольное в плоскости X0Y, либо XYZ.BasisZ, либо -1*XYZ.BasisZ
Название: Re: SectionView => Normal
Отправлено: enot от 13-02-2019, 11:34:10
ViewDirection - вектор, который показывает направление вашего взгляда на модель на текущем виде. Но ИЗ монитора на НАС
Это понимание мне и было нужно
Соответственно, на разрезе вектор от нас это
 var View_Normal = doc.ActiveView.ViewDirection.Negate() ! )

направление либо произвольное в плоскости X0Y
здесь имеется ввиду (выделенное жирным) :
Насколько я понимаю, если на плане делаем горизонтальный, либо вертикальный разрез , то у него Normal будет XYZ.BasisX , либо XYZ.BasisY  (но если сделать произвольный по диагонали разрез - какой у него тогда будет Normal ?)