属性面板插件
属性面板 BasePropertyViewPlugin
是个非常特殊的插件,它要与构件树控件 BuildingTreeWidget
以及建筑 BIM 场景下的建筑构件联动,属性面板的属性之意就是构件的属性。
1. 初始化
由于属性面板需要时刻与建筑 BIM 场景下的建筑构件联动,所以属性面板插件的初始化是跟随场景的构建的,当场景初始化的时候,属性面板也被初始化了,只是当我们没有添加自定义工具栏控件 ToolbarWidget
时,属性面板时不被展示出来的。
即属性面板在场景构建时内置初始化。
2. 插件管理
正如上述,属性面板不需要手动注册,但是可以通过属性控制其在自定义工具栏控件 ToolbarWidget
中按钮的显示与隐藏。
2.1 控制显隐
控制属性面板在自定义工具栏控件 ToolbarWidget
中的显示与隐藏,需要用 popup
属性对象中的 autoOpenEnabled
, true
为显示,反之不显示。
代码示例如下:
const scene = new ubm.Scene('app', {
viewingMode: 'local',
popup: {
autoOpenEnabled: true
}
})
scene.ui.add(new ubm.ToolbarWidget(scene, {
container: container,
tools: []
}))//自定义工具栏
2.2 插件用法
该插件使用普遍,关联众多,用法居多。
2.2.1 普通使用
普通用法就是使用上述方法,设置 autoOpenEnabled:true
(或者直接不设置,默认为 true
)使该插件在自定义工具栏中显示,点击对应按钮打开属性面板,然后再点击建筑场景构件,就会展示出构件属性。
2.2.2 右键菜单使用
在右键菜单中使用特性即属性面板,然后点击建筑构件右键点击特性,就会展示属性面板。
代码示例如下:
const scene = new ubm.Scene('app', {
viewingMode: 'local',
ui: {
//右键菜单
contextMenu: {
enable: true,
menus: [[
{
label: '特性', //属性面板
name: 'property',
}
]]
}
}
})
autoOpenEnabled:false
。否则不显示。2.2.3 构件树使用
此插件与构件树控件 BuildingTreeWidget
具有联动,所以构件树也可唤醒属性面板插件。
示例代码如下:
const scene = new ubm.Scene('app', {
viewingMode: 'local',
ui: {
widgets: [
{
id: 'toolbar',
name: 'ToolbarWidget',
position: 'manual',
props: {
container: 'toolbar',
tools: [
{
name: 'tree',
label: '构件树',
props: {
//是否点击节点唤醒属性面板
openProperty: true,
keys: {
primary_key: 'guid',
}
}
}
]
}
}
]
}
})
autoOpenEnabled:false
。否则不显示。当场景中添加构件树控件时,只要对构件树传入属性 openProperty: true
,点击构建树的节点就会唤醒属性面板。
2.3 插件方法
在某些场景下,需要使用到该属性面板中构件属性信息。所以 SDK 将该构件属性信息暴露了。方法如下:
// scene为场景示例
scene.event.on('plugin.basePropertyView.show',(e)=>{
// e.detail 为属性面板中鼠标所点击构件相关信息
console.log(e.detail)
})
上述方法使用到了 SDK 内置的事件监听,在属性面板插件 BasePropertyViewPlugin
中发布事件,在场景中监听事件触发。