封装的方法

var ObvApiWrapper;
if (!ObvApiWrapper) {ObvApiWrapper = {};
}
ObvApiWrapper = function(build, obvApiObj, applicationObj) {var self = this;var obvApi = obvApiObj;var application = applicationObj;var build = build; //用于加载文档和模型的对象self.getObvApi = function() {return obvApi;};//选中,展示,隔离,隐藏操作self.select = function(nodeIdArray) {this.getObvApi() && this.getObvApi().roomSelect(nodeIdArray);};self.hideAll = function() {this.getObvApi() && this.getObvApi().hideAll();};self.hide = function(nodeIds) {this.getObvApi() && this.getObvApi().hide(nodeIds);};self.show = function(nodeIds) {this.getObvApi() && this.getObvApi().show(nodeIds);};self.showAll = function() {this.getObvApi() && this.getObvApi().showAll();};self.setIsolation = function(param) {this.getObvApi() && this.getObvApi().setIsolation(param);};//设置颜色,恢复颜色self.restoreObjectsColor = function(nodeIdArray) {this.getObvApi() &&this.getObvApi().getModels().length > 0 &&this.getObvApi().restoreObjectsColor(nodeIdArray);};self.restoreObjectsColor = function() {this.getObvApi() &&this.getObvApi().getModels().length > 0 &&this.getObvApi().restoreObjectsColor();};self.setObjectsColor = function(nodeIds, r, g, b, a) {this.getObvApi() && this.getObvApi().setObjectsColor(nodeIds, r, g, b, a);};//设置视角self.fitToView = function() {this.getObvApi() && this.getObvApi().fitToView();};self.fitToView = function(nodeIdArray) {this.getObvApi() && this.getObvApi().fitToView(nodeIdArray);};self.setViewTo = function(position, target) {this.getObvApi() && this.getObvApi().setViewTo(position, target);};//获取模型的id,和id和name的互找self.getModelIds = function() {if (this.getObvApi()) {return this.getObvApi().getModelIds();}};self.getModelNameById = function(modelId) {if (this.getObvApi()) {var model = this.getObvApi().getModelById(modelId);if (model) {return model.name;}}};self.getModelIdByName = function(name) {if (this.getObvApi()) {return this.getObvApi().getModelIdByName(name);}};self.setCamera = function(camera) {var viewer = this.getViewer();new OBV.Controllers.Viewer3d.ViewController(viewer).setViewFromCameraInfoSync(camera, true);};self.getCameraInfo = function(camera) {var viewer = this.getViewer();new OBV.Controllers.Viewer3d.ViewController(viewer).setViewFromCameraInfoSync(camera, true);};//是否打开,不可见构件的透明化显示self.isOpenXRay = function(val) {if (self.getObvApi()) {if (val) {this.getObvApi().setXRayColor(200, 200, 200, 0.1, false);} else {this.getObvApi().restoreXRayColor();}}};self.getViewer = function() {return this.getObvApi().getViewer();};self.unloadModel = function(modelId) {this.getObvApi() && this.getObvApi().unloadModel(modelId);};//加载模型,外调self.loadDocumentByUrn = function(documentUrn, resolve) {build.loadDocument(application, documentUrn).then(function(obvDocument) {const viewer3dItem = obvDocument.getViewer3dItem(); // guidif (typeof resolve === "function") {resolve();}build.load3dModels(obvApi, {obvDocument,viewer3dItem}).then(function(result) {console.log("load3dModels", result);});});};self.getMarkerAddin = function(callback) {if (!self.getObvApi()) {return;}var addinManager = self.getObvApi().getAddinManager();// 插件的IDvar markerAddinId = "OBVAddins.Marker"; //写死window["OBVAddins"].Marker.MarkerAddin.AddinId;// 获取插件var markerAddin = addinManager.getAddin(markerAddinId);if (!markerAddin) {// 插件没有加载过,需要加载到平台中addinManager.loadAddin(markerAddinId).then(function() {self.markerAddin = addinManager.getAddin(markerAddinId);callback();}).catch(function() {if (!self.markerAddin) {console.error("无法加载插件:", markerAddinId);}});} else {self.markerAddin = markerAddin;callback();}// return markerAddin;};//功能上创建标注self.createMarker = function(markerItem, item, message) {var markerAddin = self.markerAddin;if (!markerAddin) {return;}var position;//构件做标注可以if (item == "object") {var bbox = this.getObvApi().getObjectsBounds(markerItem.position);if (!bbox) {return;}position = bbox.center();} else {position = markerItem.position;}var tag = markerItem;var anchor = " "; // 'relationItem.relation.anchor'var id = new Date().getTime() + Math.random() * 100; //relationItem.relation.id + ''markerAddin.createTextSymbolMarker(position,anchor,tag,message,id,1,1);};//清空标注self.clearMarkers = function() {var markerAddin = self.markerAddin;if (!markerAddin) {return;}markerAddin.clearAnnotations();};//标注的点击事件self.getMarkerAnnotationClickedEventListener = function(resolve) {var markerAddin = self.markerAddin;markerAddin.addEventListener(window["OBVAddins"].Marker.MarkerEventTypes.ANNOTATION_CLICKED,annotation => {let nodeIdArray = annotation.data.tag.position;self.getObvApi().restoreObjectsColor();//  self.getObvApi().setObjectsColor(nodeIdArray, 56, 184, 49, 1);self.getObvApi().setObjectsColor(nodeIdArray, 255, 0, 0, 1);if (typeof resolve === "function") {resolve(annotation.data);}});};//标注的点击事件self.getMarkerSelectedEventListener = function(resolve) {var markerAddin = self.markerAddin;markerAddin.addEventListener(window["OBVAddins"].Marker.MarkerEventTypes.MARKER_SELECTED,annotation => {let nodeIdArray = annotation.data.tag.position;self.getObvApi().restoreObjectsColor();// self.getObvApi().setObjectsColor(nodeIdArray, 56, 184, 49, 1);self.getObvApi().setObjectsColor(nodeIdArray, 255, 0, 0, 1);if (typeof resolve === "function") {resolve(annotation.data);}});};/*** // 根据guid 获得 nodeId* @param {OBVAPI} obvApi* @param {*成功后的回调} successCallback* @param {*失败后的回调} errorCallback* @param {*modelId} modelId*/self.getMapGuid = function(successCallback, errorCallback) {if (!this.getObvApi()) {return;}var modelIds = this.getObvApi().getModelIds();var obvApi = this.getObvApi();var obj = {};var mapIndex = 0;modelIds.forEach(function(modelId) {getObjectTree(obvApi,modelId,function(mapData) {for (var key in mapData) {obj[key] = mapData[key];}mapIndex++;if (mapIndex === modelIds.length) {successCallback(obj);}},function() {errorCallback(obj);});});};//通过一个modelId找到树以及guid的映射关系function getObjectTree(obvApi, modelId, successCallback, errorCallback) {obvApi.getObjectTree(modelId, function(objTree) {var mapGuid = {};var modelId = objTree.modelId;var nodeIdArray = objTree.dbIdToNode;var nodeIdArrayLastIndex = nodeIdArray.length - 1;nodeIdArray.forEach(function(item, arrIndex) {// console.log("indexArr: ", indexarr);var nodeId = {dbId: item.dbId,modelId: modelId,hasChildren: !!item.children};// var nodeId = {dbId: item.dbId, modelId: modelId}obvApi.getProperties(nodeId,function(result) {for (var i = 0; i < result.properties.length; i++) {var name = result.properties[i].displayName;var val = result.properties[i].displayValue;if (name === "Guid" || name === "OBVID") {mapGuid[val] = nodeId;break;}}if (arrIndex === nodeIdArrayLastIndex) {successCallback(mapGuid);}},function(error) {if (arrIndex === nodeIdArrayLastIndex) {successCallback(mapGuid);}});});});}
};

  

