Autodesk Forge Viewer3d поиск по именам атрибутов

#autodesk-forge #autodesk-viewer

#autodesk-forge #autodesk-viewer

Вопрос:

Я пытаюсь реализовать .search() и ограничить имена атрибутов с помощью необязательного параметра, но он всегда возвращает пустой массив.

https://developer.autodesk.com/en/docs/viewer/v2/reference/javascript/viewer3d/

Может кто-нибудь пояснить, как применяется этот фильтр? Я ожидал, что он посмотрит на возвращаемое свойство.DisplayName, но, видимо, это не так.

Пример:

 viewer.search('13-097', function (ids) {
   console.log(ids);

   var id = ids[0];
   viewer.getProperties(id, function (obj) {
      console.log(obj.properties);
   });
}, function (e) { });

viewer.search('13-097', function (ids) {
   console.log(ids);
}, function (e) { }, ['ADDRESS']);
  

Результат:
первый поиск:

 [8095]
  

второй поиск:

 []
  

из объекта 8095 свойства:

 10:Object
displayCategory:"DWF - Construction"
displayName:"ADDRESS"
displayValue:"13-097"
hidden:false
type:20
units:null
  

Ответ №1:

Пожалуйста, обратите внимание на Autodesk.Viewing.Метод Viewer3D.search() НЕ учитывает регистр в текстовом параметре, но он чувствителен к регистру в параметре attributeNames, и вам необходимо использовать полное имя атрибута.

Если для сопоставления свойств используется DisplayName, обратите внимание, что viewer.GetProperties() в настоящее время возвращает DisplayName. Если DisplayName отсутствует, тогда (и только тогда) возвращается имя атрибута.

Ниже приведен пример, который я пробовал ранее (с учетом вашего набора данных):

 function search() {
    viewer.clearSelection(); // remove previously highlighted searches

    var searchStr = '13-097';     
    var searchPropList = new Array('ADDRESS');
    viewer.search(searchStr, searchCallback, searchErrorCallback, searchPropList);
}

function searchCallback(ids) {
    alert(ids.length);
}

function searchErrorCallback(error) {
    console.log(error);
}
  

РЕДАКТИРОВАТЬ (24 октября 2016 г.)

Метод Viewer 2.11 .GetProperties возвращает атрибуты, которые можно использовать в параметре .search attributesNames .

Комментарии:

1. Похоже, это все еще не работает, или я просто не понимаю, как / если я могу использовать поиск таким образом. Я добавил пример к своему первому сообщению.

2. @JOfford пожалуйста, проверьте ответ еще раз, добавлен пример кода.

3. Используя ваш код, я получил то же самое: 1 найдено при исключении «searchPropList» и 0 при его включении.

4. спасибо за тестирование, позвольте мне разобраться немного подробнее. Какую версию Viewer вы используете?

5. То же, что и в учебном пособии forge viewer. developer.autodesk.com/en/docs/viewer/v2/tutorials/basic-viewer