1. BOS3DUI 用户使用文档

1.1. 初始化UI

UI初始化的参数

名称 说明 类型 是否必须 示例
option 参数对象 对象 Object 看调用方式举例
option.viewer3D 实例化之后的BOS3D. Viewer对象 对象 Object new BOS3D. Viewer()
option. BOS3D 整个BOS3D引擎 对象 Object window. BOS3D
option.funcOption 工具栏上按钮是否显示的控制 对象 Object 否 , 默认都显示 看调用方式举例
option.customMenu 自定义右键菜单,按照数组顺序,从上到下排列按钮 数组对象 Array 看调用方式举例

自定义右键菜单功能中,数组中对象的参数说明

名称 说明 类型 是否必须 示例
object 参数对象 对象 Object 看调用方式举例
object.label 按钮的名称,如果要覆盖默认的行为,这里需要传原始按钮的名称 字符串 string new BOS3D. Viewer()
object.disable 按钮是否不可点击 布尔值 Boolean 默认 false false
object.func 按钮点击时要触发的方法, 如果按钮有子按钮,那么会忽略该参数 函数 function 否 , 默认为null function(){}
object.aka 按钮的别名,有别名时优先显示别名。比如要给默认的按钮改名字 字符串 string "name"
object.children 按钮的子按钮列表,按钮的嵌套不能超过10层 数组对象 Array 看调用方式举例
返回值说明 类型 示例
null null
<head>
    <link rel="stylesheet" type="text/css" href="BOS3DUI.min.css">
</head>

<body>
    <!-- 要先引入viewer3D的script,再引入UI的script -->
    <script src="BOS3D.min.js"></script>
    <script type="text/javascript" src="BOS3DUI.min.js"></script>
    <script>
        const option = {
            host: "http://localhost",
            viewport: "viewport"
        };
        const viewer3D = new BOS3D.Viewer(option);
        viewer3D.addView("xxx", "xxx");
        // 以下两个个参数都是必填的
        const bos3dui = new BOS3DUI({
            viewer3D: viewer3D,
            BOS3D: BOS3D,
            // 可选,需要显示哪些工具栏。默认都是true
            funcOption: {
                init: false, // 初始化
                fit: false, // 聚焦
                undo: false, // 撤销
                reset: false, //重置
                roam: false, // 漫游
                pickByRect: false, // 框选
                hide: false, // 隐藏
                isolate: false, // 构件隔离
                section: false, // 剖切
                wireFrame: false, // 线框化
                scatter: false, // 模型分解
                changeCptColor: false, // 构件变色
                setting: false, // 设置
                fullScreen: false, // 全屏
                changeBgColor: false, // 改变背景色
                cptInfo: false, // 构件信息
                infoTree: false, // 结构树
                measure: false, // 测量
                mark: false, // 标签
                snapshot: false, // 快照
                annotation: false, // 批注
                moreMenu: false //更多
            },
            //  自定义菜单功能传参
            customMenu: [{
                    label: '隐藏',
                    disable: true,
                    func: null,
                    aka: "我就试试",
                    children: null,
                },
                {
                    label: '聚焦',
                    disable: false,
                    func: null,
                    aka: null,
                    children: null,
                },
                {
                    label: '属性信息',
                    disable: false,
                    func: null,
                    aka: null,
                    children: null,
                },
                {
                    label: '更多',
                    disable: false,
                    func: null,
                    aka: null,
                    children: [{
                            label: '其他构件半透明',
                            disable: false,
                            func: null,
                            aka: null,
                            children: null,
                        },
                        {
                            label: '相同类型构件',
                            disable: false,
                            func: null,
                            aka: null,
                            children: null,
                        },
                        {
                            label: '所属部件/族',
                            disable: false,
                            func: null,
                            aka: null,
                            children: null,
                        },
                    ]
                },
                {
                    label: '显示所有对象',
                    disable: false,
                    func: null,
                    aka: null,
                    children: null,
                },
                {
                    label: '123123',
                    disable: false,
                    func: function(e) {
                        console.log(e)
                    },
                    aka: null,
                    children: null,
                },
            ]
        });
    </script>
