【问题标题】:Autodesk Forge Viewer, SearchAutodesk Forge 查看器,搜索
【发布时间】:2020-10-23 17:32:46
【问题描述】:

我正在使用 Autodesk Forge 查看器。

viewer.search('"' + keyword +'"', function(e)
{
    viewer.select(e);
    viewer.fitToView(e);
}

我正在这样搜索。 问题是它同时搜索“SG-100”和“SSG-100”。 我只想搜索SG-100。

我该怎么做? 救命!

【问题讨论】:

    标签: autodesk-forge


    【解决方案1】:

    我同意 Augusto 的建议,即您需要将搜索范围限制为特定属性,以避免部分匹配。根据search 函数描述,如果您在名为“attributeNames”的第 4 个参数中提供属性名称列表,则应该这样做。不幸的是,根据我的经验,这不起作用,因此您需要使用 getBulkProperties 函数进行二级过滤,该函数会将搜索中的 dbId 列表减少到仅定义了特定属性的那些。注意,search 方法属于viewer 对象,而getBulkProperties 方法属于viewer.model 对象。

    【讨论】:

      【解决方案2】:

      我的建议是在搜索中进行第二个过滤:

      viewer.search(keyword, (dbIds) => {
         // success
         viewer.getBulkProperties(dbIds, ['AttributeName'], (elements) => {
            let dbIdsToSelect = [];
            for(var i=0; i<elements.length; i++){
               if (elements[i].properties[0].displayValue===keyword)
                  dbIdsToSelect.push(elements[i].dbId;
            }
      
            viewer.select(dbIdsToSelect);
            viewer.fitToView(dbIdsToSelect);
         }
      }, (e) => {
         // error, handle here...
      }, ['AttributeName']);
      

      【讨论】:

      • 什么是“['AttributeName']”?
      • 它是一个字符串数组,告诉函数它需要检索 dbid 的哪些属性。这应该与您正在搜索的属性相匹配。即在您的情况下等于“SSG-100”的属性。
      • 谢谢!但我得到了这个错误。 “未捕获的 TypeError:viewer.getBulkProperties 不是函数”
      猜你喜欢
      • 2021-11-12
      • 1970-01-01
      • 2021-09-19
      • 2017-01-07
      • 2021-09-18
      • 2018-09-26
      • 2018-03-23
      • 2020-09-06
      • 2020-09-17
      相关资源
      最近更新 更多