О базовых представлениях объектов
Перед тем, как переходить к рассмотрению объектов, необходимо уделить внимание двум базовым 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 | Вспомогательное |