1. 视图类

位于:BOS2D. Viewer2D

基本概念
本模块用来管理二维图纸,每一个模型对应一套图纸,在程序里称之为 drawPackage,即视为图纸包; 每一个图纸包 包含 n 个图纸,称图纸为 draw,每张图纸具有一个 key,称为 drawKey,图纸用 Draw 类来表示; 每张图纸可能具有 n 个图层,称为 layer,用 DrawLayer 类来表示,程序内不会按照层来组织数据(是按构件来组织的),只用来处理和层相关的逻辑; 图纸里的数据,其实跟三维对应,也按照构件 key 来组织,构件用 DrawComponent 类来表示,一个完整的构件可能包含多个 part,用 DrawComponentPart 表示; 每一个 DrawComponentPart 包含 n 个路径,路径用 Path 表示,同一个 DrawComponentPart 的路径位于同一个 DrawLayer,反之则反之;

属性

viewerImpl

视图类具体实现

onDrawListLoad

图纸列表加载完成之后的回调函数,函数参数为图纸列表数组

onDrawLoad

图纸加载完成之后的回调函数,函数参数为 Draw 实例


1.1. 加载模型

1.1.1. addView

添加视图

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string M123456
projectKey 项目 key 字符串 string bos3d
token 校验 token 字符串 string
返回值说明 类型 示例
null null

调用方式:

/**
 * 添加视图
 * @function addView
 * @param modelKey {string} 模型的Key
 * @param projectKey {string} 项目Key
 * @param token {string} 校验token
 */
viewer2D.addView(modelKey, projectKey, token);

1.1.2. removeView

卸载视图,支持卸载加载中的图纸,取消正在进行的网络请求

名称 说明 类型 是否必须 示例
modelKey 模型 key 字符串 string M123456
返回值说明 类型 示例
是否成功 bool true

调用方式:

/**
 * 卸载模型,支持卸载加载中的模型,取消网络请求。
 * @function removeView
 * @param {String} modelKey - 模型Key
 * @return {Boolean} 是否成功
 */
viewer2D.removeView(modelKey);

1.1.3. removeAllView

卸载所有视图,支持卸载加载中的图纸,取消正在进行的网络请求

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

调用方式:

/**
 * 卸载所有模型,原理同上
 * @function removeAllView
 * @return {void}
 */
viewer2D.removeAllView();

1.1.4. addViewPortPackage

加载具有多视图的图纸数据

名称 说明 类型 是否必须 示例
url 图纸包的 key String "M1633945033944"
projectKey 项目的 key String "bos3dalpha"
token 校验 token 字符串 string
share 分享的 key 字符串 string
返回值说明 类型 示例
Promise Promise null

调用方式:

viewer2D.addViewPortPackage("M1633945033944", projectKey, () => {
    console.log(viewer2D.getLayouts());
});

1.1.5. getLayouts

获取当前图纸的视图(layout)

名称 说明 类型 是否必须 示例
null null null null
返回值说明 类型 示例
返回所有视图的数据 Array [ {name: 'Model', key: 'Model', isLoaded: true}]

调用方式:

console.log(viewer2D.getLayouts());

1.1.6. addViewFromGlobalInfo

添加图纸

名称 说明 类型 是否必须 示例
globalInfo globalInfo.json 文件地址 字符串 string './globalInfo.json'
返回值说明 类型 示例
null null

调用方式:

const infoJson = "./data/dwg/globalInfo.json";

viewer2D.addViewFromGlobalInfo(infoJson).then((e) => {
    //获取所有的图纸
    let keyArr = viewer2D.getDrawPackages();
    //根据图纸的name显示图纸
    viewer2D.showViewLayoutByName(keyArr[0]);
});

1.1.7. showViewLayoutByName

根据图纸名字显示对应图纸

名称 说明 类型 是否必须 示例
name 要显示的图纸名字 字符串 string 'M312324'
返回值说明 类型 示例
null null

调用方式:

const infoJson = "./data/dwg/globalInfo.json";

