Информация о некоторых объектах

Вся модель (документ) Navisworks доступна через COM-оболочку State. С её помощью можно получать доступ к:

  • Раздел (Partition), образующий корень графа сцены модели. Если несколько файлов были объединены, корневой раздел будет иметь дочерние разделы, каждый из которых будет представлять один из загруженных файлов;
  • Текущему виду AnonView;
  • Текущему виду в плане AnonView (Вид - Окна - Вид в плане);
  • Текущему виду в сечении AnonView (Вид - Окна - Вид в сечении);
  • Текущим параметрам анимации модели;
  • Текущему выбору объектов;
  • Коллекции сохраненных видов (Вид - Окна - Сохраненные точки обзора);
  • Коллекции источников освещения сцены (?); A collection of scene Lights.
  • Коллекции наборов выбора объектов (Вид - Окна - Наборы);
  • Прочим свойствам сцены;
  • Коллекции плагинов, которые расширяют и изменяют интерфейс Navisworks;

Представлено COM-оболочкой nwOpState (наследует функции от 11 разных COM-оболочек с числовыми суффиксами и телом InwOpState);

Partition

Корневой узел графа сцены, созданного путем преобразования одного исходного файла или модели. Разделами описываются корень текущей модели Navisworks, каждый файл, добавленный в модель, внешние ссылки (xrefs), на которые ссылаются явно загруженные файлы. Исходное имя файла (если доступно) хранится в разделе (partition).

Node

Базовая COM-оболочка InwOaNode для различных типов узлов в графе сцены. Есть 3 типа узлов:

  • Partition: корневой узел графа сцены (COM-оболочка InwOaPartition);
  • Group: узел для группировки элементов. Используйте свойства IsLayer и IsInstance для определения, чем является данная группа (COM-оболочка InwOaGroup);
  • Geometry: лист графа сцены, отражает геометрию объекта (COM-оболочка InwOaGeometry);

Attribute

Представлен COM-оболочкой InwOaAttribute.

К каждому узлу может быть привязано произвольное количество атрибутов. Атрибуты могут использоваться для управления внешним видом узла или просто для связывания с ним дополнительной информации. Все атрибуты внешнего вида, за исключением Transform (COM-оболочка InwOaTansform), наследуются от родительских узлов, при этом используется атрибут, расположенный дальше всего по пути (т.е. ближайший к данному узлу, прим. автора). К атрибутам внешнего вида относятся:

  • Material: Информация о цвете. прозрачности, уровне блеска. Если для COM-оболочки узла InwOaNode, с которым данный материал связан, метод IsOverrideMaterial = true, то этот материал также наследуется вложенными в данный узел элементами (COM-оболочка InwOaMatrial);

  • SemanticPriority: отображение приоритета. Объекты с более высоким приоритетом с меньшей вероятностью будут отброшены при отрисовке геометрии сцены (прим. автора - я не понял, где в API это задаетcя. Возможно, это устаревшая механика);

  • Transform: параметры трансформации геометрии объекта. Параметры преобразований "суммируются" для вложенных объектов (по пути в дереве иерархии); К числу информационных атрибутов относится:

  • NameAttribute: произвольное имя, не строка с неограниченной длиной (COM-оболочка InwOaNameAttribute);

  • Nat64Attribute: 64-битное целое положительное число, диапазон значений - [0, 18 446 744 073 709 551 615] (COM-оболочка InwOaNameAttribute);

  • PropertyAttribute: список различных свойств, см. следующий раздел (COM-оболочка InwOaPropertyAttribute);

  • TextAttribute: текстовый блок, может содержать символы перевода на новую строку (COM-оболочка InwOaTextAttribute);

  • URLAttribute: именованная ссылка на некоторые внешние данные (COM-оболочка InwOaURLAttribute);

Property

Представлено COM-оболочкой InwOaProperty.