</body>

1.2. 模型树统计功能

名称 说明 类型 是否必须 示例
object 参数对象 对象 Object 看调用方式举例
object.layer 显示模型树节点统计的层数 数字 Number {layer: 1, order: true}
object.order 层级正序还是逆序 布尔值 Boolean 默认 true {layer: 1, order: tue}

配置描述:

  1. 正序配置:{layer: 3, order:true},只显示从1层(根节点)到第3层的节点统计
  2. 倒序配置:{layer: 1, order: false},只显示从第1层(每个分支的叶子节点为第1层)到最顶层的节点数量统计**
返回值说明 类型 示例

模型树统计功能实例

<head>
    <link rel="stylesheet" type="text/css" href="BOS3DUI.min.css">
</head>

<body>
    <!-- 要先引入viewer3D的script,再引入UI的script -->
    <script src="BOS3D.min.js"></script>
    <script type="text/javascript" src="BOS3DUI.min.js"></script>
    <script>
        const option = {
            host: "http://localhost",
            viewport: "viewport"
        };
        const viewer3D = new BOS3D.Viewer(option);
        viewer3D.addView("xxx", "xxx");
        // 以下两个个参数都是必填的
        const bos3dui = new BOS3DUI({
                viewer3D: viewer3D,
                BOS3D: BOS3D,
                // 正序配置:{layer: 3, order:true},只显示从1层(根节点)到第3层的节点统计;倒序配置:{layer: 1, order: false},只显示从第1层(每个分支的叶子节点为第1层)到最顶层的节点数量统计
                treeNodeStatistic: {
                    layer: 2,
                    order: false
                },
                // 可选,需要显示哪些工具栏。默认都是true
                funcOption: {
                    init: false, // 初始化
                    fit: false, // 聚焦
                    undo: false, // 撤销
                    reset: false, //重置
                    roam: false, // 漫游
                    pickByRect: false, // 框选
                    hide: false, // 隐藏
                    isolate: false, // 构件隔离
                    section: false, // 剖切
                    wireFrame: false, // 线框化
                    scatter: false, // 模型分解
                    changeCptColor: false, // 构件变色
                    setting: false, // 设置
                    fullScreen: false, // 全屏
                    changeBgColor: false, // 改变背景色
                    cptInfo: false, // 构件信息
                    infoTree: false, // 结构树
                    measure: false, // 测量
                    mark: false, // 标签
                    snapshot: false, // 快照
                    annotation: false, // 批注
                    moreMenu: false //更多
                },

            )
        };
    </script>
</body>

1.3. 快照

const snapshot = bos3dui.snapshot;

1.3.1. 控制方法

add

作用: 把单个快照对象信息放入到渲染到快照列表

形式参数: 有

名称 说明 类型 是否必须 示例
snapshotObj 快照信息 对象 Object 看调用方式举例
返回值说明 类型 示例

调用方式:

    /**
     * add 根据传参初始加载快照列表
     */

    var snapshotObj = {
        cameraState: cameraState, //{Object} 对象,相机状态,包含position、target、up
        componentState: componentState, //{Array} 对象数组 , 构件信息,
        highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
        highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
        imageURL: imgURL, //{base64} 当前canvas的截图
        width: w, //{int} 图片宽度,当前canvas图片的宽度
        height: h, //{int} 图片高度,当前canvas图片的高度
        num: num, //{int} 当前快照列表的序号
        code: new Date().getTime().toString(),
        name: "快照" + num, //快照名称
        description: "无注释" //快照描述
    };
    snapshot.add(snapshotObj);

delete

删除指定快照

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "35165165"
返回值说明 类型 示例

调用方式:

/**
 * 删除指定快照
 * @function delete
 * @param {string} key 快照key
 * @return {void}
 */
snapshot.delete("35165165");

update

该方法用来更新模型快照

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "35165165"
parameter 参数 对象 obkect 见下方
返回值说明 类型 示例

