首页 > 解决方案 > 在 Autodesk Forge Viewer 中,搜索功能在查找具有单个字符值的属性时不起作用

问题描述

我想找到一个 2D 文件的组件,其属性“TAG”等同于“F”。为此,我正在尝试使用 viewer.search 功能。更具体地说,我正在做这个电话:

this.viewer.search('F', searchCallback, searchCallbackErr, 'TAG');

当然,这是一个测试,所以我确信这个对象存在这个确切的属性,正如你在 这个截图中看到的那样

虽然,当调用成功回调函数时,id 数组是空的。我注意到这发生在涉及单个字符值的所有其他搜索过程中。我还注意到,当我执行这样的搜索时,在这种情况下,每个包含“F”的值都会在查看器的属性窗口中突出显示(您也可以在前面的屏幕截图中注意到)。请注意,当我查找它的其他属性“DESC3”(等于“L1”)时,对同一组件的搜索是有效的。

我错过了什么?预先感谢您的帮助!我已经被困在这里很长一段时间了。

标签: javascriptautodesk-forgeautodesk-viewer

解决方案


如果我看您的屏幕截图,它显示的是 TAG1,而不是 TAG,这可能是您的问题吗?无论如何,验证这一点的一种方法是选择具有您的属性的对象并在调试器中运行此代码

NOP_VIEWER.model.getBulkProperties(NOP_VIEWER.getSelection(), null, console.log)

仔细查看properties数组,注意有一个displayName和一个attributeName——搜索使用的是attributeName,但界面会使用displayName。确定要搜索的属性名称后,运行此代码。对于我的测试,我正在使用这个例子

NOP_VIEWER.model.search("Yes", console.log, console.error, ["Show Title"])

对于最后一个参数,请注意它可以是字符串或字符串数​​组。还有一个未记录的参数(第 5 个参数)用于告诉您是否要搜索隐藏参数(默认为 false)。

NOP_VIEWER.model.search("Yes", console.log, console.error, ["Show Title"], { searchHidden: true })

是的,搜索需要多个字符。例如

NOP_VIEWER.model.search("1", console.log, console.error)
returns []
NOP_VIEWER.model.search("4", console.log, console.error)
returns []

but
NOP_VIEWER.model.search("4'", console.log, console.error)
returns a list of objects

推荐阅读