转载于:https://www.cnblogs.com/xuqp/p/11551881.html

封装的PKPM BimView的方法相关推荐

  1. Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire

    升级到 Swift3.0 之后,新版本的 Alamofire 只支持 iOS 9.0 以上的系统,如果要适配 iOS 8,需要自己封装 URLSession,下面是笔者的方案: 这里使用的是 Swif ...

  2. java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法

    在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...

  3. php smarty模板配置,封装Smarty模板的配置方法

    封装Smarty模板的配置方法 Smarty模板的配置方法是应用Smaty模板的关键,但是用户不能在每次使用Smarty时都写一遍配置文件.这样不仅使服务器增加了负担,更主要的是使程序的可读性变差,为 ...

  4. 组件封装为mxp文件的方法

    组件封装为mxp文件的方法 发布于:2007-2-18 13:24:44来源:不详阅读次数:本日:1 本周:3 本月:3 总数:135 TAG列表:暂时还没有tag 1.必须安装extension m ...

  5. ISE中将Verilog封装为IP核的方法

    第一步:新建一个工程A 添加需要封装成IP核的代码到工程A中 第二步:属性设置 Synthesis-->Properties-->Xilinx Specific Options 把-iob ...

  6. 将自己写的经常复用的类封装成动态库的方法

    C++的开发不像c#那么给力,基本上引用下就可以了,它的步骤比较繁琐. 第一步:制作动态库 利用VC新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cp ...

  7. python3读取excel方法封装_Python读取Excel的方法封装

    今天需要从一个Excel文档(.xls)中导数据到数据库的某表,开始是手工一行行输的.后来想不能一直这样,就用Python写了下面的代码,可以很方便应对这种场景.比如利用我封装的这些方法可以很方便地生 ...

  8. java连接mysql封装代码_JDBC连接数据库方法的封装,以及查询数据方法的封装

    (在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...

  9. golang mysql封装_自己封装的golang 操作数据库方法

    这个是我用Go写的第一个东东,可能还存在些BUG没有测试到.这里主要是提供一个参考.各位可以改写成自己的风格. 在命令行下输入如下两条命令,进行安装 go get github.com/male110 ...

最新文章

  1. 成绩从大到小排序c语言,刚学c语言,老师让用if编一个五个数字从大到小的排序,有那个大神能帮我,谢谢啦...
  2. 上海交大c语言第一次作业,上海交大网络学院-计算机第一次作业及答案(含6次机会全部题目)-计算机基础的知识.docx...
  3. 标题和描述需注意什么才更有利于SEO首页优化?
  4. 一次请求到php都经过了哪些步骤,PHP高级之一次请求处理过程或生命周期详解
  5. Linux c编译库路径,【一点一点学Linux C】交叉编译时候如何配置连接库的搜索路径...
  6. 一个http请求完整过程的个人理解
  7. 成都鸿蒙脱模剂厂家,现场体验荣耀智慧屏与鸿蒙OS,荣耀Life成都店与您共享锐科技...
  8. hexo html代码高亮,使用 prismjs 自定义 Hexo 代码高亮
  9. android 重新设置lcd分辨率,wm命令使用方法(修改android 分辨率)修改
  10. SQL Server 触发器触发器
  11. 多年收集的一些稀有软件4
  12. 蓝桥杯 基础练习 字母图形
  13. 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
  14. uniapp 安卓 长按app 快捷方式 shortcut
  15. Jquery锚点缓慢移动到目标位置
  16. Android开源库项目集锦
  17. 测试人跳槽~怎么说离职原因新的公司比较能接受?
  18. 单片机AD转换程序 TLC2543
  19. 计算机防火墙打不开0x6d9,win7防火墙出现0x6d9该怎么办
  20. Core Data 使用

热门文章

  1. 联想小新pro13关闭自动调节亮度
  2. 用 CPU 烤出来的肉,会特别香吗?
  3. html代码中的空格怎么删除,HTML – 如何删除页脚之间的空格
  4. 纯字体logo怎么设计?设计logo几步完成
  5. win10 新版文件资源管理器
  6. 九种破解Windows XP登录密码的方法
  7. MATLAB时频工具箱函数说明(包含工具箱的下载,安装,使用)
  8. Unity中模拟键盘按键(转)
  9. 计算机房上课安全教育内容,机房实训安全教育学生须知
  10. python趣味编程100例-儿童Python趣味编程课程