О базовых представлениях объектов

Перед тем, как переходить к рассмотрению объектов, необходимо уделить внимание двум базовым COM-оболочкам, описывающим объекты в Navisworks -- InwOaSceneBase и InwBase.

Первая оболочка InwOaSceneBase характерна для непосредственно структурных объектов (видимых в Дереве выбора в NW) и атрибутов объектов (т.к. наследуется у InwOaNode и InwOaAttribute). Вторая оболочка InwBase наследуется широким перечнем объектов, тех, что сохраняются в памяти файла проекта Navisworks (nwf; nwd).

InwOaSceneBase

Опишем далее состав доступных методов у данного интерфейса:

  • UserName - отображаемое имя элемента (привычный заголовок);
  • ClassUserName - тип элемента;
  • ClassName - внутреннее имя типа элемента;

Например, для загруженного в модель NW файла "Pyramid.nwc" (он будет описываться с помощью интерфейса InwOaPartition) выдача свойств выше будет следующей:

ClassName:     LcOaPartition,
UserName:      Pyramid.nwc,
ClassUserName: Файл

Все эти значения можно увидеть на стандартной панели "Свойства" во вкладке "Общие" в Navisworks. UserName - свойство "Имя", ClassUserName - свойство "Тип". Чтобы увидеть ClassName необходимо включить режим "Глобальные параметры - Интерфейс - Разработчик - Показывать внутренние свойства", в свойствах появится "Внутренний тип", и его значение будет соответствовать значению ClassName.

Пользовательское имя (UserName) по API доступно к изменению. Также можно переопределить значения ClassName и ClassUserName, воспользовавшись методом Rename с соответствующими аргументами в указанном порядке -- ClassName и ClassUserName.

InwBase

Опишем далее состав доступных методов у данного интерфейса:

Метод или свойствоЧто делаетПримечание
nwReadOnlyВозвращает признак, доступен ли объект
и содержимое только для чтения
Если свойство = true, то его свойства нельзя изменить через API
nwInvalidatedВозвращает признак, является ли объект
и его содержимое недействительными
(напр., ссылка на объект устарела или
он был удален из исходных данных)
nwHandleУникальный идентификатор
(хэндл) объекта в памяти сессии Navisworks
⚠️Не доступен к получению из внешнего процесса
Ошибка "Отказано в доступе. (Исключение
из HRESULT: 0x80070005 (E_ACCESSDENIED))"
nwIDЧисловой идентификатор объекта⚠️Не доступен к получению из внешнего процесса
Ошибка "Отказано в доступе. (Исключение
из HRESULT: 0x80070005 (E_ACCESSDENIED))"
Xtension()Позволяет получить доступ к "Расширениям"
(Extensions) объекта. Это механизм для хранения
пользовательских данных или метаданных,
которые не входят в стандартные свойства элемента.
nwProcessВозвращает номер процесса в системе,
где существует объект
nwThreadВозвращает номер потока процесса, где сейчас
существует объект
nwInit()Вызывается для инициализации объекта. Вызывать
в случае создания элемента через state.ObjectFactory
nwInvalidate()Принудительно помечает объект как
недействительный. Чтобы заставить NW пересчитать
для него свойства или обновить геометрию
nwLockУправление блокировкой объекта. Для безопасных
(в памяти) изменений объекта, особенно если он
nwReadOnly = true
nwOwnВозвращает или задает "право владения
объектом" - ручные действия с объектом для очистки
его из памяти, если true.
Для работы с временными объектами
ObjectNameИмя типа объектаНе то же самое, что InwOaSceneBase.UserName.
Что-то похожее, но другое (созвучное с ним).
Copy()Создает копию данного объекта

Ниже в таблица приведена справочная информация, какими объектами данный интерфейс наследуется.

Чем наследуетсяЧто это за объекты
InwGUIAttributeАтрибут приложения
InwOpStateМодель NW
InwLBox3fГеометрия. Ограничивающая призма
InwLBaseVec3fГеометрия. Представление 3D-вектора
InwOpSavedViewСохраненная точка обзора
InwOaSceneBaseБазовое представление для объектов и атрибутов (см. выше)
InwOpAnonViewЛюбой именованный вид
InwNvViewPointТочка обзора NW
InwNvCameraПараметры камеры NW
InwLRotation3fГеометрия. Вектор направления и угол вращения
InwOpSelectionВыборка объектов NW
InwOaPathВнутренние пути к данным NW
InwLTransform3fГеометрия. Параметры преобразования координат
InwOpFindSpecНастройки поиска объектов в NW
InwOaPropertyVecНабор свойств
InwURLOverrideПереопределение тэга (?)
InwGlobalPropertiesОбобщенные настройки проекта (что-то про ссылки)
InwSmartTagsOptsНастройки тэгов (?)
InwGUIPropertyNodeОболочка для получения коллекции атрибутов приложения
InwOpFindНайденный объект по условиям (вроде для спецификаций)
InwOpFindConditionПоисковое условие
InwOaCommonLightБазовое представления источника освещения
InwOaPropertyБазовое представление определения свойства
InwOaClipPlaneПлоскость сечения
InwLPlane3fГеометрия. Определение плоскости
InwOaFragmentЧасть геометрии объекта (из-под него предоставляется
доступ к чтению геометрии)
InwOpCommentКомментарий на модели
InwOpProgressВспомогательное. Прогресс выполнения задачи
InwOpSelectionSetИменованный набор выбора (аналог в окне "Наборы")
InwURLИменованная ссылка
InwURLCategoryНабор именованных ссылок (категория?)
InwOpInternalPluginВспомогательное.
InwNvViewerПараметры реалистичности при просмотре (?)
InwSimpleVertexВспомогательное. Точка геометрии
InwSelectionSetFolderДоступ к наборам выборки
InwPlugin_SiteВспомогательное. Место плагина в меню (?)
InwOclTestResultРезультат проверки на коллизии
InwOclClashTestПараметры проверки на коллизии
InwOpClashElementКоллизирующий элемент
InwUInt32VectorГеометрия. Вектор с координатами int32
InwOpUserFindSpecПользовательские настройки поиска объектов
InwOpUserSelectionTreeSpecВспомогательное
InwOpUserSelectionTreePluginВспомогательное