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 () {});