Skip to content
目录

电子围栏

电子围栏用来在3D场景中表示区域,比如作业区域、危险区域等。

电子围栏管理器组件

一个3D场景中可能有多个电子围栏,因此需要一个管理器来管理这些电子围栏。 FenceMgr 组件是一个管理器组件,需要挂载到场景层级上,用于管理场景层级下的多个电子围栏。

typescript
fenceMgr = app.levelMgr.current.addComponent(GLOW.FenceMgr);//添加电子围栏管理器组件

绘制电子围栏

绘制电子围栏分3步走。 [绘制电子围栏示例]

电子围栏

开启电子围栏绘制

通过调用 startEdit 方法来开启电子围栏绘制功能。开启后,鼠标指针变成画笔,在场景中点击左键可以绘制电子围栏。

typescript
fenceMgr.startEdit(); //开启电子围栏绘制

结束电子围栏绘制

可以手动调用 endEdit 方法来结束电子围栏绘制。另外,在绘制过程中,点击鼠标右键,会自动调用 endEdit 方法来结束电子围栏绘制。

typescript
fenceMgr.endEdit(); //手动结束电子围栏绘制

获取电子围栏数据

endEdit 方法调用后,获取电子围栏数据。 FenceMgr 组件有一个 onEndEdit 属性,是在 endEdit 方法被调用后的回调函数,可以在该回调函数中获取电子围栏数据,需要预先设置该回调函数。

typescript
fenceMgr.onEndEdit = (fence: GLOW.Fence) => {//设置结束编辑回调函数
    let json: any = fence.toJson();//序列化成JSON对象
    let data: string = JSON.stringify(json);//序列化成JSON字符串
    //将该JSON字符串保存起来方便后面使用
    console.log('模拟保存:', data);
};

加载电子围栏数据

手动调用 addOne 方法来添加一个电子围栏。 电子围栏添加完毕后,需要调用 build 方法来创建电子围栏模型。

[加载电子围栏数据示例]

typescript
//添加电子围栏
for (let json of dataList) {
    let fence: GLOW.Fence = fenceMgr.addOne(json);//添加电子围栏
    //可以对电子围栏实体设置业务操作
}

//构建电子围栏模型
fenceMgr.build();

电子围栏

技术支持:13352865103(柯工,微信同号)