forge Viewer - 如何以编程方式选择 dbId,因为它会自动取消选择其他选择

Posted

技术标签:

【中文标题】forge Viewer - 如何以编程方式选择 dbId,因为它会自动取消选择其他选择【英文标题】:forge Viewer - How can you select dbId programmatically as it deselects the other selection automatically 【发布时间】:2020-06-10 23:37:55 【问题描述】:

在我的查看器中,我希望能够选择多个 dbid 并保存到数据库,但是通过 control-shift 我可以进行选择,但是稍后在检索时我可以使用 select([dbid array]) 进行显示,应该可以正常工作。但是,如果我想选择一个新的 dbid,每次都使用控件来选择新的 dbid 很痛苦,另一件事是我的事件处理程序(AGGREGATE_SELECTION_CHANGED_EVENT)我需要编写额外的代码来确定我选择的最新 dbid 是什么? 有什么建议可以轻松解决这个问题吗?

【问题讨论】:

【参考方案1】:

如果您想在以编程方式选择额外节点的同时保留当前选择,请尝试将当前选择的 dbid 与新节点连接起来:

const currentSelection = NOP_VIEWER.getSelection()
currentSelection.push(dbid)
NOP_VIEWER.select(currentSelection)

我需要编写额外的代码来识别我选择的最新 dbid 以及全部?

是的,查看器不会跟踪您选择的顺序/时间戳,因此您需要自己管理。

control-shift 我可以进行选择

您可能还想了解点击行为设置以更改对象点击的默认行为:

const config = 
        "click": 
            "onObject": ["selectOnly"],
            "offObject": ["deselectAll"]
        ,
        "clickAlt": 
            "onObject": ["setCOI"],
            "offObject": ["setCOI"]
        ,
        "clickCtrl": 
            "onObject": ["selectToggle"]
            // don't deselect if user has control key down https://jira.autodesk.com/browse/LMV-1852
            //"offObject": ["deselectAll"]
        ,
        "clickShift": 
            "onObject": ["selectToggle"]
            // don't deselect if user has shift key down https://jira.autodesk.com/browse/LMV-1852
            //"offObject": ["deselectAll"]
        ,


NOP_VIEWER.setCanvasClickBehavior(config)

【讨论】:

好的,这很棒。我喜欢这个例子中的想法forge-digital-twin.autodesk.io/#,这里我们不是“选择/突出显示”保存的 dbid,而是我们给出带有一些标签的箭头。同样在这里我观察到你不能做多选对象,因为看起来他们已经禁用了它。希望它是你上面解释的方式。这是真的吗?如果那怎么办? “你不能做多选对象,因为看起来他们已经禁用了它”由用户或以编程方式?两者都是可能的...从用户端查看选择窗口示例here @BryanHuang 我们如何以编程方式从多个模型中选择 dbId?

以上是关于forge Viewer - 如何以编程方式选择 dbId,因为它会自动取消选择其他选择的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式校准 Autodesk forge 查看器?

如何获取 forge-viewer onClick 事件的 xyz 坐标?

如何使用Forge Viewer在revit文件中显示项目?

将更改保存到Forge Autodesk Viewer

如何在 Forge Viewer v7 中折叠 PropertyPanel 中的类别?

在 Forge Viewer 上查看原生 PDF 和 DWF,无需翻译