index.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <link rel="stylesheet" href="./static/style/public.css">
  8. <title>4DCAD</title>
  9. </head>
  10. <body>
  11. <div class="body">
  12. <div id="cad"></div>
  13. <div class="content">
  14. <ul>
  15. <li>
  16. <div class="itemTitle">
  17. <span>增添细节</span>
  18. </div>
  19. <ul class="chose" id="architecture">
  20. <li attr-type="door">
  21. <div><i class="iconfont icon_door"></i></div><span>门</span>
  22. </li>
  23. <li attr-type="casement">
  24. <div><i class="iconfont icon_window"></i></div><span>窗户</span>
  25. </li>
  26. <li attr-type="column">
  27. <div><i class="iconfont icon_column"></i></div><span>柱子</span>
  28. </li>
  29. <li attr-type="point">
  30. <div><i class="iconfont icon_point"></i></div><span>点</span>
  31. </li>
  32. <li attr-type="slideDoor">
  33. <div><i class="iconfont icon_point"></i></div><span>移门</span>
  34. </li>
  35. <li attr-type="tagging">
  36. <div><i class="iconfont icon_point"></i></div><span>标注</span>
  37. </li>
  38. <li attr-type="groundCase">
  39. <div><i class="iconfont icon_point"></i></div><span>落地窗</span>
  40. </li>
  41. <li attr-type="bayCase">
  42. <div><i class="iconfont icon_point"></i></div><span>飘窗</span>
  43. </li>
  44. <li attr-type="furnColumn">
  45. <div><i class="iconfont icon_column"></i></div><span>独立柱</span>
  46. </li>
  47. <li attr-type="furnFlue">
  48. <div><i class="iconfont icon_column"></i></div><span>独立柱</span>
  49. </li>
  50. <li attr-type="line">
  51. <div><i class="iconfont icon_column"></i></div><span>墙</span>
  52. </li>
  53. </ul>
  54. <a id="aaa">导出</a>
  55. <a id="bbb">测试</a>
  56. </li>
  57. </ul>
  58. <a class="btn" id="resove">&lt;</a>
  59. <a class="btn" id="back">&gt;</a>
  60. </div>
  61. </div>
  62. </body>
  63. </html>
  64. <script src="./static/three95.min.js"></script>
  65. <script src="./static/jquery-2.1.1.min.js"></script>
  66. <script>
  67. //解析查询字符串
  68. function getQueryStringArgs() {
  69. //取得查询字符串,并去掉开头'?'
  70. var qs = location.search.length ? location.search.substring(1) : '';
  71. //保存数据的对象
  72. var args = {},
  73. //以分割符'&'分割字符串,并以数组形式返回
  74. items = qs.length ? qs.split('&') : [],
  75. item = null,
  76. name = null,
  77. value = null,
  78. i = 0,
  79. len = items.length;
  80. //逐个将每一项添加到args对象中
  81. for (; i < len; i++) {
  82. item = items[i].split('=');
  83. //解码操作,因为查询字符串经过编码的
  84. name = decodeURIComponent(item[0]);
  85. value = decodeURIComponent(item[1]);
  86. value = item[1];
  87. if (name.length) {
  88. args[name] = value;
  89. }
  90. }
  91. return args;
  92. }
  93. function main() {
  94. let args = getQueryStringArgs()
  95. $.ajax({
  96. url: 'https://4dkk.4dage.com/data/data' + args.m + '/floor.json?m=36',
  97. method: 'GET',
  98. success(data) {
  99. let $layer = document.querySelector('#cad')
  100. let cad = structureCAD({
  101. data:
  102. {
  103. block: [],
  104. column: [],
  105. door: [],
  106. hole: [],
  107. segment: [],
  108. "vertex-xy": [],
  109. "vertex-z": []
  110. }, layer: $layer
  111. });
  112. cad.showLabel();
  113. cad.showDire();
  114. cad.loadData(JSON.parse(data));
  115. [].forEach.call(document.querySelectorAll('#architecture li'), function ($item) {
  116. $item.addEventListener('click', function (ev) {
  117. $layer.addEventListener('click', function handle(ev) {
  118. let ret = cad.increase($item.getAttribute('attr-type'), { x: ev.offsetX, y: ev.offsetY }, null, null, true)
  119. if (ret.error) {
  120. alert(ret.msg)
  121. }
  122. this.removeEventListener('click', handle)
  123. })
  124. })
  125. })
  126. document.querySelector('#resove').addEventListener('click', function (ev) {
  127. cad.previous()
  128. })
  129. document.querySelector('#back').addEventListener('click', function (ev) {
  130. cad.next()
  131. })
  132. document.querySelector('#aaa').addEventListener('click', function (ev) {
  133. cad.screenshot()
  134. .then(function (data) {
  135. console.log(data)
  136. window.open(window.URL.createObjectURL(data.file))
  137. })
  138. })
  139. }
  140. })
  141. }
  142. main()
  143. </script>