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