调用方式:

/**
 * 该方法用来更新模型快照
 * @function update
 * @param {string} key 快照key
 * @param {object} [parameter] 更新的参数
 * @param {string} [parameter.cameraState] 相机状态,包含position、target、up
 * @param {string} [parameter.componentState] 构件状态
 * @param {array} [parameter.highlightComponentsKeys] 高亮构件数组
 * @param {array} [parameter.highlightModelsKeys] 高亮模型数组
 * @param {string} [parameter.imageURL] base64格式图片
 * @return {void}
 */
var obj = {
    cameraState: cameraState, //{string} 对象,相机状态,包含position、target、up
    componentState: componentState, //{string} 对象数组 , 构件信息,
    highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
    highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
    imageURL: imgURL, //{base64} 当前canvas的截图
}
snapshot.update("35165165", obj);

rename

重命名指定快照

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "35165165"
name 快照名称 字符串 string "快照1"
返回值说明 类型 示例

调用方式:

/**
 * 重命名指定快照
 * @function rename
 * @param {string} key 指定快照key
 * @param {string} name 快照的新名称
 * @return {void}
 */
snapshot.rename("35165165", "快照1");

annotation

该方法用来给模型快照添加或替换描述,

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "35165165"
description 快照注释 字符串 string "注释1"
返回值说明 类型 示例

调用方式:

/**
 * 该方法用来给模型快照添加或替换描述,
 * @function annotation
 * @param  {string} key  快照的key
 * @param  {string} description  快照的注释
 * @return {void}
 */
snapshot.annotation("35165165", "注释1");

restoreToSnapshot

还原到指定快照,

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "35165165"
返回值说明 类型 示例

调用方式:

/**
 * 还原到指定快照
 * @function restoreToSnapshot
 * @param {string} key 快照key
 * @return {void}
 */
snapshot.restoreToSnapshot("35165165");

clear

作用: 清除所有的快照列表

名称 说明 类型 是否必须 示例
返回值说明 类型 示例

调用方式:

/**
 * clear 清除所有的快照列表
 * @function clear
 * @return {void}
 */
snapshot.clear();

makeSnapshots

作用: 获取当前快照信息

形式参数: 无

返回数据: 对象类型 {Object}, 数据格式如下

var obj = {
    cameraState: cameraState, //{string} 对象,相机状态,包含position、target、up
    componentState: componentState, //{string} 对象数组 , 构件信息,
    highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
    highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
    imageURL: imgURL, //{base64} 当前canvas的截图
    width: w, //{int} 图片宽度,当前canvas图片的宽度
    height: h, //{int} 图片高度,当前canvas图片的高度
    num: num, //{int} 当前快照列表的序号
    code: new Date().getTime().toString(),
    name: "快照" + num, //快照名称
    description: "无注释" //快照描述
}

调用方式:

/**
 * makeSnapshots 获取当前快照信息
 */
tool.makeSnapshots();

getSnapshotByKey

作用: 获取当前快照列表指定快照信息

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "35165165"
返回值说明 类型 示例
快照对象 object 见下方

返回数据: 对象数组 Object, 数据格式如下

var obj = {
    cameraState: cameraState, //{string} 对象,相机状态,包含position、target、up
    componentState: componentState, //{string} 对象数组 , 构件信息,
    highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
    highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
    imageURL: imgURL, //{base64} 当前canvas的截图
    width: w, //{int} 图片宽度,当前canvas图片的宽度
    height: h, //{int} 图片高度,当前canvas图片的高度
    num: num, //{int} 当前快照列表的序号
    code: new Date().getTime().toString(),
    name: "快照" + num, //快照名称
    description: "无注释" //快照描述
}

调用方式:

