fl-web-component 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +35 -24
  2. package/dist/fl-web-component.common.js +27308 -65
  3. package/dist/fl-web-component.common.js.map +1 -1
  4. package/dist/fl-web-component.css +1 -1
  5. package/dist/fl-web-component.umd.js +27308 -65
  6. package/dist/fl-web-component.umd.js.map +1 -1
  7. package/dist/fl-web-component.umd.min.js +13 -1
  8. package/dist/fl-web-component.umd.min.js.map +1 -1
  9. package/package.json +80 -47
  10. package/packages/components/button/index.vue +16 -12
  11. package/packages/components/com-card/card-page.vue +102 -0
  12. package/packages/components/com-card/index.vue +53 -0
  13. package/packages/components/com-dialogWrapper/Readme.md +53 -0
  14. package/packages/components/com-dialogWrapper/index.vue +98 -0
  15. package/packages/components/com-flcanvas/components/bspline.js +91 -0
  16. package/packages/components/com-flcanvas/components/entityFormatting.js +503 -0
  17. package/packages/components/com-flcanvas/components/round10.js +24 -0
  18. package/packages/components/com-flcanvas/index.vue +259 -0
  19. package/packages/components/com-formDialog/Readme.md +409 -0
  20. package/packages/components/com-formDialog/index.vue +471 -0
  21. package/packages/components/com-graphics/index.vue +1073 -0
  22. package/packages/components/com-graphics/per-control.vue +109 -0
  23. package/packages/components/com-graphics/pid.vue +168 -0
  24. package/packages/components/com-page/index.vue +101 -0
  25. package/packages/components/com-selectTree/Readme.md +17 -0
  26. package/packages/components/com-selectTree/index.vue +236 -0
  27. package/packages/components/com-table/column-default.vue +71 -0
  28. package/packages/components/com-table/column-dynamic.vue +36 -0
  29. package/packages/components/com-table/column-menu.vue +71 -0
  30. package/packages/components/com-table/column-slot.vue +53 -0
  31. package/packages/components/com-table/column.vue +41 -0
  32. package/packages/components/com-table/config.js +21 -0
  33. package/packages/components/com-table/index.vue +281 -0
  34. package/packages/components/com-table/table-page.vue +106 -0
  35. package/packages/components/com-tabs/index.vue +50 -0
  36. package/packages/components/com-treeDynamic/Readme.md +271 -0
  37. package/packages/components/com-treeDynamic/index.vue +207 -0
  38. package/packages/components/model/api/index.js +59 -67
  39. package/packages/components/model/api/mock/detecttree.js +38 -38
  40. package/packages/components/model/api/mock/getmodel-line.js +15830 -79332
  41. package/packages/components/model/api/mock/init.js +1 -1
  42. package/packages/components/model/api/mock/pbstree.js +486 -495
  43. package/packages/components/model/components/TextOverTooltip/index.vue +3 -3
  44. package/packages/components/model/components/annotation-toolbar.vue +4 -19
  45. package/packages/components/model/components/check-proofing-model.vue +26 -29
  46. package/packages/components/model/components/clipping-type.vue +22 -14
  47. package/packages/components/model/components/com-dialogWrapper/index.vue +22 -25
  48. package/packages/components/model/components/detect-panel.vue +38 -26
  49. package/packages/components/model/components/detect-tree.vue +9 -24
  50. package/packages/components/model/components/firstPer-panel.vue +23 -25
  51. package/packages/components/model/components/header-button.vue +31 -107
  52. package/packages/components/model/components/imageViewer/index.vue +34 -35
  53. package/packages/components/model/components/import-model.vue +127 -127
  54. package/packages/components/model/components/location-panel.vue +25 -29
  55. package/packages/components/model/components/measure-type.vue +15 -15
  56. package/packages/components/model/components/pbs-tree.vue +139 -144
  57. package/packages/components/model/components/proof-config.vue +2 -10
  58. package/packages/components/model/components/proof-for-pc.vue +35 -32
  59. package/packages/components/model/components/proof-history.vue +136 -154
  60. package/packages/components/model/components/proof-panel-detail.vue +166 -165
  61. package/packages/components/model/components/proof-panel.vue +281 -205
  62. package/packages/components/model/components/proof-project-user.vue +13 -50
  63. package/packages/components/model/components/proof-publish.vue +130 -130
  64. package/packages/components/model/components/proof-role.vue +93 -124
  65. package/packages/components/model/components/props-panel.vue +63 -54
  66. package/packages/components/model/index.vue +3225 -3213
  67. package/packages/components/model/utils/annotation-tool.js +75 -82
  68. package/packages/components/model/utils/cursor.js +15 -10
  69. package/packages/components/model/utils/detect-v1.js +23 -35
  70. package/packages/components/model/utils/index.js +25 -25
  71. package/packages/components/model/utils/threejs/measure-angle.js +180 -180
  72. package/packages/components/model/utils/threejs/measure-area.js +196 -184
  73. package/packages/components/model/utils/threejs/measure-distance.js +154 -152
  74. package/packages/components/model/utils/threejs/measure-volume.js +64 -61
  75. package/patches/camera-controls+2.9.0.patch +63 -0
  76. package/src/assets/test.png +0 -0
  77. package/src/assets/worker.glb +0 -0
  78. package/src/main.js +27 -0
  79. package/src/utils/flgltf-parser.js +141 -0
  80. package/src/utils/instance-parser.js +402 -0
  81. package/src/utils/mock.js +84746 -0
  82. package/src/utils/threejs/measure-angle.js +240 -0
  83. package/src/utils/threejs/measure-area.js +249 -0
  84. package/src/utils/threejs/measure-distance.js +195 -0
  85. package/packages/index.js +0 -24