viewer2D.addViewFromGlobalInfo(infoJson).then((e) => {
    //获取所有的图纸
    let keyArr = viewer2D.getDrawPackages();
    //根据图纸的name显示图纸
    viewer2D.showViewLayoutByName(keyArr[0]);
});

1.1.8. getDrawPackages

获取当前所有图纸的名字(需要在图纸加载完之后调用)

名称 说明 类型 是否必须 示例
null null null null
返回值说明 类型 示例
图纸名字的数组 Array[String] null

调用方式:

//获取所有的图纸
let keyArr = viewer2D.getDrawPackages();

1.2. 图纸相关

1.2.1. showDraw

显示图纸,可能是个异步方法: 如果要显示的图纸还没加载完成,则在加载完成之后才会去显示; 如果已经加载,则直接显示。

名称 说明 类型 是否必须 示例
drawKey 图纸 key string null
callback 显示成功后的回调 function null
返回值说明 类型 示例
null null

调用方式:

/**
 * 显示图纸
 * @param drawKey 图纸的key
 * @param callback 成功显示后的回调,参数为图纸包含的所有图层信息数组
 */
viewer2D.showDraw(drawKey, function (layers) {
    // layers同getCurrentDrawLayers的返回,表示图层信息数组
});

1.2.2. getCurrentDrawList

获取图纸列表,可能会异步执行: 当图纸列表已经加载完成,则直接返回,否则在回调里返回。

名称 说明 类型 是否必须 示例
callback 返回结果的回调 function null
返回值说明 类型 示例
图纸列表数组 或 undefined Array / undefined null

调用方式:

/**
 * 获取图纸列表
 * @param callback 回调函数,参数为图纸基本信息的数组
 * @returns {void|Array}
 */
viewer2D.getCurrentDrawList(function (list) {
    // list表示图纸信息数组
});

1.3. 图层相关

1.3.1. getCurrentDrawLayers

获取当前显示图纸的所有图层信息

名称 说明 类型 是否必须 示例
null null null null
返回值说明 类型 示例
包含图层基本信息的数组 Array null

调用方式:

/**
 * 获取当前显示图纸的所有图层信息
 * @returns Array 图层基本信息
 */
let result = viewer2D.getCurrentDrawLayers();

1.3.2. showDrawLayer

显示图层

名称 说明 类型 是否必须 示例
drawLayer 图层基本信息,getCurrentDrawLayers 返回的 Object null
返回值说明 类型 示例
null null

调用方式:

/**
 * 显示图层
 * 参数是getCurrentDrawLayers返回的元素
 * @param drawLayer
 */
let result = viewer2D.getCurrentDrawLayers();
viewer2D.showDrawLayer(result[0]);

1.3.3. hideDrawLayer

隐藏图层

名称 说明 类型 是否必须 示例
drawLayer 图层基本信息,getCurrentDrawLayers 返回的 Object null
返回值说明 类型 示例
null null

调用方式:

/**
 * 隐藏图层
 * 参数是getCurrentDrawLayers返回的元素
 * @param drawLayer
 */
let result = viewer2D.getCurrentDrawLayers();
viewer2D.hideDrawLayer(result[0]);

1.3.4. showAllLayer

显示当前图纸所有图层

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

调用方式:

/**
 * 显示当前图纸所有图层
 */
viewer2D.showAllLayer();

1.3.5. hideAllLayer

隐藏当前图纸所有图层

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

调用方式:

/**
 * 隐藏当前图纸所有图层
 */
viewer2D.hideAllLayer();

1.4. 颜色相关

1.4.1. setBackGroundColor

设置场景背景色

名称 说明 类型 是否必须 示例
color 颜色 string "#000000"
opacity 透明度 number 1
返回值说明 类型 示例
null null

调用方式:

/**
 * 设置场景背景色
 * @function setBackGroundColor
 * @param {string}  color 要设置的颜色,范围 #000000-#FFFFFF
 * @param {number} opacity   要设置的不透明度,范围 0-1
 * @return {void}
 */
viewer2D.setBackGroundColor(color, opacity);

