test-bim.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <!-- 本DEMO中将演示如何通过API设置自定义模型显示视角及工具条上的HOME视图 -->
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>自定义HOME视图</title>
  7. <style type="text/css">
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. html,
  13. body {
  14. height: 100%;
  15. }
  16. .buttons {
  17. font-size: 0;
  18. }
  19. .button {
  20. margin: 5px 0 5px 5px;
  21. width: 100px;
  22. height: 30px;
  23. border-radius: 3px;
  24. border: none;
  25. background: #32d3a6;
  26. color: #ffffff;
  27. }
  28. .main {
  29. display: flex;
  30. flex-direction: column;
  31. overflow: hidden;
  32. height: 100%;
  33. }
  34. #domId {
  35. flex: 1;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <!-- 定义DOM元素,用于在该DOM元素中显示模型或图纸 -->
  41. <div class="main">
  42. <div class="buttons">
  43. <button class="button" id="btnCustomView" onclick="customView()">
  44. 设置HOME视图
  45. </button>
  46. </div>
  47. <!-- 定义DOM元素,用于在该DOM元素中显示模型或图纸 -->
  48. <div id="domId"></div>
  49. </div>
  50. <!-- 引用BIMFACE的JavaScript显示组件库 -->
  51. <script src="https://static.bimface.com/api/BimfaceSDKLoader/BimfaceSDKLoader@latest-release.js"></script>
  52. <script>
  53. let viewToken = "fe69c34c232047989b3619489027d9df";
  54. // 声明Viewer及App
  55. let viewer3D;
  56. let app;
  57. let viewAdded = false;
  58. let cameraState = {
  59. name: "persp",
  60. position: {
  61. x: -15290.504153609158,
  62. y: -11705.98598911822,
  63. z: 6547.152792941356,
  64. },
  65. target: {
  66. x: 35869.08012166626,
  67. y: 23950.30963410126,
  68. z: -9486.25721153848,
  69. },
  70. up: {
  71. x: 0,
  72. y: -0.0000036732050934432307,
  73. z: 0.9999999999932538,
  74. },
  75. fov: 45,
  76. };
  77. // 配置JSSDK加载项
  78. window.onload = function () {
  79. let loaderConfig = new BimfaceSDKLoaderConfig();
  80. loaderConfig.viewToken = viewToken;
  81. BimfaceSDKLoader.load(loaderConfig, successCallback, failureCallback);
  82. };
  83. // 加载成功回调函数
  84. let worldPosition = new Array();
  85. function successCallback(viewMetaData) {
  86. let dom4Show = document.getElementById("domId");
  87. // 设置WebApplication3D的配置项
  88. let webAppConfig =
  89. new Glodon.Bimface.Application.WebApplicationRfaConfig();
  90. webAppConfig.domElement = dom4Show;
  91. webAppConfig.EnableFamilyList = false;
  92. // 设置模型爆炸配置项
  93. webAppConfig.enableExplosion = true;
  94. // 创建WebApplication3D,用以显示模型
  95. app = new Glodon.Bimface.Application.WebApplicationRfa(webAppConfig);
  96. app.addView(viewToken);
  97. viewer3D = app.getViewer();
  98. // 监听添加view完成的事件
  99. viewer3D.addEventListener(
  100. Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded,
  101. function () {
  102. setCameraStatus();
  103. //自适应屏幕大小
  104. window.onresize = function () {
  105. viewer3D.resize(
  106. document.documentElement.clientWidth,
  107. document.documentElement.clientHeight - 40
  108. );
  109. };
  110. viewAdded = true;
  111. // 渲染3D模型
  112. viewer3D.render();
  113. }
  114. );
  115. viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked,function (objectdata) {
  116. // 调用viewerDrawing对象的Method,可以继续扩展功能
  117. alert("objectId : " + JSON.stringify(objectdata.objectId) + "\n" + "worldPosition : " + JSON.stringify(objectdata.worldPosition));
  118. });
  119. }
  120. // 加载失败回调函数
  121. function failureCallback(error) {
  122. console.log(error);
  123. }
  124. function setCameraStatus() {
  125. viewer3D.setCameraStatus(cameraState);
  126. }
  127. // ************************** 设置自定义HOME视图 **************************
  128. let homeview;
  129. function customView() {
  130. if (!viewAdded) {
  131. return;
  132. } else {
  133. homeview = viewer3D.getCameraStatus();
  134. viewer3D.recordCustomHomeview(homeview);
  135. window.alert(JSON.stringify(homeview));
  136. viewer3D.render();
  137. }
  138. }
  139. </script>
  140. </body>
  141. </html>