Информация о некоторых объектах
Вся модель (документ) 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" (Визуализация), они используются для применения текстур к объектам модели;
Подробнее см. описательный раздел в другой статье.