Доступ к направлению вида спереди детали / сборки.

Автор Тема: Доступ к направлению вида спереди детали / сборки.  (Прочитано 1758 раз)

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

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

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Доброго времени суток, уважаемые форумчане. Помогите пожалуйста решить данную задачу. Мне необходимо в каком-то виде обратиться к направлению, которое задано "видом спереди" в детали или сборке, чтоб,ы сравнивая с ним, корректировать направление нормали рабочей плоскости. Не могу понять как это сделать. Метод View.SetFront() вроде как имеется, а вот как его "get" не понятно.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Оно?
View.Camera.ViewOrientationType

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Оно?
View.Camera.ViewOrientationType
По идее да, спасибо. Но только я не могу понять, как воспользоваться этим. Написал такой вот перебор:
Код - C# [Выбрать]
  1. private void ViewOrientation (object sender, EventArgs e)
  2. {
  3.     Inventor.AssemblyDocument oDoc = (Inventor.AssemblyDocument) oApp.ActiveDocument;
  4.     Inventor.AssemblyComponentDefinition oCD = oDoc.ComponentDefinition;
  5.  
  6.     Inventor.View oView = null;
  7.     foreach (Inventor.View view in  oDoc.Views)
  8.     {
  9.         if (view.Camera.ViewOrientationType == Inventor.ViewOrientationTypeEnum.kFrontViewOrientation)
  10.         {
  11.             oView = view;
  12.         }
  13.     }
  14. }

Но он не находит нужного вида. Нет идей почему?
В программировании я новичок...но ненадолго! ;)


Отмечено как Решение R.I.Chernov 26-02-2021, 23:59:30

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Мож Экинс прояснит
Спасибо, Михаил, нашел в статье наводку. В итоге возникло такое решение: если установить вид сверху, то свойство Camera.UpVector возвращает юнит вектор, который соответствует направлению взгляда на вид спереди. Код в итоге такой вот:
Код - C# [Выбрать]
  1. private void ViewOrientation ()
  2. {
  3.     Inventor.AssemblyDocument oDoc = (Inventor.AssemblyDocument) oApp.ActiveDocument;
  4.     Inventor.AssemblyComponentDefinition oCD = oDoc.ComponentDefinition;
  5.     Inventor.Camera Camera = oApp.ActiveView.Camera;
  6.  
  7.     // устанавливаем вид сверху
  8.     Camera.ViewOrientationType = Inventor.ViewOrientationTypeEnum.kTopViewOrientation;
  9.  
  10.     // этот вектор имеет направление, как и вид спереди
  11.     Inventor.UnitVector unitVector = Camera.UpVector;
  12.  
  13.     Debug.WriteLine(Camera.ViewOrientationType);
  14.     Debug.WriteLine($"Вектор => ( {unitVector.X} , {unitVector.Y} ,{unitVector.Z})");
  15.     // иногда координаты отличаются от истинных значений в 16 порядке после запятой -> вероятно стоит округлять.
  16. }
В программировании я новичок...но ненадолго! ;)