封装的PKPM BimView的方法
封装的方法
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的方法相关推荐
- Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire
升级到 Swift3.0 之后,新版本的 Alamofire 只支持 iOS 9.0 以上的系统,如果要适配 iOS 8,需要自己封装 URLSession,下面是笔者的方案: 这里使用的是 Swif ...
- java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法
在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...
- php smarty模板配置,封装Smarty模板的配置方法
封装Smarty模板的配置方法 Smarty模板的配置方法是应用Smaty模板的关键,但是用户不能在每次使用Smarty时都写一遍配置文件.这样不仅使服务器增加了负担,更主要的是使程序的可读性变差,为 ...
- 组件封装为mxp文件的方法
组件封装为mxp文件的方法 发布于:2007-2-18 13:24:44来源:不详阅读次数:本日:1 本周:3 本月:3 总数:135 TAG列表:暂时还没有tag 1.必须安装extension m ...
- ISE中将Verilog封装为IP核的方法
第一步:新建一个工程A 添加需要封装成IP核的代码到工程A中 第二步:属性设置 Synthesis-->Properties-->Xilinx Specific Options 把-iob ...
- 将自己写的经常复用的类封装成动态库的方法
C++的开发不像c#那么给力,基本上引用下就可以了,它的步骤比较繁琐. 第一步:制作动态库 利用VC新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cp ...
- python3读取excel方法封装_Python读取Excel的方法封装
今天需要从一个Excel文档(.xls)中导数据到数据库的某表,开始是手工一行行输的.后来想不能一直这样,就用Python写了下面的代码,可以很方便应对这种场景.比如利用我封装的这些方法可以很方便地生 ...
- java连接mysql封装代码_JDBC连接数据库方法的封装,以及查询数据方法的封装
(在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...
- golang mysql封装_自己封装的golang 操作数据库方法
这个是我用Go写的第一个东东,可能还存在些BUG没有测试到.这里主要是提供一个参考.各位可以改写成自己的风格. 在命令行下输入如下两条命令,进行安装 go get github.com/male110 ...
最新文章
- 成绩从大到小排序c语言,刚学c语言,老师让用if编一个五个数字从大到小的排序,有那个大神能帮我,谢谢啦...
- 上海交大c语言第一次作业,上海交大网络学院-计算机第一次作业及答案(含6次机会全部题目)-计算机基础的知识.docx...
- 标题和描述需注意什么才更有利于SEO首页优化?
- 一次请求到php都经过了哪些步骤,PHP高级之一次请求处理过程或生命周期详解
- Linux c编译库路径,【一点一点学Linux C】交叉编译时候如何配置连接库的搜索路径...
- 一个http请求完整过程的个人理解
- 成都鸿蒙脱模剂厂家,现场体验荣耀智慧屏与鸿蒙OS,荣耀Life成都店与您共享锐科技...
- hexo html代码高亮,使用 prismjs 自定义 Hexo 代码高亮
- android 重新设置lcd分辨率,wm命令使用方法(修改android 分辨率)修改
- SQL Server 触发器触发器
- 多年收集的一些稀有软件4
- 蓝桥杯 基础练习 字母图形
- 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
- uniapp 安卓 长按app 快捷方式 shortcut
- Jquery锚点缓慢移动到目标位置
- Android开源库项目集锦
- 测试人跳槽~怎么说离职原因新的公司比较能接受?
- 单片机AD转换程序 TLC2543
- 计算机防火墙打不开0x6d9,win7防火墙出现0x6d9该怎么办
- Core Data 使用