我正在使用Autodesk Forge Viewer。
viewer.search('"' + keyword +'"', function(e)
{
viewer.select(e);
viewer.fitToView(e);
}我是这样搜索的。问题是它同时搜索"SG-100“和"SSG-100”。我只想搜索SG-100。
我该怎么做呢?帮助!
发布于 2020-07-04 00:33:23
我的建议是在搜索中做第二个过滤器:
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']);发布于 2020-07-11 00:26:40
我同意Augusto的建议,即您需要将搜索范围限制到特定的属性,以避免部分匹配。根据search函数的描述,如果您在名为'attributeNames‘的第四个参数中提供属性名列表,就应该这样做。不幸的是,根据我的经验,这不起作用,因此您需要使用getBulkProperties函数进行第二级过滤,该函数将搜索中的dbIds列表减少到仅定义了特定属性的列表。请注意,search方法属于viewer对象,而getBulkProperties方法属于viewer.model对象。
https://stackoverflow.com/questions/62707835
复制相似问题