/**
 * 该方法用来返回指定的快照信息
 * @function getSnapshotByKey
 * @param {string} key 快照key
 * @return {object} {cameraState: cameraState,      //{Object} 对象,相机状态,包含position、target、upcomponentState: componentState,   //{Array} 对象数组 , 构件信息,highlightComponentsKeys: highlightComponentsKeys,   //{Array}数组,高亮的构件key集合highlightModelsKeys: highlightModelsKeys,   //{Array}数组,高亮的模型key集合imageURL: imgURL,  //{base64} 当前canvas的截图width: w,    //{int} 图片宽度,当前canvas图片的宽度height: h,   //{int} 图片高度,当前canvas图片的高度num: num,    //{int} 当前快照列表的序号code: new Date().getTime().toString(),   name: "快照" + num,     //快照名称description: "无注释"   //快照描述}
 */
snapshot.getSnapshotByKey("35165165");

getAllSnapshot

作用: 获取当前快照列表所有的快照信息

形式参数: 无

名称 说明 类型 是否必须 示例
返回值说明 类型 示例
快照对象数组 [object] 见下方

返回数据: 对象数组 [Object], 数据格式如下

[{
    cameraState: cameraState, //{string} 对象,相机状态,包含position、target、up
    componentState: componentState, //{string} 对象数组 , 构件信息,
    highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
    highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
    imageURL: imgURL, //{base64} 当前canvas的截图
    width: w, //{int} 图片宽度,当前canvas图片的宽度
    height: h, //{int} 图片高度,当前canvas图片的高度
    num: num, //{int} 当前快照列表的序号
    code: new Date().getTime().toString(),
    name: "快照" + num, //快照名称
    description: "无注释" //快照描述
}]


调用方式:

/**
 * 该方法用来返回所有快照信息
 * @function getAllSnapshot
 * @return {array} [{cameraState: cameraState,      //{Object} 对象,相机状态,包含position、target、upcomponentState: componentState,   //{Array} 对象数组 , 构件信息,highlightComponentsKeys: highlightComponentsKeys,   //{Array}数组,高亮的构件key集合highlightModelsKeys: highlightModelsKeys,   //{Array}数组,高亮的模型key集合imageURL: imgURL,  //{base64} 当前canvas的截图width: w,    //{int} 图片宽度,当前canvas图片的宽度height: h,   //{int} 图片高度,当前canvas图片的高度num: num,    //{int} 当前快照列表的序号code: new Date().getTime().toString(),   name: "快照" + num,     //快照名称description: "无注释"   //快照描述}]
 */
snapshot.getAllSnapshot();

load

作用: 根据传参初始加载快照列表。

形式参数: 有

名称 说明 类型 是否必须 示例
snapshotsArr 快照信息数组 Array, 对象数组 看调用方式举例

返回数据: 无

调用方式:

        /**
         * load 根据传参初始加载快照列表
         * @function load
         * @param {array} snapshotsArr 为快照对象数组
         * @return {void}
         */

        var snapshotsArr = [{
            cameraState: cameraState, //{Object} 对象,相机状态,包含position、target、up
            componentState: componentState, //{Array} 对象数组 , 构件信息,
            highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
            imageURL: imgURL, //{base64} 当前canvas的截图
            width: w, //{int} 图片宽度,当前canvas图片的宽度
            height: h, //{int} 图片高度,当前canvas图片的高度
            num: num, //{int} 当前快照列表的序号
            code: new Date().getTime().toString(),
            name: "快照" + num, //快照名称
            description: "无注释" //快照描述
        }, {
            cameraState: cameraState, //{Object} 对象,相机状态,包含position、target、up
            componentState: componentState, //{Array} 对象数组 , 构件信息,
            highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
            imageURL: imgURL, //{base64} 当前canvas的截图
            width: w, //{int} 图片宽度,当前canvas图片的宽度
            height: h, //{int} 图片高度,当前canvas图片的高度
            num: num, //{int} 当前快照列表的序号
            code: new Date().getTime().toString(),
            name: "快照" + num, //快照名称
            description: "无注释" //快照描述
        }];
        snapshot.load(snapshotsArr);

1.3.2. 事件监听

下列方法默认值都为null, 需要开发者赋值,下面给出了调用这些方法时会传递的参数

addListener