1.4.2. setLayerColor

根据图层名字设置图层颜色

名称 说明 类型 是否必须 示例
layerName 图层的颜色 string "layer-1"
color 要设置的颜色 string "#000000"
drawKey 透明度 string null
返回值说明 类型 示例
null null

调用方式:

/**
 * 根据图层名字设置图层颜色
 * @param layerName
 * @param color
 * @param drawKey 如果没传,表示在当前图纸中寻找layer
 */
viewer2D.setLayerColor(layerName, color, drawKey);

1.4.3. setAllLayerColor

设置所有图层的颜色

名称 说明 类型 是否必须 示例
color 要设置的颜色 string "#000000"
drawKey 透明度 string null
返回值说明 类型 示例
null null

调用方式:

/**
 * 设置所有图层的颜色
 * @param color
 * @param drawKey 如果没传,表示在当前图纸中寻找layer
 */
viewer2D.setAllLayerColor(color, drawKey);

1.4.4. openBlackWhiteMode

开启黑白模式

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

调用方式:

/**
 * 开启黑白模式
 */
viewer2D.openBlackWhiteMode();

1.4.5. closeBlackWhiteMode

关闭黑白模式

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

调用方式:

/**
 * 关闭黑白模式
 */
viewer2D.closeBlackWhiteMode();

1.4.6. clearAllCustomLayerColor

清除所有设置过的图层颜色

名称 说明 类型 是否必须 示例
drawKey 透明度 string null
返回值说明 类型 示例
null null

调用方式:

/**
 * 清除所有设置过的图层颜色
 * @param drawKey 如果没传,表示当前图纸
 */
viewer2D.clearAllCustomLayerColor();

1.5. 构件相关

1.5.1. setOnSelectComponentCallback

设置选中构件的回调函数,会先清理所有之前添加或者设置的 callback

名称 说明 类型 是否必须 示例
callback 当有构件被选中时候的回调,参数是构件 key 组成的数组 function null
返回值说明 类型 示例
null null

调用方式:

/**
 * 设置选中构件的回调函数,会先清理所有之前添加或者设置的callback
 * @param callback 回调函数,参数为两个数组,1、构件keys,2、构件图元keys;可以为undefined
 * callback可以为undefined,这时候会删除所有之前添加的callback
 */
viewer2D.setOnSelectComponentCallback(function (partKeys, comKeys) {});

1.5.2. addOnSelectComponentCallback

添加选中构件的回调函数

名称 说明 类型 是否必须 示例
callback 当有构件被选中时候的回调,参数是构件 key 组成的数组 function null
返回值说明 类型 示例
null null

调用方式:

/**
 * 添加选中构件的回调函数
 * @param callback 参数为两个数组,1、构件keys,2、构件图元keys;
 */
viewer2D.addOnSelectComponentCallback(function (partKeys, comKeys) {});

1.5.3. highlightComponentsByKeys

高亮构件

名称 说明 类型 是否必须 示例
keys 构件的 key 组成的数组 function null
返回值说明 类型 示例
null null

调用方式:

/**
 * 高亮构件
 * @param keys 数组,包含构件的key
 */
viewer2D.highlightComponentsByKeys(keys);

1.5.4. clearAllHighlightComponents

取消所有高亮效果

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

调用方式:

/**
 * 取消所有高亮效果
 */
viewer2D.clearAllHighlightComponents(keys);

1.5.5. focusOnComponentByKey

聚焦构件

名称 说明 类型 是否必须 示例
key 构件 key string
isHighlight 是否高亮构件,缺省为否 boolean true
needZoom 是否需要缩放,缺省为否 boolean true
返回值说明 类型 示例
null null

调用方式:

/**
 * 聚焦到构件
 * @param key
 * @param isHighlight 表示是否高亮该构件
 */
viewer2D.focusOnComponentByKey(key, true, false);

1.5.6. focusOnComponentByKeys

聚焦构件组

名称 说明 类型 是否必须 示例
keys 构件 key 数组 Array
isHighlight 是否高亮构件,缺省为否 boolean true
needZoom 是否需要缩放,缺省为否 boolean true
返回值说明 类型 示例
null null