Свойство — это именованное значение определённого типа. Имя задается дважды - отображаемое имя (aka Caption), которое будет видно пользователю - UserName; внутреннее имя name. Значение value может быть одного из пяти типов:

  • Дробное double;
  • 32-битное целое int;
  • bool;
  • Широкая строка - string (C++ std::wstring);
  • Время и дата - (C# - DateTime.ToString());

Path

Path (путь) - это последовательность узлов, начинающаяся с раздела в корне графа сцены (Partition) и заканчивающаяся конкретным узлом внутри него, которая (последовательность, прим. автора) однозначно определяет конкретный экземпляр объекта.

Представлен COM-оболочкой `InwOaPath.

Selection и SelectionSet

Selection - набор путей, который определяет полный путь к выбранным объектам графа сцены. Представлен COM-оболочкой InwOpSelection.

SelectionSet - именованный набор Selection. Представлен COM-оболочкой InwOpSelectionSet. В дополнение к выбору Selection в нём содержится информация об отображаемом имени данного набора name, имени пользователя, под которым была создана данная выборка Author, время создания набора Date, комментарии к выборке (в виде COM-оболочки InwCommentsColl).

Fragment

Представлен COM-оболочкой InwOaFragment.

Фрагмент — это представление конкретного экземпляра узла Geometry (в том числе его части) в графе сцены. Большие геометрические объекты могут быть разбиты на несколько фрагментов для более эффективного отображения. Каждый фрагмент предоставляет доступ к:

  • Матрице трансформации координат относительно мировых координат модели (метод GetLocalToWorldMatrix());
  • Путь в дереве модели (свойство path) к данному фрагменту;
  • Геометрия, которой представлен данный фрагмент (свойство Geometry);
  • Способ отображения фрагмента (свойство Appearance). Из справки доступные значения: Ambient(3),Diffuse(3),Specular(3),Emissive(3),Shininess(1),Transparency(1) ;

AnonView

Представлен COM-оболочкой InwOpAnonView.

Предназначен для работы с видом. COM-оболочка InwOpAnonView предоставляет доступ к:

  • Точке обзора (свойство ViewPoint), представляется в виде COM-оболочки InwNvViewPoint;
  • Набору применяемых секущих плоскостей (свойство ClippingPlanes), представляется в виде COM-оболочки InwClippingPlaneColl;

ViewPoint

Представлено COM-оболочкой InwNvViewPoint. Характеризует положение камеры и параметры обзора для неё. COM-оболочка InwNvViewPoint позволяет получить:

  • Свойство Camera - предоставляет доступ к камере - на что вы смотрите (описывается COM-оболочкой InwNvCamera);
  • Свойство WorldUpVector - задает вектор направления вверх для системы координат просмотра (описывается COM-оболочкой InwLUnitVec3f);
  • Свойство FocalDistance - расстояние от точки расположения камеры до целевого объекта (при навигации через Осмотр или Орбиту);
  • Свойство LinearSpeed - определяет скорость движения вперед и назад (при навигации через Обход);
  • Свойство AngularSpeed- определяет скорость движения (при навигации через Облёт); (❓)
  • Свойство Paradigm - определяет формат навигации (Walk = Обход, Orbit = Орбита, Examine = Облёт и пр.);
  • Свойство Lighting - определяет режим освещения (в виде одного из значений перечисления nwELighting);
  • Свойство RenderStyle - определяет, как отображается геометрия (каркас, текстуры и пр. в виде одного из значений перечисления nwERenderStyle);

Camera

Представлена COM-оболочкой InwNvCamera. Хранит информацию, на Что направлен взгляд. COM-оболочка InwNvCamera позволяет получить:

  • Свойство Position - точка положения камеры в пространстве (описывается COM-оболочкой InwLPos3f);
  • Свойство Rotation - поворот камеры, задаётся с помощью COM-оболочки InwLRotation3f;
  • Свойство Projection - какая проекция камеры, ортогональная или перспективная, задается в виде перечисления nwEProjection;
  • Свойство HeightField - поле зрения камеры в перспективном режиме, высота в ортогональном (прим. автора, я не понял как это в ортогональном);

SavedView

Представлено COM-оболочкой InwOpSavedView. Базовое представление для различных точек обзора:

  • Вид: именованный AnonView (описывается COM-оболочкой InwOpView);
  • Папка: коллекция разных точек обзора (описывается COM-оболочкой InwOpGroupView);
  • Анимация: последовательность анимации;
  • Кадр: отдельный монтажный кадр (описывается COM-оболочкой InwOpCutView);

Animation

Анимация представляется в виде последовательности видов InwOpView и монтажных кадров InwOpCutView. Каждый Вид выступает в качестве "ключевого кадра" анимации. При воспроизведении анимации Navisworks выполняет переход между ключевыми кадрами. С помощью монтажных кадров можно сделать паузу, а затем перейти к следующему "ключевому кадру-виду"). Анимация представлена COM-оболочкой InwOpAnimView и характеризуется 2 свойствами:

  • Свойство Looped - анимация повторяется после конца, то есть зацикливается (true) или нет (false);
  • Свойство Smoothing - задает тип интерполяции между видами, в виде перечисления nwEAnimSmoothing;

Объекты из части линейной алгебры (...3f)

COM-оболочки с суффиксами "3f" описывают различные вспомогательные конструкции из состава линейной алгебры (прим. автора - название сохранено из оригинальной справки).

  • InwLVec3f - описывает произвольный вектор в трехмерном пространстве. Задает направление и длину в 3D. Представляется тремя координатами типа double;
  • InwLUnitVec3f - описывает направление в трехмерном пространстве. Представляется вектором единичной длины;
  • InwLPos3f - описывает точку в трехмерном пространстве. Представляется тремя координатами типа double;
  • InwLRotation3f - описывает поворот в трехмерном пространстве. Задается как InwLUnitVec3f - ось Z и угол в радианах вокруг данной оси. Представляется в Navisworks виде кватерниона;
  • InwLPlane3f2 - описывает плоскость в трехмерном пространстве. Задается как InwLUnitVec3f - вектор нормали и расстояние от точки начала координат;
  • InwLBox3f - описывает ориентированную по осям координат ограничивающую призму. Представляется в виде двух точек InwLPos3f - минимальной и максимальной;
  • InwLTransform3f - описывает произвольную трансформацию координат в трехмерном пространстве. Представляется в виде матрицы 4х4. Все трансформации должны быть аффинными (см. вики).

Plugin

Navisworks поддерживает подключаемые объекты, расширяющие базовую функциональность. Все реализуют COM-интерфейс InwPlugin. Существует четыре типа таких объектов (плагинов):

  • Работа с экспортом InwExportPlugin - определяет новую команду, которая может быть добавлена в меню экспорта Navisworks, в число инструментов или в контекстное меню;
  • Работа со свойствами InwPropertyPlugin - переопределяет порядок отображения и поиска Атрибутов объекта в диалоговых окнах "Свойства", "Поиск";
  • Работа с проверками на коллизии InwClashPlugin- добавляет правила поиска коллизий в Navisworks (прим. автора, не понимаю про что конкретно речь, например, среди методов InwOclClashTest имеется IgnoreRuleFlags);
  • Работа с визуализация InwPresenterPlugin: Добавляет новые правила на вкладку "Presenter" (Визуализация), они используются для применения текстур к объектам модели;

Подробнее см. описательный раздел в другой статье.