作用: 截取用户在UI上触发的add事件

形式参数: 有

名称 说明 类型 是否必须 示例
parameter 快照信息 对象 Object 见下方
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true
parameter2 快照信息 对象 Object 否,如果传递了该参数,那么将用这个参数来创建快照 见下方

内部调用方式:

var parameter = {
    cameraState: cameraState, //{Object} 对象,相机状态,包含position、target、up
    componentState: componentState, //{Array} 对象数组 , 构件信息,
    highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
    highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
    imageURL: imgURL, //{base64} 当前canvas的截图
    width: w, //{int} 图片宽度,当前canvas图片的宽度
    height: h, //{int} 图片高度,当前canvas图片的高度
    num: num, //{int} 当前快照列表的序号
    code: new Date().getTime().toString(),
    name: "快照" + num, //快照名称
    description: "无注释" //快照描述
};
snapshot.addListener(parameter, function(state, parameter2) {
    if (state) {
        snapshot.add(parameter2 || parameter);
    }
});

deleteListener

作用: 截取用户在UI上触发的delete事件

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "123456"
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true

内部调用方式:

snapshot.deleteListener(key, function(state) {});

restoreToSnapshotListener

作用: 截取用户在UI上触发的restoreToSnapshot事件

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "123456"
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true

内部调用方式:

snapshot.restoreToSnapshotListener(key, function(state) {});

renameListener

作用: 截取用户在UI上触发的rename事件

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "123456"
name 快照name 字符串 string "快照1"
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true
name 快照name 字符串 string 否,如果传递了该参数,那么将用这个参数来重命名快照 "快照1"

内部调用方式:

snapshot.renameListener(key, name, function(state, name2) {});

annotationListener

作用: 截取用户在UI上触发的annotation事件

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "123456"
description 快照注释 字符串 string "注释1"
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true
description 快照注释 字符串 string 否,如果传递了该参数,那么将用这个参数来添加或替换快照注释 "注释1"

内部调用方式:

snapshot.annotationListener(key, name, function(state, name2) {});

updateListener

作用: 截取用户在UI上触发的update事件

形式参数: 有

名称 说明 类型 是否必须 示例
key 快照key 字符串 string "123456"
parameter 快照信息 对象 Object 见下方
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true
name 快照name 字符串 string "快照1"
key 快照key 字符串 string 否,如果传递了该参数,那么将用这个参数来更新快照 "123456"
parameter 快照信息 对象 Object 否,如果传递了该参数,那么将用这个参数来更新快照 见下方
var parameter = {
    cameraState: cameraState, //{Object} 对象,相机状态,包含position、target、up
    componentState: componentState, //{Array} 对象数组 , 构件信息,
    highlightComponentsKeys: highlightComponentsKeys, //{Array}数组,高亮的构件key集合
    highlightModelsKeys: highlightModelsKeys, //{Array}数组,高亮的模型key集合
    imageURL: imgURL, //{base64} 当前canvas的截图
    width: w, //{int} 图片宽度,当前canvas图片的宽度
    height: h, //{int} 图片高度,当前canvas图片的高度
    num: num, //{int} 当前快照列表的序号
    code: new Date().getTime().toString(),
    name: "快照" + num, //快照名称
    description: "无注释" //快照描述
};

内部调用方式:

snapshot.updateListener(key, parameter, function(state, key2, parameter2) {});

1.4. 标签

1.4.1. 方法

见文档中的标签类

1.4.2. 事件监听

const mark = bos3dui.mark

addListener

作用: 截取用户在UI上触发的add事件

形式参数: 有

名称 说明 类型 是否必须 示例
type 标签类型 字符串 string dom或 sprite
options 标签信息 对象 Object 见BIMWINNER. BOS3D. DOMMark和BIMWINNER. BOS3D. SpriteMark
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true
parameter2 标签信息 对象 Object 否,如果传递了该参数,那么将用这个参数来创建标签 见BIMWINNER. BOS3D. DOMMark和BIMWINNER. BOS3D. SpriteMark