调用方式:

/**
 * 聚焦到构件
 * @param key
 * @param isHighlight 表示是否高亮该构件
 */
viewer2D.focusOnComponentByKeys(keys, true, false);

1.6. 相机相关

1.6.1. show3DCamera

在图纸上显示 viewer3D 中的相机位置和方向

名称 说明 类型 是否必须 示例
position 相机的位置,世界坐标系 array [1000, 1000]
direction 方向向量,二维 array [100, 50]
返回值说明 类型 示例
null null

调用方式:

/**
 * 在图纸上显示viewer3D中的相机位置和方向
 * @param position
 * @param direction
 */
viewer2D.show3DCamera(position, direction);

1.6.2. hide3DCamera

隐藏 viewer3D 中的相机

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

调用方式:

/**
 * 隐藏viewer3D中的相机
 */
viewer2D.hide3DCamera();

1.6.3. getCameraStatus

获取相机状态对象

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

调用方式:

/**
 * 获取相机状态对象
 * @returns {*} 包含相机信息
 */
let status = viewer2D.getCameraStatus();

1.6.4. setCameraStatus

设置相机状态

名称 说明 类型 是否必须 示例
status 相机状态对象 Object null
返回值说明 类型 示例
null null

调用方式:

/**
 * 设置相机状态
 * @param status 由getCameraStatus返回的对象
 */
let status = viewer2D.getCameraStatus();
viewer2D.setCameraStatus(status);

1.6.5. restoreCameraStatus

恢复相机到初始设置

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

调用方式:

/**
 * 恢复相机到初始设置
 */
viewer2D.restoreCameraStatus();

1.7. 事件

事件类型见 常量中的 EVENT

1.7.1. registerDrawEventListener

添加图纸相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS2D. EVENTS. ON_CLICK_PICK
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来添加监听器
 * @function registerDrawEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer2D.registerDrawEventListener(BOS2D.EVENTS.ON_CLICK_PICK, function () {});

1.7.2. unregisterDrawEventListener

移除图纸相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS2D. EVENTS. ON_CLICK_PICK
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来移除监听器
 * @function unregisterDrawEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调j
 * @return {void}
 */
viewer2D.unregisterDrawEventListener(BOS2D.EVENTS.ON_CLICK_PICK, function () {});

1.7.3. registerControlEventListener

添加控制相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS2D. EVENTS. ON_CONTROL_ENTER
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来添加监听器
 * @function registerControlEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer2D.registerControlEventListener(BOS2D.EVENTS.ON_CONTROL_ENTER, function () {});

1.7.4. unregisterControlEventListener

移除控制相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS2D. EVENTS. ON_CONTROL_ENTER
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来移除监听器
 * @function unregisterControlEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer2D.unregisterControlEventListener(BOS2D.EVENTS.ON_CONTROL_ENTER, function () {});

1.7.5. registerCameraEventListener

添加相机相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS3D. EVENTS. ON_CAMERA_CHANGE
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来添加监听器
 * @function registerCameraEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer2D.registerCameraEventListener(BOS2D.EVENTS.ON_CAMERA_CHANGE, function () {});

1.7.6. unregisterCameraEventListener

移除相机相关事件

名称 说明 类型 是否必须 示例
type 监听的类型 字符串 string BOS2D. EVENTS. ON_CAMERA_CHANGE
listener 监听的回调 方法 function function(){}
/**
 * 该方法用来移除监听器
 * @function unregisterCameraEventListener
 * @param {(string)} type  监听的类型
 * @param {function} listener  监听的回调
 * @return {void}
 */
viewer2D.unregisterCameraEventListener(BOS2D.EVENTS.ON_CAMERA_CHANGE, function () {});
版权所有@盈嘉互联(北京)科技有限公司 京ICP备15051988号-9 Copyright © 2022 all right reserved,powered by Gitbook该文件修订时间: 2022-05-09 16:08:01

results matching ""

    No results matching ""