var bimViewer = function(option) { this.option = option; if (!option.viewToken) return console.log('viewToken不能为空'); if (!option.domElem) return console.log('domElem不能为空'); this.init(); } //初始化 bimViewer.prototype.init = function() { let _self = this; let options = new BimfaceSDKLoaderConfig(); options.viewToken = _self.option.viewToken; BimfaceSDKLoader.load(options, function(viewMetaData) { _self.succrssCallback(viewMetaData) }, function() { _self.failureCallback() }); } //load成功 bimViewer.prototype.succrssCallback = function(viewMetaData) { if (viewMetaData.viewType == "3DView") this.View3DRender(); } //load失败 bimViewer.prototype.failureCallback = function() { console.error('加载失败'); } //加载3D模型 bimViewer.prototype.View3DRender = function() { let _self = this; let webAppConfig = new Glodon.Bimface.Application.WebApplication3DConfig(); webAppConfig.domElement = this.option.domElem; webAppConfig.effectMode = 'fluency'; webAppConfig.enableCSMShadow = false; // 设置全局单位 webAppConfig.globalUnit = Glodon.Bimface.Common.Units.LengthUnits.Millimeter; // 创建WebApplication _self.app = new Glodon.Bimface.Application.WebApplication3D(webAppConfig); // 添加待显示的模型 _self.app.addView(_self.option.viewToken); // 从WebApplication获取viewer3D对象 _self.viewer3D = _self.app.getViewer(); _self.viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked, data => { if (data.eventType == 'Click') { //左击 console.log(data); } }) _self.viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded, function() { _self.model3D = _self.viewer3D.getModel(); _self.viewer3D.enableSSAOEffect(false); window.CLOUD.MaterialUtil.getDefaultSelectedMaterial = function() { return new window.CLOUD.MeshBasicClipMaterial({ color: '#3669b8', opacity: 0.7, transparent: !0, }); } if (_self.option.renderSuccess) _self.option.renderSuccess(); }); } //设置是否可旋转、缩放、平移 bimViewer.prototype.setCamera = function(option) { let _self = this; _self.viewer3D.enableTranslate(option.isPan || true); _self.viewer3D.enableOrbit(option.isRotate || true); _self.viewer3D.enableScale(option.isZoom || true); } //设置相机位置 bimViewer.prototype.setStatus = function(value) { this.viewer3D.getCamera().setStatus(value); } //设置视角 bimViewer.prototype.setView = function(type) { this.viewer3D.setView(Glodon.Bimface.Viewer.ViewOption[type]) this.viewer3D.render(); } //新增房间 bimViewer.prototype.insertRooms = function(option) { if (!this.roomManager) this.roomManager = this.viewer3D.getRoomManager(); let roomConfig = new Glodon.Bimface.Plugins.Rooms.RoomConfig(); roomConfig.viewer = this.viewer3D; roomConfig.roomId = option.id; roomConfig.geometry = { "type": "extrusion", "boundary": option.boundary, "height": option.height }; if (typeof option.roomColor == 'object') { roomConfig.roomColor = new Glodon.Web.Graphics.Color(option.roomColor.r, option.roomColor.g, option.roomColor.b, option.roomColor.a); } else { roomConfig.roomColor = new Glodon.Web.Graphics.Color("#EE799F", 0.8); } if (typeof option.frameColor == 'object') { roomConfig.frameColor = new Glodon.Web.Graphics.Color(option.frameColor.r, option.frameColor.g, option.frameColor.b, option.frameColor.a); } else { roomConfig.frameColor = new Glodon.Web.Graphics.Color("#90EE90", 0.8); } this.roomManager.addRoom(new Glodon.Bimface.Plugins.Rooms.Room(roomConfig)); this.viewer3D.render(); } //添加二维标签 bimViewer.prototype.addDrawable = function(option, successCallback) { // 初始化DrawableContainer let drawableConfig = new Glodon.Bimface.Plugins.Drawable.DrawableContainerConfig(); drawableConfig.viewer = this.viewer3D; let drawableContainer = new Glodon.Bimface.Plugins.Drawable.DrawableContainer(drawableConfig); // 创建自定义元素,可以是一个dom element,也可以是个字符串 let config = new Glodon.Bimface.Plugins.Drawable.CustomItemConfig(); config['content'] = option.html; config.viewer = this.viewer3D; config.worldPosition = option.position; config.opacity = 1; if (option.offsetY) config.offsetY = option.offsetY; if (option.offsetX) config.offsetX = option.offsetX; if (option.visibleDistance) config.visibleDistance = option.visibleDistance; //生成customItem实例 let customItem = new Glodon.Bimface.Plugins.Drawable.CustomItem(config); // 添加自定义标签 drawableContainer.addItem(customItem); // customItem.onClick(successCallback); // console.log(config); // this.viewer3D.render(); }