内部调用方式:

mark.addListener(typeoptions, function(state, parameter2) {

});

deleteListener

作用: 截取用户在UI上触发的delete事件

形式参数: 有

名称 说明 类型 是否必须 示例
type 标签类型 字符串 string dom或 sprite
key 标签key 字符串 string "123456"
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true

内部调用方式:

mark.deleteListener(type, key, function(state) {});

updateListener

作用: 截取用户在UI上触发的update事件

形式参数: 有

名称 说明 类型 是否必须 示例
type 标签类型 字符串 string dom或 sprite
key 标签key 字符串 string "123456"
options 标签信息 对象 Object 见BIMWINNER. BOS3D. DOMMark和BIMWINNER. BOS3D. SpriteMark
callback 回调函数 方法 function 见下方
返回值说明 类型 示例
不需要

回调函数的参数

名称 说明 类型 是否必须 示例
state 状态, 为true时才会进行后续操作 布尔值 boolean true
name 标签name 字符串 string "标签1"
key 标签key 字符串 string 否,如果传递了该参数,那么将用这个参数来更新标签 "123456"
options2 标签信息 对象 Object 否,如果传递了该参数,那么将用这个参数来更新标签 见BIMWINNER. BOS3D. DOMMark和BIMWINNER. BOS3D. SpriteMark

内部调用方式:

mark.updateListener(type, key, options, function(state, key2, options2) {});

1.5. 批注

注:只有add方法支持旧的批注数据,一旦调用过add之后,旧的格式转化为新的格式,新版本导出的数据都是新格式。

const annotionStore = bos3dui.annotionStore;

1.5.1. 批注对象示例

let annotation = {
    data: {}, // svg上的数据,不要随意修改
    id: "string", // 程序内部生成的,作为批注的唯一标识,如果要修改,要确保唯一。
    name: "批注名",
    //snapshot保存相机和场景的一些信息,和之前一样
    snapshot: {
        cameraState: {},
        code: {},
        componentState: {},
        description: "string",
        highlightComponentsKeys: ["string"],
        highlightModelsKeys: ["string"],
    }
}

1.5.2. getAllAnnotations 获取所有批注(从界面上得到数据,然后按需保存起来)

const annotionStore = bos3dui.annotionStore;
let array = annotionStore.getAllAnnotations();
//array的类型为[{id:uuid,data:批注数据,snapshot:快照数据}],其中data就是AnnotationEditor.toJson返回的对象,id是为了标识批注

1.5.3. add 添加批注(从别的地方加载数据到界面上),不会触发addListener回调

支持添加旧的数据格式(图片,非svg)

const annotionStore = bos3dui.annotionStore;
annotionStore.add(item);
//item为getAllAnnotations返回的数组元素

1.5.4. delete 删除批注,不会触发deleteListener回调

const annotionStore = bos3dui.annotionStore;
annotionStore.delete(item.id);
//按照id来删除批注,item为getAllAnnotations返回的数组元素

1.5.5. update 更新批注,不会触发updateListener回调

const annotionStore = bos3dui.annotionStore;
annotionStore.update(item);
//item为getAllAnnotations返回的数组元素

1.5.6. rename 更新批注名,不会触发renameListener回调

const annotionStore = bos3dui.annotionStore;
annotionStore.rename(item.id, name);
//item为getAllAnnotations返回的数组元素, name为新的名字字符串

1.5.7. exit 退出编辑批注,不会触发exitListener回调

const annotionStore = bos3dui.annotionStore;
annotionStore.exit();

1.5.8. addListener 设置添加批注的回调函数

const annotionStore = bos3dui.annotionStore;
annotionStore.addListener = function(annotation, callback) {
    // 拦截到添加批注,在这里可以对annotation进行二次修改
    // ...
    // 一定要记得调用callback
    callback(true | false, annotation);
}
// callback有两个参数(state, annotation)
// state表示是否继续添加,true是,false否
// annotation是批注

1.5.9. deleteListener 设置删除批注的回调函数