@@ -1,207 +1,209 @@
1
- import * as THREE from 'three'
2
- import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer'
3
- var _this = null
4
- var MeasureDistance = function(renderer, scene, camera, width, height) {
5
- this.renderer = renderer
6
- this.scene = scene
7
- this.camera = camera
8
- this.pointArray = [] // 保存当前操作所添加的点
9
- this.raycaster = new THREE.Raycaster()
10
- this.points = [] // 保存页面中所添加的点
11
- this.polyline = [] //保存页面中所添加的直线
12
- this.labels = [] // 保存页面中所添加的文本
13
- this.tempPoints = undefined
14
- this.tempLine = undefined
15
- this.tempLabel = undefined
16
- this.tipsLabel = undefined
17
- this.isCompleted = false
18
- this.timer = null
19
- this.width = width
20
- this.height = height
21
- }
1
+ import * as THREE from 'three';
2
+ import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';
3
+ var _this = null;
4
+ var MeasureDistance = function (renderer, scene, camera, width, height) {
5
+ this.renderer = renderer;
6
+ this.scene = scene;
7
+ this.camera = camera;
8
+ this.pointArray = []; // 保存当前操作所添加的点
9
+ this.raycaster = new THREE.Raycaster();
10
+ this.points = []; // 保存页面中所添加的点
11
+ this.polyline = []; //保存页面中所添加的直线
12
+ this.labels = []; // 保存页面中所添加的文本
13
+ this.tempPoints = undefined;
14
+ this.tempLine = undefined;
15
+ this.tempLabel = undefined;
16
+ this.tipsLabel = undefined;
17
+ this.isCompleted = false;
18
+ this.timer = null;
19
+ this.width = width;
20
+ this.height = height;
21
+ };
22
22
 
