В программе просмотра forge для файла, преобразованного в Revit, при выполнении поиска в пузырьках: viewerApp.bubble.search ({'тип': 'геометрия', 'роль': '3d'}); Или viewerApp.getSelectedItem ()
Я получаю узел элемента вроде:
children: (2) [a, a]
data: {guid: "a21582db-704b-df51-dd71-dbf8c12bcc1a", type: "geometry", role: "3d", name: "{3D}", viewableID: "6104055e-60d9-4037-9adc-cd38e10fcfba-00139c8e", …}
id: 8
isLeaf: true
parent: a {parent: a, id: 7, data: {…}, isLeaf: false, children: Array(14)}
У меня есть гид узла и viewableID. Затем, чтобы отобразить модель, я могу вызвать viewerApp.selectItemById (guid / viewableID), что завершит отображение той же модели.
Если я хочу указать на 3D-вид, который я сейчас вижу в средстве просмотра, для дальнейшего использования (например, после обновления файла Revit), какой атрибут для него лучше всего: guid или viewableID?
Спасибо,
Идентификатор видимой области обозначает уникальный идентификатор представлений Revit в Revit API, как и в моем исследовании, но я не могу найти взаимосвязь между представлениями Revit и guid в видимом пузырьковом узле. Я уточняю у нашей группы инженеров, есть ли у них какие-то идеи.
viewerApp.selectItemById()
предназначен для запроса пузырькового узла через его guid, поэтому вы не можете передать в него видимый идентификатор. В противном случае он ничего не вернет, как мое расследование.
Чтобы архивировать выбор по просматриваемому идентификатору, я бы посоветовал вам вместо этого использовать следующее:
const bubbles = viewerApp.bubble.search({ 'viewableID': '6104055e-60d9-4037-9adc-cd38e10fcfba-00139c8e' });
viewerApp.selectItemById( bubbles[0].guid );
Или расширите свои собственные методы (проверено с v6.2):
LMV.BubbleNode.prototype.findByViewableId = function (viewableId) {
let item = null;
this.traverse(function (node) {
if (node.data.viewableID === viewableId) {
item = node;
return true;
}
});
return item;
};
LMV.ViewingApplication.prototype.selectItemViewableId = function (viewableId, onItemSelectedCallback, onItemFailedToSelectCallback) {
let item = this.myDocument.getRoot().findByViewableId(viewableId);
if (item) {
return this.selectItem(item, onItemSelectedCallback, onItemFailedToSelectCallback);
}
return false;
};
// -- You codes where you create the ViewingApplication instance