const annotionStore = bos3dui.annotionStore;
annotionStore.deleteListener = function(annotationID, callback) {
    // 拦截到删除批注,可以决定是否要继续删除
    // ...
    // 一定要记得调用callback
    callback(true | false);
}
// callback有一个参数(state)
// state表示是否继续删除,true是,false否

1.5.10. updateListener 设置更新批注的回调函数

1、用户点击保存的时候会触发; 2、在批注列表点击“更新批注”按钮的时候会触发;

const annotionStore = bos3dui.annotionStore;
annotionStore.updateListener = function(annotation, callback) {
    // 拦截到更新批注,在这里可以对annotation进行二次修改
    // ...
    // 一定要记得调用callback
    callback(true | false, annotation);
}
// callback有两个参数(state)
// state表示是否继续更新,true是,false否
// annotation是批注

1.5.11. renameListener 设置批注名称的回调函数

const annotionStore = bos3dui.annotionStore;
annotionStore.renameListener = function(annotationID, name, callback) {
    // 拦截到设置批注名称,在这里可以对name进行二次修改或者进行合法验证
    // ...
    // 一定要记得调用callback
    callback(true | false, name);
}
// callback有两个参数(state, name)
// state表示是否继续更新批注名,true是,false否
// name是批注名

1.5.12. exitListener 退出当前编辑批注的回调函数

const annotionStore = bos3dui.annotionStore;
annotionStore.exitListener = function(callback) {
    // 拦截到用户退出操作
    // ...
    // 一定要记得调用callback
    callback(true | false);
}
// callback有一个参数(state)
// state表示是否继续退出,true是,false否

1.5.13. drawAnnotationToSvg 显示批注,将批注绘制到指定svg上

const annotionStore = bos3dui.annotionStore;
let array = annotionStore.getAllAnnotations();
// 第一个参数是AnnotationEditor实例方法toJson返回的数据
// svg必须已经添加到dom上
annotionStore.drawAnnotationToSvg(array[0].data, svg);

1.6. 显示路网

1.6.1. 说明

  • 显示之前,必须先自行用服务端接口创建路网。三维部分只负责显示

1.6.2. 用法

const bos3dui = new BOS3DUI(option)
/**
 * 添加路网
 * @param {string} modelKey - 模型key
 * @param {number[]} from - 起点坐标(三维)
 * @param {number[]} to - 终点坐标(三维)
 */
bos3dui.roadnet.add(modelKey, from, to)
/**
 * 移除路网
 * @param {string} modelKey - 模型key
 * @param {number[]} from - 起点坐标(三维)
 * @param {number[]} to - 终点坐标(三维)
 */
bos3dui.roadnet.remove(modelKey, from, to)
/**
 * 获取已添加的路网
 * @param {string} [modelKey] - 模型key。不填则获取所有模型的所有已添加路网
 * @param {number[]} [from] - 起点坐标(三维)。不填则获取指定模型的所有已添加路网
 * @param {number[]} [to] - 终点坐标(三维)。如果传入起点则必须传入终点
 * @return {null|object|[number,number,number][]} - 路网数据
 */
bos3dui.roadnet.getRoadnet(modelKey, from, to)

1.7. 右键菜单

1.7.1. 说明

  • 用户可以新增右键菜单

1.7.2. 用法

  /**
   * 添加自定义菜单
   * @param {string} name - 菜单名称
   * @param {boolen} isMore - 添加的自定义菜单放到外面的一级菜单还是“更多”里面的二级菜单,默认是外面的一级菜单
   * @param {function} function - 添加的自定义方法,没有参数会给到该函数,需要用户自己传参
   */
  bos3dui.plugin.addContextMenu({
      name: "自定义菜单名称",
      isMore: true, // 默认为外面
      onClick: () => {} // 自定义方法
  });
版权所有@盈嘉互联(北京)科技有限公司 京ICP备15051988号-9 Copyright © 2022 all right reserved,powered by Gitbook该文件修订时间: 2022-06-27 15:28:07

results matching ""

    No results matching ""