23
23
  MeasureDistance.prototype = {
24
24
  start() {
25
- _this = this
26
- this.renderer.domElement.style.cursor = 'crosshair'
27
- this.renderer.domElement.addEventListener('click', this.click, false)
28
- this.renderer.domElement.addEventListener('mousemove', this.mousemove, false)
29
- this.renderer.domElement.addEventListener('contextmenu', this.rightClick, false)
25
+ _this = this;
26
+ this.renderer.domElement.style.cursor = 'crosshair';
27
+ this.renderer.domElement.addEventListener('click', this.click, false);
28
+ this.renderer.domElement.addEventListener('mousemove', this.mousemove, false);
29
+ this.renderer.domElement.addEventListener('contextmenu', this.rightClick, false);
30
30
  },
31
31
  updateParams(width, height) {
32
- this.camera.aspect = width / height
33
- this.camera.updateProjectionMatrix()
34
- this.renderer.setSize(width, height, true)
35
- this.width = width
36
- this.height = height
32
+ this.camera.aspect = width / height;
33
+ this.camera.updateProjectionMatrix();
34
+ this.renderer.setSize(width, height, true);
35
+ this.width = width;
36
+ this.height = height;
37
37
  },
38
38
  getPosition(e) {
39
- const mouse = new THREE.Vector2()
40
- mouse.x = (e.clientX / _this.width) * 2 - 1
41
- mouse.y = -(e.clientY / _this.height) * 2 + 1
42
- _this.raycaster.setFromCamera(mouse, this.camera)
43
- let intersects = _this.raycaster.intersectObjects(_this.scene.children, true)
44
- if(intersects.length > 0) {
45
- return intersects[0].point
39
+ const mouse = new THREE.Vector2();
40
+ mouse.x = (e.clientX / _this.width) * 2 - 1;
41
+ mouse.y = -(e.clientY / _this.height) * 2 + 1;
42
+ _this.raycaster.setFromCamera(mouse, this.camera);
43
+ let intersects = _this.raycaster.intersectObjects(_this.scene.children, true);
44
+ if (intersects.length > 0) {
45
+ return intersects[0].point;
46
46
  }
47
- return null
47
+ return null;
48
48
  },
49
- createLine(p1, p2, config = {color: 0xff0000}) {
50
- const lineMaterial = new THREE.LineBasicMaterial({ color: config.color, linewidth: 15 })
51
- const lineGeometry = new THREE.BufferGeometry().setFromPoints([p1, p2])
52
- const line = new THREE.Line(lineGeometry, lineMaterial)
49
+ createLine(p1, p2, config = { color: 0xff0000 }) {
50
+ const lineMaterial = new THREE.LineBasicMaterial({ color: config.color, linewidth: 15 });
51
+ const lineGeometry = new THREE.BufferGeometry().setFromPoints([p1, p2]);
52
+ const line = new THREE.Line(lineGeometry, lineMaterial);
53
53
  line.frustumCulled = false;
54
- return line
54
+ return line;
55
55
  },
56
56
  createLabel(name, text, position) {
57
- const div = document.createElement('div')
58
- div.className = name
59
- div.textContent = text
60
- const divLabel = new CSS2DObject(div)
61
- divLabel.position.set(position.x, position.y, position.z)
62
- return divLabel
57
+ const div = document.createElement('div');
58
+ div.className = name;
59
+ div.textContent = text;
60
+ const divLabel = new CSS2DObject(div);
61
+ divLabel.position.set(position.x, position.y, position.z);
62
+ return divLabel;
63
63
  },
64
64
  mousemove(e) {
65
- if (_this.isCompleted || _this.pointArray.length === 0) return
66
- const point = _this.getPosition(e)
65
+ if (_this.isCompleted || _this.pointArray.length === 0) return;
66
+ const point = _this.getPosition(e);
67
67
  if (point) {
68
- _this.pointArray.length === 1 ? _this.pointArray.push(point) : _this.pointArray.splice(_this.pointArray.length - 1, 1, point)
69
- const length = _this.pointArray.length
70
- if (_this.tempPoints) {
71
- _this.tempPoints.position.set(point.x, point.y, point.z)
72
- } else {
73
- const geom = _this.createLabel('circle-tag', '', point)
74
- _this.tempPoints = geom
75
- _this.points.push(geom)
76
- _this.scene.add(geom)
77
- }
78
- const p1 = _this.pointArray[length - 2]
79
- const p2 = _this.pointArray[length - 1]
80
- const dist = p1.distanceTo(p2)
81
- const label = `${_this.numberToString(dist)}`
82
- const position = new THREE.Vector3((p1.x + p2.x) / 2, (p1.y + p2.y) / 2, (p1.z + p2.z) / 2)
83
- if (_this.tempLine) {
84
- _this.tempLine.geometry.setFromPoints([p1, p2])
85
- _this.tempLabel.element.textContent = label
86
- _this.tempLabel.position.set(position.x, position.y, position.z)
87
- } else {
88
- _this.tempLine = _this.createLine(p1, p2)
89
- _this.tempLabel = _this.createLabel('measure-label', label, position)
90
- _this.polyline.push(_this.tempLine)
91
- _this.labels.push(_this.tempLabel)
92
- _this.scene.add(_this.tempLine)
93
- _this.scene.add(_this.tempLabel)
94
- }
95
- if (_this.tipsLabel) {
96
- _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05)
97
- }
68
+ _this.pointArray.length === 1
69
+ ? _this.pointArray.push(point)
70
+ : _this.pointArray.splice(_this.pointArray.length - 1, 1, point);
71
+ const length = _this.pointArray.length;
72
+ if (_this.tempPoints) {
73
+ _this.tempPoints.position.set(point.x, point.y, point.z);
74
+ } else {
75
+ const geom = _this.createLabel('circle-tag', '', point);
76
+ _this.tempPoints = geom;
77
+ _this.points.push(geom);
78
+ _this.scene.add(geom);
79
+ }
80
+ const p1 = _this.pointArray[length - 2];
81
+ const p2 = _this.pointArray[length - 1];
82
+ const dist = p1.distanceTo(p2);
83
+ const label = `${_this.numberToString(dist)}`;
84
+ const position = new THREE.Vector3((p1.x + p2.x) / 2, (p1.y + p2.y) / 2, (p1.z + p2.z) / 2);
85
+ if (_this.tempLine) {
86
+ _this.tempLine.geometry.setFromPoints([p1, p2]);
87
+ _this.tempLabel.element.textContent = label;
88
+ _this.tempLabel.position.set(position.x, position.y, position.z);
89
+ } else {
90
+ _this.tempLine = _this.createLine(p1, p2);
91
+ _this.tempLabel = _this.createLabel('measure-label', label, position);
92
+ _this.polyline.push(_this.tempLine);
93
+ _this.labels.push(_this.tempLabel);
94
+ _this.scene.add(_this.tempLine);
95
+ _this.scene.add(_this.tempLabel);
96
+ }
97
+ if (_this.tipsLabel) {
98
+ _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05);
99
+ }
98
100
  }
99
101
  },
100
102
  createTipsLabel(label, position) {
101
- const div = document.createElement('div')
102
- div.className = 'tips-label'
103
- div.textContent = label
104
- div.style = 'top: -50px'
105
- const tipsLabel = new CSS2DObject(div)
106
- tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05)
107
- return tipsLabel
103
+ const div = document.createElement('div');
104
+ div.className = 'tips-label';
105
+ div.textContent = label;
106
+ div.style = 'top: -50px';
107
+ const tipsLabel = new CSS2DObject(div);
108
+ tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
109
+ return tipsLabel;
108
110
  },
