Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: enot от 13-02-2019, 10:49:20
-
как определить Normal для ViewSection?
Насколько я понимаю, если на плане делаем горизонтальный, либо вертикальный разрез , то у него Normal будет XYZ.BasisX , либо XYZ.BasisY (но если сделать произвольный по диагонали разрез - какой у него тогда будет Normal ?)
Пробовал как то так:
var View_Normal = doc.ActiveView.ViewDirection.Normalize()
но что то не то получается
-
(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)
-
ViewDirection всегда направлен в сторону пользователя, как указал Александр. CropBox.Transform.BasisZ - куда указывает разрез, в данном случае, они всегда в противоположных направлениях.
У разрезов есть ограничения, направление либо произвольное в плоскости X0Y, либо XYZ.BasisZ, либо -1*XYZ.BasisZ
-
ViewDirection - вектор, который показывает направление вашего взгляда на модель на текущем виде. Но ИЗ монитора на НАС
Это понимание мне и было нужно
Соответственно, на разрезе вектор от нас это
var View_Normal = doc.ActiveView.ViewDirection.Negate() ! )
направление либо произвольное в плоскости X0Y
здесь имеется ввиду (выделенное жирным) :
Насколько я понимаю, если на плане делаем горизонтальный, либо вертикальный разрез , то у него Normal будет XYZ.BasisX , либо XYZ.BasisY (но если сделать произвольный по диагонали разрез - какой у него тогда будет Normal ?)