Не удается полностью скрыть модель в программе просмотра кузницы - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь скрыть полную модель в forge-viewer, для этого я вызываю API видимости forge следующим образом:

viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)

, где средство просмотра - это объект GUIViewer3D.

Но это не скрывает полную модель, некоторые компоненты в модели все еще видны.

Я думаю, что это ошибка в forge-viewer, потому что, если я передаю корневой узел модели в setNodeOff() API, он должен скрыть всю модель. Я уверен, что в моем сеансе просмотра загружена только одна модель.

См. Это изображение для элементов, которые все еще видны после вызова viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Не могли бы вы попробовать что-нибудь для меня ...

Не могли бы вы попытаться добавить заголовок 'x-ads-force': 'true' к запросу задания POST при преобразовании файла .RVT?

Вот документация по запросу API ... https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/job-POST/#headers

Затем извлеките URN и передайте его в Forge Viewer, как и раньше, как в следующем примере: https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-manifest-GET/#example

.

Итак ... Что происходит?

Когда вы конвертируете RVT в SVF (для Forge Viewer), он генерирует случайный набор DBIds.

Когда вы вызываете API GetProperties, он использует кэшированный SVF для извлечения DBI-идентификаторов и предоставления вам результата.

Еще в августе был обновлен механизм API GetProperty. По сравнению со старыми конвертированными SVF, он производит другой порядок DBI.

Поскольку старый SVF кэшируется, даже если вы отправляете новое задание, он будет использовать старый SVF.

Чтобы избежать старого SVF, нам нужно «принудительно преобразовать» преобразование RVT в SVF, очистить этот кэш, чтобы новый SVF был виден и Forge Viewer мог его извлечь.

Как только Forge Viewer сможет увидеть новый SVF, он должен соответствовать DBIds API GetProperties.

Сложно, да?

Дайте мне знать, если это решит проблему.

0 голосов
/ 06 сентября 2018

Поскольку моя цель - полностью скрыть модель от зрителя, я достиг этого следующим образом:

viewer.clearSelection(); viewer.model.setAllVisibility(0); viewer.impl.toggleGhosting(false); viewer.impl.toggleGroundShadow(false);

Это дает мне необходимое поведение. Элементы, которые я не смог скрыть, теперь скрыты благодаря этому подходу.

0 голосов
/ 31 августа 2018

getModelId() возвращает идентификаторов моделей , а API видимости ожидают идентификаторов узлов . Чтобы скрыть всю модель, учтите следующее:

viewer.hide(model.getRootId());
...