109
111
  click(e) {
110
112
  if (_this.isCompleted) {
111
- _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
113
+ _this.renderer.domElement.addEventListener('mousemove', _this.mousemove);
112
114
  }
113
- clearTimeout(_this.timer)
115
+ clearTimeout(_this.timer);
114
116
  _this.timer = setTimeout(() => {
115
- _this.isCompleted = false
116
- const point = _this.getPosition(e)
117
+ _this.isCompleted = false;
118
+ const point = _this.getPosition(e);
117
119
  if (point) {
118
- if(_this.tipsLabel) {
119
- _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05)
120
+ if (_this.tipsLabel) {
121
+ _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05);
120
122
  } else {
121
- _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
122
- _this.scene.add(_this.tipsLabel)
123
+ _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point);
124
+ _this.scene.add(_this.tipsLabel);
123
125
  }
124
126
  if (_this.tempPoints) {
125
- _this.tempPoints.position.set(point.x, point.y, point.z)
126
- _this.tempPoints = undefined
127
+ _this.tempPoints.position.set(point.x, point.y, point.z);
128
+ _this.tempPoints = undefined;
127
129
  } else {
128
- const geom = _this.createLabel('circle-tag', '', point)
129
- _this.points.push(geom)
130
- _this.scene.add(geom)
130
+ const geom = _this.createLabel('circle-tag', '', point);
131
+ _this.points.push(geom);
132
+ _this.scene.add(geom);
131
133
  }
132
- _this.tempLine = undefined
133
- _this.tempLabel = undefined
134
- _this.pointArray.push(point)
134
+ _this.tempLine = undefined;
135
+ _this.tempLabel = undefined;
136
+ _this.pointArray.push(point);
135
137
  }
136
- })
138
+ });
137
139
  },
