bimViewer.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. var bimViewer = function(option) {
  2. this.option = option;
  3. if (!option.viewToken) return console.log('viewToken不能为空');
  4. if (!option.domElem) return console.log('domElem不能为空');
  5. this.init();
  6. }
  7. //初始化
  8. bimViewer.prototype.init = function() {
  9. let _self = this;
  10. let options = new BimfaceSDKLoaderConfig();
  11. options.viewToken = _self.option.viewToken;
  12. BimfaceSDKLoader.load(options, function(viewMetaData) {
  13. _self.succrssCallback(viewMetaData)
  14. }, function() {
  15. _self.failureCallback()
  16. });
  17. }
  18. //load成功
  19. bimViewer.prototype.succrssCallback = function(viewMetaData) {
  20. if (viewMetaData.viewType == "3DView") this.View3DRender();
  21. }
  22. //load失败
  23. bimViewer.prototype.failureCallback = function() {
  24. console.error('加载失败');
  25. }
  26. //加载3D模型
  27. bimViewer.prototype.View3DRender = function() {
  28. let _self = this;
  29. let webAppConfig = new Glodon.Bimface.Application.WebApplication3DConfig();
  30. webAppConfig.domElement = this.option.domElem;
  31. webAppConfig.effectMode = 'fluency';
  32. webAppConfig.enableCSMShadow = false;
  33. // 设置全局单位
  34. webAppConfig.globalUnit = Glodon.Bimface.Common.Units.LengthUnits.Millimeter;
  35. // 创建WebApplication
  36. _self.app = new Glodon.Bimface.Application.WebApplication3D(webAppConfig);
  37. // 添加待显示的模型
  38. _self.app.addView(_self.option.viewToken);
  39. // 从WebApplication获取viewer3D对象
  40. _self.viewer3D = _self.app.getViewer();
  41. _self.viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked, data => {
  42. if (data.eventType == 'Click') { //左击
  43. console.log(data);
  44. }
  45. })
  46. _self.viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded, function() {
  47. _self.model3D = _self.viewer3D.getModel();
  48. _self.viewer3D.enableSSAOEffect(false);
  49. window.CLOUD.MaterialUtil.getDefaultSelectedMaterial = function() {
  50. return new window.CLOUD.MeshBasicClipMaterial({
  51. color: '#3669b8',
  52. opacity: 0.7,
  53. transparent: !0,
  54. });
  55. }
  56. if (_self.option.renderSuccess) _self.option.renderSuccess();
  57. });
  58. }
  59. //设置是否可旋转、缩放、平移
  60. bimViewer.prototype.setCamera = function(option) {
  61. let _self = this;
  62. _self.viewer3D.enableTranslate(option.isPan || true);
  63. _self.viewer3D.enableOrbit(option.isRotate || true);
  64. _self.viewer3D.enableScale(option.isZoom || true);
  65. }
  66. //设置相机位置
  67. bimViewer.prototype.setStatus = function(value) {
  68. this.viewer3D.getCamera().setStatus(value);
  69. }
  70. //设置视角
  71. bimViewer.prototype.setView = function(type) {
  72. this.viewer3D.setView(Glodon.Bimface.Viewer.ViewOption[type])
  73. this.viewer3D.render();
  74. }
  75. //新增房间
  76. bimViewer.prototype.insertRooms = function(option) {
  77. if (!this.roomManager) this.roomManager = this.viewer3D.getRoomManager();
  78. let roomConfig = new Glodon.Bimface.Plugins.Rooms.RoomConfig();
  79. roomConfig.viewer = this.viewer3D;
  80. roomConfig.roomId = option.id;
  81. roomConfig.geometry = {
  82. "type": "extrusion",
  83. "boundary": option.boundary,
  84. "height": option.height
  85. };
  86. if (typeof option.roomColor == 'object') {
  87. roomConfig.roomColor = new Glodon.Web.Graphics.Color(option.roomColor.r, option.roomColor.g,
  88. option.roomColor.b, option.roomColor.a);
  89. } else {
  90. roomConfig.roomColor = new Glodon.Web.Graphics.Color("#EE799F", 0.8);
  91. }
  92. if (typeof option.frameColor == 'object') {
  93. roomConfig.frameColor = new Glodon.Web.Graphics.Color(option.frameColor.r, option.frameColor.g,
  94. option.frameColor.b, option.frameColor.a);
  95. } else {
  96. roomConfig.frameColor = new Glodon.Web.Graphics.Color("#90EE90", 0.8);
  97. }
  98. this.roomManager.addRoom(new Glodon.Bimface.Plugins.Rooms.Room(roomConfig));
  99. this.viewer3D.render();
  100. }
  101. //添加二维标签
  102. bimViewer.prototype.addDrawable = function(option, successCallback) {
  103. // 初始化DrawableContainer
  104. let drawableConfig = new Glodon.Bimface.Plugins.Drawable.DrawableContainerConfig();
  105. drawableConfig.viewer = this.viewer3D;
  106. let drawableContainer = new Glodon.Bimface.Plugins.Drawable.DrawableContainer(drawableConfig);
  107. // 创建自定义元素,可以是一个dom element,也可以是个字符串
  108. let config = new Glodon.Bimface.Plugins.Drawable.CustomItemConfig();
  109. config['content'] = option.html;
  110. config.viewer = this.viewer3D;
  111. config.worldPosition = option.position;
  112. config.opacity = 1;
  113. if (option.offsetY) config.offsetY = option.offsetY;
  114. if (option.offsetX) config.offsetX = option.offsetX;
  115. if (option.visibleDistance) config.visibleDistance = option.visibleDistance;
  116. //生成customItem实例
  117. let customItem = new Glodon.Bimface.Plugins.Drawable.CustomItem(config);
  118. // 添加自定义标签
  119. drawableContainer.addItem(customItem);
  120. // customItem.onClick(successCallback);
  121. // console.log(config);
  122. // this.viewer3D.render();
  123. }