138
140
  rightClick(e) {
139
- if(_this.tipsLabel) {
140
- _this.scene.remove(_this.tipsLabel)
141
- _this.tipsLabel = undefined
141
+ if (_this.tipsLabel) {
142
+ _this.scene.remove(_this.tipsLabel);
143
+ _this.tipsLabel = undefined;
142
144
  }
143
- clearTimeout(_this.timer)
145
+ clearTimeout(_this.timer);
144
146
  // const point = _this.getPosition(e)
145
147
  // this.remove(_this.points.pop());
146
148
 
147
149
  // if (point) {
148
- if (_this.pointArray.length == 2) {
149
- _this.scene.remove(_this.points[_this.points.length-1])
150
- _this.scene.remove(_this.points[_this.points.length-2])
151
- }
150
+ if (_this.pointArray.length == 2) {
151
+ _this.scene.remove(_this.points[_this.points.length - 1]);
152
+ _this.scene.remove(_this.points[_this.points.length - 2]);
153
+ }
154
+
155
+ _this.scene.remove(_this.tempPoints);
156
+ _this.scene.remove(_this.tempLine);
157
+ _this.scene.remove(_this.tempLabel);
152
158
 
153
- _this.scene.remove(_this.tempPoints)
154
- _this.scene.remove(_this.tempLine)
155
- _this.scene.remove(_this.tempLabel)
156
-
157
- _this.isCompleted = true
158
- _this.tempPoints = undefined
159
- _this.tempLine = undefined
160
- _this.tempLabel = undefined
161
- _this.pointArray.splice(0)
162
- _this.renderer.domElement.removeEventListener('mousemove', _this.mousemove)
159
+ _this.isCompleted = true;
160
+ _this.tempPoints = undefined;
161
+ _this.tempLine = undefined;
162
+ _this.tempLabel = undefined;
163
+ _this.pointArray.splice(0);
164
+ _this.renderer.domElement.removeEventListener('mousemove', _this.mousemove);
163
165
  // }
164
166
  },
165
167
  close() {
166
- this.renderer.domElement.removeEventListener('mousemove', this.mousemove)
167
- this.renderer.domElement.removeEventListener('click', this.click)
168
- this.renderer.domElement.removeEventListener('contextmenu', this.rightClick)
169
- this.remove(this.points)
170
- this.remove(this.polyline)
171
- this.remove(this.labels)
172
- this.pointArray.splice(0)
173
- this.points.splice(0)
174
- this.polyline.splice(0)
175
- this.labels.splice(0)
176
- this.tempPoints = undefined
177
- this.tempLabel = undefined
178
- this.tempLine = undefined
179
- this.scene.remove(this.tipsLabel)
180
- this.tipsLabel = undefined
181
- this.renderer.domElement.style.cursor = 'pointer'
168
+ this.renderer.domElement.removeEventListener('mousemove', this.mousemove);
169
+ this.renderer.domElement.removeEventListener('click', this.click);
170
+ this.renderer.domElement.removeEventListener('contextmenu', this.rightClick);
171
+ this.remove(this.points);
172
+ this.remove(this.polyline);
173
+ this.remove(this.labels);
174
+ this.pointArray.splice(0);
175
+ this.points.splice(0);
176
+ this.polyline.splice(0);
177
+ this.labels.splice(0);
178
+ this.tempPoints = undefined;
179
+ this.tempLabel = undefined;
180
+ this.tempLine = undefined;
181
+ this.scene.remove(this.tipsLabel);
182
+ this.tipsLabel = undefined;
183
+ this.renderer.domElement.style.cursor = 'pointer';
182
184
  },
183
185
  remove(array) {
184
186
  for (let index = 0; index < array.length; index++) {
185
- const element = array[index]
187
+ const element = array[index];
186
188
  if (element.geometry) {
187
- element.geometry.dispose()
189
+ element.geometry.dispose();
188
190
  }
189
- this.scene.remove(element)
191
+ this.scene.remove(element);
190
192
  }
191
193
  },
192
194
  numberToString(num) {
193
195
  if (num < 0.0001) {
194
- return num.toString()
196
+ return num.toString();
195
197
  }
196
- let fractionDigits = 2
198
+ let fractionDigits = 2;
197
199
  if (num < 0.01) {
198
- fractionDigits = 4
200
+ fractionDigits = 4;
199
201
  } else if (num < 0.1) {
200
- fractionDigits = 3
202
+ fractionDigits = 3;
201
203
  }
202
- return num.toFixed(fractionDigits)
203
- }
204
- }
204
+ return num.toFixed(fractionDigits);
205
+ },
206
+ };
205
207
  export default {
206
- MeasureDistance
207
- }
208
+ MeasureDistance,
209
+ };
@@ -1,94 +1,97 @@
1
- import * as THREE from 'three'
2
- import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer'
3
- var _this = null
4
- var MeasureVolume = function(renderer, scene, camera, width, height) {
5
- this.renderer = renderer
6
- this.scene = scene
7
- this.camera = camera
8
- this.pointArray = [] // 保存当前操作所添加的点
9
- this.raycaster = new THREE.Raycaster()
10
- this.vMeter = 0.3047999995367
11
- this.tempLabel = undefined
12
- this.width = width
13
- this.height = height
14
- }
1
+ import * as THREE from 'three';
2
+ import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';
3
+ var _this = null;
4
+ var MeasureVolume = function (renderer, scene, camera, width, height) {
5
+ this.renderer = renderer;
6
+ this.scene = scene;
7
+ this.camera = camera;
8
+ this.pointArray = []; // 保存当前操作所添加的点
9
+ this.raycaster = new THREE.Raycaster();
10
+ this.vMeter = 0.3047999995367;
11
+ this.tempLabel = undefined;
12
+ this.width = width;
13
+ this.height = height;
14
+ };
15
15
 
16
16
  MeasureVolume.prototype = {
17
17
  start() {
18
- _this = this
19
- this.renderer.domElement.addEventListener('click', this.click, false)
18
+ _this = this;
19
+ this.renderer.domElement.addEventListener('click', this.click, false);
20
20
  },
21
21
  updateParams(width, height) {
22
- this.camera.aspect = width / height
23
- this.camera.updateProjectionMatrix()
24
- this.renderer.setSize(width, height, true)
25
- this.width = width
26
- this.height = height
22
+ this.camera.aspect = width / height;
23
+ this.camera.updateProjectionMatrix();
24
+ this.renderer.setSize(width, height, true);
25
+ this.width = width;
26
+ this.height = height;
27
27
  },
28
28
  getPosition(e) {
29
- const mouse = new THREE.Vector2()
30
- mouse.x = (e.clientX / _this.width) * 2 - 1
31
- mouse.y = -(e.clientY / _this.height) * 2 + 1
32
- _this.raycaster.setFromCamera(mouse, this.camera)
33
- let intersects = _this.raycaster.intersectObjects(_this.scene.children, true)
34
- if(intersects.length > 0) {
35
- return intersects[0]
29
+ const mouse = new THREE.Vector2();
30
+ mouse.x = (e.clientX / _this.width) * 2 - 1;
31
+ mouse.y = -(e.clientY / _this.height) * 2 + 1;
32
+ _this.raycaster.setFromCamera(mouse, this.camera);
33
+ let intersects = _this.raycaster.intersectObjects(_this.scene.children, true);
34
+ if (intersects.length > 0) {
35
+ return intersects[0];
36
36
  }
37
- return null
37
+ return null;
38
38
  },
39
39
  createLabel(label, position) {
40
- const div = document.createElement('div')
41
- div.className = 'measure-label'
42
- div.textContent = label
43
- const divLabel = new CSS2DObject(div)
44
- divLabel.position.set(position.x, position.y, position.z)
45
- return divLabel
40
+ const div = document.createElement('div');
41
+ div.className = 'measure-label';
42
+ div.textContent = label;
43
+ const divLabel = new CSS2DObject(div);
44
+ divLabel.position.set(position.x, position.y, position.z);
45
+ return divLabel;
46
46
  },
47
47
  click(e) {
48
- const checkObj = _this.getPosition(e)
49
- const obj = checkObj.object
48
+ const checkObj = _this.getPosition(e);
49
+ const obj = checkObj.object;
50
50
  if (!obj.geometry.boundingBox) {
51
- obj.geometry.computeBoundingBox()
51
+ obj.geometry.computeBoundingBox();
52
52
  }
53
- const width = Math.abs(obj.geometry.boundingBox.max.x - obj.geometry.boundingBox.min.x) * obj.scale.x
54
- const length = Math.abs(obj.geometry.boundingBox.max.y - obj.geometry.boundingBox.min.y) * obj.scale.y
55
- const height = Math.abs(obj.geometry.boundingBox.max.z - obj.geometry.boundingBox.min.z) * obj.scale.z
56
- const vol = (width * length * height) * _this.vMeter * _this.vMeter * _this.vMeter
57
- const text = _this.numberToString(vol)
58
- console.log(text)
53
+ const width =
54
+ Math.abs(obj.geometry.boundingBox.max.x - obj.geometry.boundingBox.min.x) * obj.scale.x;
55
+ const length =
56
+ Math.abs(obj.geometry.boundingBox.max.y - obj.geometry.boundingBox.min.y) * obj.scale.y;
57
+ const height =
58
+ Math.abs(obj.geometry.boundingBox.max.z - obj.geometry.boundingBox.min.z) * obj.scale.z;
59
+ const vol = width * length * height * _this.vMeter * _this.vMeter * _this.vMeter;
60
+ const text = _this.numberToString(vol);
61
+ console.log(text);
59
62
  if (_this.tempLabel) {
60
- _this.tempLabel.element.textContent = text + 'm³'
61
- _this.tempLabel.position.set(position.x, position.y, position.z)
63
+ _this.tempLabel.element.textContent = text + 'm³';
64
+ _this.tempLabel.position.set(position.x, position.y, position.z);
62
65
  } else {
63
- _this.tempLabel = _this.createLabel(text + 'm³', obj.point)
64
- _this.scene.add(_this.tempLabel)
66
+ _this.tempLabel = _this.createLabel(text + 'm³', obj.point);
67
+ _this.scene.add(_this.tempLabel);
65
68
  }
66
69
  },
67
70
  close() {
68
- this.renderer.domElement.removeEventListener('click', this.click)
71
+ this.renderer.domElement.removeEventListener('click', this.click);
69
72
  },
70
73
  remove(array) {
71
74
  for (let index = 0; index < array.length; index++) {
72
- const element = array[index]
75
+ const element = array[index];
73
76
  if (element.geometry) {
74
- element.geometry.dispose()
77
+ element.geometry.dispose();
75
78
  }
76
- this.scene.remove(element)
79
+ this.scene.remove(element);
77
80
  }
78
81
  },
79
82
  numberToString(num) {
80
83
  if (num < 0.0001) {
81
- return num.toString()
84
+ return num.toString();
82
85
  }
83
- let fractionDigits = 2
86
+ let fractionDigits = 2;
84
87
  if (num < 0.01) {
85
- fractionDigits = 4
88
+ fractionDigits = 4;
86
89
  } else if (num < 0.1) {
87
- fractionDigits = 3
90
+ fractionDigits = 3;
88
91
  }
89
- return num.toFixed(fractionDigits)
90
- }
91
- }
92
+ return num.toFixed(fractionDigits);
93
+ },
94
+ };
92
95
  export default {
93
- MeasureVolume
94
- }
96
+ MeasureVolume,
97
+ };
@@ -0,0 +1,63 @@
1
+ diff --git a/node_modules/camera-controls/dist/camera-controls.module.js b/node_modules/camera-controls/dist/camera-controls.module.js
2
+ index 08a8fd6..76089cb 100644
3
+ --- a/node_modules/camera-controls/dist/camera-controls.module.js
4
+ +++ b/node_modules/camera-controls/dist/camera-controls.module.js
5
+ @@ -1395,7 +1395,7 @@ class CameraControls extends EventDispatcher {
6
+ * @category Methods
7
+ */
8
+ dolly(distance, enableTransition = false) {
9
+ - return this.dollyTo(this._sphericalEnd.radius - distance, enableTransition);
10
+ + return this.dollyTo(this._sphericalEnd.radius - distance, this.minDistance, enableTransition);
11
+ }
12
+ /**
13
+ * Dolly in/out camera position to given distance.
14
+ @@ -1403,11 +1403,11 @@ class CameraControls extends EventDispatcher {
15
+ * @param enableTransition Whether to move smoothly or immediately.
16
+ * @category Methods
17
+ */
18
+ - dollyTo(distance, enableTransition = false) {
19
+ + dollyTo(distance, minDistance, enableTransition = false) {
20
+ this._isUserControllingDolly = false;
21
+ this._lastDollyDirection = DOLLY_DIRECTION.NONE;
22
+ this._changedDolly = 0;
23
+ - return this._dollyToNoClamp(clamp(distance, this.minDistance, this.maxDistance), enableTransition);
24
+ + return this._dollyToNoClamp(clamp(distance, minDistance, this.maxDistance), enableTransition);
25
+ }
26
+ _dollyToNoClamp(distance, enableTransition = false) {
27
+ const lastRadius = this._sphericalEnd.radius;
28
+ @@ -1635,7 +1635,7 @@ class CameraControls extends EventDispatcher {
29
+ if (isPerspectiveCamera(this._camera)) {
30
+ const distance = this.getDistanceToFitBox(bbSize.x, bbSize.y, bbSize.z, cover);
31
+ promises.push(this.moveTo(center.x, center.y, center.z, enableTransition));
32
+ - promises.push(this.dollyTo(distance, enableTransition));
33
+ + promises.push(this.dollyTo(distance, this.minDistance, enableTransition));
34
+ promises.push(this.setFocalOffset(0, 0, 0, enableTransition));
35
+ }
36
+ else if (isOrthographicCamera(this._camera)) {
37
+ @@ -1664,7 +1664,7 @@ class CameraControls extends EventDispatcher {
38
+ promises.push(this.moveTo(boundingSphere.center.x, boundingSphere.center.y, boundingSphere.center.z, enableTransition));
39
+ if (isPerspectiveCamera(this._camera)) {
40
+ const distanceToFit = this.getDistanceToFitSphere(boundingSphere.radius);
41
+ - promises.push(this.dollyTo(distanceToFit, enableTransition));
42
+ + promises.push(this.dollyTo(distanceToFit, this.minDistance, enableTransition));
43
+ }
44
+ else if (isOrthographicCamera(this._camera)) {
45
+ const width = this._camera.right - this._camera.left;
46
+ @@ -1831,7 +1831,7 @@ class CameraControls extends EventDispatcher {
47
+ _zColumn.multiplyScalar(cameraToPoint.z);
48
+ _v3A.copy(_xColumn).add(_yColumn).add(_zColumn);
49
+ _v3A.z = _v3A.z + distance;
50
+ - this.dollyTo(distance, false);
51
+ + this.dollyTo(distance, Number.EPSILON, false);
52
+ this.setFocalOffset(-_v3A.x, _v3A.y, -_v3A.z, false);
53
+ this.moveTo(targetX, targetY, targetZ, false);
54
+ }
55
+ @@ -2283,7 +2283,7 @@ class CameraControls extends EventDispatcher {
56
+ this.moveTo(obj.target[0], obj.target[1], obj.target[2], enableTransition);
57
+ _sphericalA.setFromVector3(_v3A.fromArray(obj.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace));
58
+ this.rotateTo(_sphericalA.theta, _sphericalA.phi, enableTransition);
59
+ - this.dollyTo(_sphericalA.radius, enableTransition);
60
+ + this.dollyTo(_sphericalA.radius, this.minDistance, enableTransition);
61
+ this.zoomTo(obj.zoom, enableTransition);
62
+ this.setFocalOffset(obj.focalOffset[0], obj.focalOffset[1], obj.focalOffset[2], enableTransition);
63
+ this._needsUpdate = true;
Binary file
Binary file
package/src/main.js ADDED
@@ -0,0 +1,27 @@
1
+ import FlModel from '../packages/components/com-graphics/index.vue';
2
+ // import MyButton from '../packages/components/button/index.vue';
3
+ import Fl2dcanvas from '../packages/components/com-flcanvas/index.vue';
4
+
5
+ const components = [
6
+ FlModel,
7
+ Fl2dcanvas
8
+ // MyButton,
9
+ ];
10
+
11
+ const install = (Vue) => {
12
+ components.forEach(component => {
13
+ Vue.component(component.name, component);
14
+ });
15
+ };
16
+
17
+ // 支持浏览器环境直接引入
18
+ if (typeof window !== 'undefined' && window.Vue) {
19
+ install(window.Vue);
20
+ }
21
+
22
+ export default {
23
+ install,
24
+ FlModel,
25
+ Fl2dcanvas
26
+ // MyButton,
27
+ };