fl-web-component 2.0.16 → 2.0.18
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.
- package/README.md +6 -0
- package/dist/fl-web-component.common.js +1044 -214
- package/dist/fl-web-component.common.js.map +1 -1
- package/dist/fl-web-component.css +1 -1
- package/package.json +1 -1
- package/packages/components/com-graphics/index.vue +73 -11
- package/src/utils/threejs/measure-angle.js +172 -41
- package/src/utils/threejs/measure-area.js +144 -46
- package/src/utils/threejs/measure-clear-distance.js +346 -0
- package/src/utils/threejs/measure-distance.js +135 -18
- package/src/utils/threejs/measure-height.js +59 -15
|
@@ -1445,6 +1445,13 @@ module.exports = function (bitmap, value) {
|
|
|
1445
1445
|
|
|
1446
1446
|
/***/ }),
|
|
1447
1447
|
|
|
1448
|
+
/***/ "117e":
|
|
1449
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1450
|
+
|
|
1451
|
+
// extracted by mini-css-extract-plugin
|
|
1452
|
+
|
|
1453
|
+
/***/ }),
|
|
1454
|
+
|
|
1448
1455
|
/***/ "122f":
|
|
1449
1456
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1450
1457
|
|
|
@@ -1935,17 +1942,6 @@ module.exports = function (it) {
|
|
|
1935
1942
|
return it;
|
|
1936
1943
|
};
|
|
1937
1944
|
|
|
1938
|
-
/***/ }),
|
|
1939
|
-
|
|
1940
|
-
/***/ "1694":
|
|
1941
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
1942
|
-
|
|
1943
|
-
"use strict";
|
|
1944
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3e15de76_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2719");
|
|
1945
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3e15de76_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3e15de76_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
|
|
1946
|
-
/* unused harmony reexport * */
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
1945
|
/***/ }),
|
|
1950
1946
|
|
|
1951
1947
|
/***/ "17ed":
|
|
@@ -3080,13 +3076,6 @@ module.exports = function (Constructor, NAME, next) {
|
|
|
3080
3076
|
|
|
3081
3077
|
/***/ }),
|
|
3082
3078
|
|
|
3083
|
-
/***/ "2719":
|
|
3084
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
3085
|
-
|
|
3086
|
-
// extracted by mini-css-extract-plugin
|
|
3087
|
-
|
|
3088
|
-
/***/ }),
|
|
3089
|
-
|
|
3090
3079
|
/***/ "273d":
|
|
3091
3080
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
3092
3081
|
|
|
@@ -19684,6 +19673,17 @@ module.exports = Array.isArray || function isArray(arg) {
|
|
|
19684
19673
|
return cof(arg) == 'Array';
|
|
19685
19674
|
};
|
|
19686
19675
|
|
|
19676
|
+
/***/ }),
|
|
19677
|
+
|
|
19678
|
+
/***/ "4edc":
|
|
19679
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
19680
|
+
|
|
19681
|
+
"use strict";
|
|
19682
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_7fad0c6c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("117e");
|
|
19683
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_7fad0c6c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_7fad0c6c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
|
|
19684
|
+
/* unused harmony reexport * */
|
|
19685
|
+
|
|
19686
|
+
|
|
19687
19687
|
/***/ }),
|
|
19688
19688
|
|
|
19689
19689
|
/***/ "511f":
|
|
@@ -35679,13 +35679,6 @@ Factory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getN
|
|
|
35679
35679
|
|
|
35680
35680
|
/***/ }),
|
|
35681
35681
|
|
|
35682
|
-
/***/ "6093":
|
|
35683
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
35684
|
-
|
|
35685
|
-
// extracted by mini-css-extract-plugin
|
|
35686
|
-
|
|
35687
|
-
/***/ }),
|
|
35688
|
-
|
|
35689
35682
|
/***/ "6167":
|
|
35690
35683
|
/***/ (function(module, exports, __webpack_require__) {
|
|
35691
35684
|
|
|
@@ -56514,7 +56507,7 @@ module.exports = document && document.documentElement;
|
|
|
56514
56507
|
/***/ "9224":
|
|
56515
56508
|
/***/ (function(module) {
|
|
56516
56509
|
|
|
56517
|
-
module.exports = JSON.parse("{\"name\":\"fl-web-component\",\"version\":\"2.0.
|
|
56510
|
+
module.exports = JSON.parse("{\"name\":\"fl-web-component\",\"version\":\"2.0.18\",\"scripts\":{\"postinstall\":\"patch-package\",\"tip1\":\"仅调试本组件不涉及业务组件,请执行dev\",\"dev\":\"vue-cli-service serve\",\"lint\":\"eslint \\\"{src,packages}/**/*.{vue,js}\\\" --fix\",\"prettier\":\"prettier --write \\\"packages/**/*.{js,css,less,scss,vue,html}\\\"\",\"=\":\"=============================================================\",\"tip2\":\"同时调试本组件与业务组件,请执行watch\",\"watch\":\"vue-cli-service build --watch --mode production --target lib --name fl-web-component --formats commonjs ./src/main.js\",\"build\":\"npm run lint && vue-cli-service build --target lib --name fl-web-component --formats commonjs ./src/main.js\",\"build:test\":\"vue-cli-service build --target lib --name fl-web-component --formats commonjs ./src/main.js\",\"publish:base\":\"npm run build && npm publish --registry https://registry.npmjs.org/\",\"publish:beta:base\":\"npm run build && npm publish --tag beta --registry https://registry.npmjs.org/\",\"==\":\"=============================================================\",\"tip3\":\"发版注意: 【测试版执行publish:beta】【修改bug执行publish:fix】【新增功能执行publish:feat】【新特性执行publish:perf】\",\"publish:beta\":\"npm version prerelease --preid=beta && npm run publish:beta:base\",\"publish:fix\":\"npm version patch && npm run publish:base\",\"publish:feat\":\"npm version minor && npm run publish:base\",\"publish:perf\":\"npm version major && npm run publish:base\"},\"files\":[\"dist\",\"packages\",\"src\"],\"main\":\"dist/fl-web-component.common.js\",\"dependencies\":{\"camera-controls\":\"2.9.0\",\"core-js\":\"^3.42.0\",\"dxf-parser\":\"^1.1.2\",\"element-ui\":\"2.15.14\",\"fflate\":\"^0.8.2\",\"html2canvas\":\"^1.4.1\",\"jspdf\":\"^3.0.1\",\"konva\":\"^9.3.12\",\"lodash\":\"^4.17.21\",\"meshline\":\"^3.3.1\",\"regenerator-runtime\":\"^0.14.1\",\"svg-pan-zoom\":\"^3.6.2\",\"three\":\"^0.176.0\",\"three.path\":\"^1.0.1\",\"vue\":\"^2.6.11\"},\"devDependencies\":{\"@babel/core\":\"^7.12.16\",\"@babel/plugin-proposal-nullish-coalescing-operator\":\"^7.18.6\",\"@babel/plugin-proposal-optional-chaining\":\"^7.21.0\",\"@babel/preset-env\":\"^7.0.0\",\"@babel/runtime-corejs3\":\"^7.27.1\",\"@vue/cli-plugin-babel\":\"~4.4.0\",\"@vue/cli-plugin-eslint\":\"~4.4.0\",\"@vue/cli-service\":\"~4.4.0\",\"babel-eslint\":\"^10.1.0\",\"babel-loader\":\"^8.0.0\",\"copy-webpack-plugin\":\"^4.0.1\",\"eslint\":\"^6.7.2\",\"eslint-config-prettier\":\"^6.15.0\",\"eslint-plugin-prettier\":\"^3.4.1\",\"eslint-plugin-vue\":\"^6.2.2\",\"patch-package\":\"^6.4.7\",\"prettier\":\"^2.8.8\",\"sass\":\"1.32.13\",\"sass-loader\":\"10.1.1\",\"vue-template-compiler\":\"^2.6.11\",\"worker-loader\":\"^3.0.8\"},\"browserslist\":[\"> 1%\",\"last 2 versions\"]}");
|
|
56518
56511
|
|
|
56519
56512
|
/***/ }),
|
|
56520
56513
|
|
|
@@ -56968,17 +56961,6 @@ module.exports = function (it, key) {
|
|
|
56968
56961
|
return hasOwnProperty.call(it, key);
|
|
56969
56962
|
};
|
|
56970
56963
|
|
|
56971
|
-
/***/ }),
|
|
56972
|
-
|
|
56973
|
-
/***/ "9c27":
|
|
56974
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
56975
|
-
|
|
56976
|
-
"use strict";
|
|
56977
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_3e15de76_prod_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6093");
|
|
56978
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_3e15de76_prod_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_3e15de76_prod_lang_css__WEBPACK_IMPORTED_MODULE_0__);
|
|
56979
|
-
/* unused harmony reexport * */
|
|
56980
|
-
|
|
56981
|
-
|
|
56982
56964
|
/***/ }),
|
|
56983
56965
|
|
|
56984
56966
|
/***/ "9cb8":
|
|
@@ -57884,6 +57866,17 @@ var RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
|
|
|
57884
57866
|
* https://github.com/Matt-Esch/string-template/index.js
|
|
57885
57867
|
*/
|
|
57886
57868
|
|
|
57869
|
+
/***/ }),
|
|
57870
|
+
|
|
57871
|
+
/***/ "9f61":
|
|
57872
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
57873
|
+
|
|
57874
|
+
"use strict";
|
|
57875
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_7fad0c6c_prod_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ed7b");
|
|
57876
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_7fad0c6c_prod_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_7fad0c6c_prod_lang_css__WEBPACK_IMPORTED_MODULE_0__);
|
|
57877
|
+
/* unused harmony reexport * */
|
|
57878
|
+
|
|
57879
|
+
|
|
57887
57880
|
/***/ }),
|
|
57888
57881
|
|
|
57889
57882
|
/***/ "9fbb":
|
|
@@ -75700,6 +75693,13 @@ Animation.animRunning = false;
|
|
|
75700
75693
|
|
|
75701
75694
|
/***/ }),
|
|
75702
75695
|
|
|
75696
|
+
/***/ "ed7b":
|
|
75697
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
75698
|
+
|
|
75699
|
+
// extracted by mini-css-extract-plugin
|
|
75700
|
+
|
|
75701
|
+
/***/ }),
|
|
75702
|
+
|
|
75703
75703
|
/***/ "eedf":
|
|
75704
75704
|
/***/ (function(module, exports, __webpack_require__) {
|
|
75705
75705
|
|
|
@@ -78641,8 +78641,8 @@ if (typeof window !== 'undefined') {
|
|
|
78641
78641
|
// Indicate to webpack that this file can be concatenated
|
|
78642
78642
|
/* harmony default export */ var setPublicPath = (null);
|
|
78643
78643
|
|
|
78644
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
78645
|
-
var
|
|
78644
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e203256c-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/index.vue?vue&type=template&id=7fad0c6c&scoped=true
|
|
78645
|
+
var com_graphicsvue_type_template_id_7fad0c6c_scoped_true_render = function render() {
|
|
78646
78646
|
var _vm = this,
|
|
78647
78647
|
_c = _vm._self._c;
|
|
78648
78648
|
return _c('div', {
|
|
@@ -78654,7 +78654,7 @@ var com_graphicsvue_type_template_id_3e15de76_scoped_true_render = function rend
|
|
|
78654
78654
|
};
|
|
78655
78655
|
var staticRenderFns = [];
|
|
78656
78656
|
|
|
78657
|
-
// CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=
|
|
78657
|
+
// CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=7fad0c6c&scoped=true
|
|
78658
78658
|
|
|
78659
78659
|
// CONCATENATED MODULE: ./node_modules/camera-controls/dist/camera-controls.module.js
|
|
78660
78660
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
@@ -107038,9 +107038,11 @@ var element_ui_common = __webpack_require__("5c96");
|
|
|
107038
107038
|
|
|
107039
107039
|
var measure_distance_this = null;
|
|
107040
107040
|
var measure_distance_MeasureDistance = function MeasureDistance(renderer, scene, camera, width, height) {
|
|
107041
|
+
var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
|
|
107041
107042
|
this.renderer = renderer;
|
|
107042
107043
|
this.scene = scene;
|
|
107043
107044
|
this.camera = camera;
|
|
107045
|
+
this.pickRoots = options.pickRoots || null;
|
|
107044
107046
|
this.pointArray = []; // 保存当前操作所添加的点
|
|
107045
107047
|
this.raycaster = new Raycaster();
|
|
107046
107048
|
this.points = []; // 保存页面中所添加的点
|
|
@@ -107051,6 +107053,7 @@ var measure_distance_MeasureDistance = function MeasureDistance(renderer, scene,
|
|
|
107051
107053
|
this.tempLabel = undefined;
|
|
107052
107054
|
this.tipsLabel = undefined;
|
|
107053
107055
|
this.isCompleted = false;
|
|
107056
|
+
this.hasTempPoint = false;
|
|
107054
107057
|
this.timer = null;
|
|
107055
107058
|
this.width = width;
|
|
107056
107059
|
this.height = height;
|
|
@@ -107075,7 +107078,74 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107075
107078
|
this.width = width;
|
|
107076
107079
|
this.height = height;
|
|
107077
107080
|
},
|
|
107081
|
+
getPickRoots: function getPickRoots() {
|
|
107082
|
+
var roots = typeof measure_distance_this.pickRoots === 'function' ? measure_distance_this.pickRoots() : measure_distance_this.pickRoots;
|
|
107083
|
+
if (Array.isArray(roots) && roots.length > 0) {
|
|
107084
|
+
return roots.filter(Boolean);
|
|
107085
|
+
}
|
|
107086
|
+
if (roots) {
|
|
107087
|
+
return [roots];
|
|
107088
|
+
}
|
|
107089
|
+
return measure_distance_this.scene && measure_distance_this.scene.children ? measure_distance_this.scene.children : [];
|
|
107090
|
+
},
|
|
107091
|
+
isExcludedIntersection: function isExcludedIntersection(object) {
|
|
107092
|
+
var current = object;
|
|
107093
|
+
while (current) {
|
|
107094
|
+
var userData = current.userData || {};
|
|
107095
|
+
if (current.visible === false) return true;
|
|
107096
|
+
if (current.name === measure_distance_this.measureName || userData.isMeasureObject === true) return true;
|
|
107097
|
+
if (userData.transformControlHelper === true || userData.outlineProxy === true) return true;
|
|
107098
|
+
if (current.isCamera || current.isLight) return true;
|
|
107099
|
+
if (typeof current.type === 'string' && (/Helper$/i.test(current.type) || current.type === 'CSS2DObject' || current.type === 'TransformControlsRoot')) {
|
|
107100
|
+
return true;
|
|
107101
|
+
}
|
|
107102
|
+
current = current.parent;
|
|
107103
|
+
}
|
|
107104
|
+
return false;
|
|
107105
|
+
},
|
|
107106
|
+
markMeasureObject: function markMeasureObject(object) {
|
|
107107
|
+
object.name = this.measureName;
|
|
107108
|
+
if (!object.userData) {
|
|
107109
|
+
object.userData = {};
|
|
107110
|
+
}
|
|
107111
|
+
object.userData.isMeasureObject = true;
|
|
107112
|
+
return object;
|
|
107113
|
+
},
|
|
107114
|
+
disposeObject: function disposeObject(object) {
|
|
107115
|
+
if (!object) return;
|
|
107116
|
+
if (object.geometry) {
|
|
107117
|
+
object.geometry.dispose();
|
|
107118
|
+
}
|
|
107119
|
+
if (object.material) {
|
|
107120
|
+
object.material.dispose();
|
|
107121
|
+
}
|
|
107122
|
+
this.scene.remove(object);
|
|
107123
|
+
},
|
|
107124
|
+
removeArrayItem: function removeArrayItem(array, item) {
|
|
107125
|
+
if (!item) return;
|
|
107126
|
+
var index = array.indexOf(item);
|
|
107127
|
+
if (index !== -1) {
|
|
107128
|
+
array.splice(index, 1);
|
|
107129
|
+
}
|
|
107130
|
+
},
|
|
107131
|
+
clearTempMeasure: function clearTempMeasure() {
|
|
107132
|
+
// 清理未确认的预览点,避免空点位残留在回退平面上。
|
|
107133
|
+
if (this.hasTempPoint && this.pointArray.length > 0) {
|
|
107134
|
+
this.pointArray.pop();
|
|
107135
|
+
}
|
|
107136
|
+
this.removeArrayItem(this.points, this.tempPoints);
|
|
107137
|
+
this.removeArrayItem(this.polyline, this.tempLine);
|
|
107138
|
+
this.removeArrayItem(this.labels, this.tempLabel);
|
|
107139
|
+
this.disposeObject(this.tempPoints);
|
|
107140
|
+
this.disposeObject(this.tempLine);
|
|
107141
|
+
this.disposeObject(this.tempLabel);
|
|
107142
|
+
this.tempPoints = undefined;
|
|
107143
|
+
this.tempLine = undefined;
|
|
107144
|
+
this.tempLabel = undefined;
|
|
107145
|
+
this.hasTempPoint = false;
|
|
107146
|
+
},
|
|
107078
107147
|
getPosition: function getPosition(e) {
|
|
107148
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
107079
107149
|
var mouse = new Vector2();
|
|
107080
107150
|
var elRect = this.renderer.domElement.getBoundingClientRect();
|
|
107081
107151
|
var canvasX = e.clientX - elRect.left;
|
|
@@ -107083,13 +107153,18 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107083
107153
|
mouse.x = canvasX / elRect.width * 2.0 - 1.0;
|
|
107084
107154
|
mouse.y = -(canvasY / elRect.height) * 2.0 + 1.0;
|
|
107085
107155
|
measure_distance_this.raycaster.setFromCamera(mouse, this.camera);
|
|
107086
|
-
var intersects = measure_distance_this.raycaster.intersectObjects(measure_distance_this.
|
|
107156
|
+
var intersects = measure_distance_this.raycaster.intersectObjects(measure_distance_this.getPickRoots(), true).filter(function (item) {
|
|
107157
|
+
return item && item.object && !measure_distance_this.isExcludedIntersection(item.object);
|
|
107158
|
+
});
|
|
107087
107159
|
if (intersects.length > 0) {
|
|
107088
107160
|
return {
|
|
107089
107161
|
point: intersects[0].point,
|
|
107090
107162
|
isModel: true
|
|
107091
107163
|
};
|
|
107092
107164
|
}
|
|
107165
|
+
if (options.allowPlaneFallback === false) {
|
|
107166
|
+
return null;
|
|
107167
|
+
}
|
|
107093
107168
|
|
|
107094
107169
|
// 如果没有交点,构建一个基于最后一个确认点且面向相机的平面
|
|
107095
107170
|
if (measure_distance_this.pointArray && measure_distance_this.pointArray.length > 0) {
|
|
@@ -107131,7 +107206,7 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107131
107206
|
});
|
|
107132
107207
|
var lineGeometry = new BufferGeometry().setFromPoints([p1, p2]);
|
|
107133
107208
|
var line = new three_core_Line(lineGeometry, lineMaterial);
|
|
107134
|
-
|
|
107209
|
+
this.markMeasureObject(line);
|
|
107135
107210
|
line.renderOrder = 999;
|
|
107136
107211
|
line.frustumCulled = false;
|
|
107137
107212
|
return line;
|
|
@@ -107141,7 +107216,7 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107141
107216
|
div.className = name;
|
|
107142
107217
|
div.textContent = text;
|
|
107143
107218
|
var divLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
107144
|
-
|
|
107219
|
+
this.markMeasureObject(divLabel);
|
|
107145
107220
|
divLabel.position.set(position.x, position.y, position.z);
|
|
107146
107221
|
return divLabel;
|
|
107147
107222
|
},
|
|
@@ -107150,7 +107225,12 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107150
107225
|
var positionResult = measure_distance_this.getPosition(e);
|
|
107151
107226
|
if (positionResult) {
|
|
107152
107227
|
var point = positionResult.point;
|
|
107153
|
-
|
|
107228
|
+
if (measure_distance_this.hasTempPoint) {
|
|
107229
|
+
measure_distance_this.pointArray.splice(measure_distance_this.pointArray.length - 1, 1, point);
|
|
107230
|
+
} else {
|
|
107231
|
+
measure_distance_this.pointArray.push(point);
|
|
107232
|
+
measure_distance_this.hasTempPoint = true;
|
|
107233
|
+
}
|
|
107154
107234
|
var length = measure_distance_this.pointArray.length;
|
|
107155
107235
|
if (measure_distance_this.tempPoints) {
|
|
107156
107236
|
measure_distance_this.tempPoints.position.set(point.x, point.y, point.z);
|
|
@@ -107187,7 +107267,7 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107187
107267
|
div.className = 'tips-label';
|
|
107188
107268
|
div.textContent = label;
|
|
107189
107269
|
var tipsLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
107190
|
-
|
|
107270
|
+
this.markMeasureObject(tipsLabel);
|
|
107191
107271
|
tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
|
|
107192
107272
|
return tipsLabel;
|
|
107193
107273
|
},
|
|
@@ -107195,7 +107275,6 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107195
107275
|
this.firstTime = new Date().getTime();
|
|
107196
107276
|
},
|
|
107197
107277
|
click: function click(e) {
|
|
107198
|
-
console.log(measure_distance_this.points);
|
|
107199
107278
|
var lastTime = new Date().getTime();
|
|
107200
107279
|
if (lastTime - this.firstTime < 300) {
|
|
107201
107280
|
if (measure_distance_this.isCompleted) {
|
|
@@ -107204,15 +107283,22 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107204
107283
|
clearTimeout(measure_distance_this.timer);
|
|
107205
107284
|
measure_distance_this.timer = setTimeout(function () {
|
|
107206
107285
|
measure_distance_this.isCompleted = false;
|
|
107207
|
-
var positionResult = measure_distance_this.getPosition(e
|
|
107286
|
+
var positionResult = measure_distance_this.getPosition(e, {
|
|
107287
|
+
allowPlaneFallback: false
|
|
107288
|
+
});
|
|
107289
|
+
if (!positionResult || !positionResult.isModel) {
|
|
107290
|
+
measure_distance_this.clearTempMeasure();
|
|
107291
|
+
element_ui_common["Message"].warning('请点击模型进行测量');
|
|
107292
|
+
return;
|
|
107293
|
+
}
|
|
107208
107294
|
if (positionResult) {
|
|
107209
|
-
var point = positionResult.point
|
|
107210
|
-
|
|
107211
|
-
|
|
107212
|
-
|
|
107213
|
-
|
|
107214
|
-
return;
|
|
107295
|
+
var point = positionResult.point;
|
|
107296
|
+
if (measure_distance_this.hasTempPoint && measure_distance_this.pointArray.length > 0) {
|
|
107297
|
+
measure_distance_this.pointArray.splice(measure_distance_this.pointArray.length - 1, 1, point);
|
|
107298
|
+
} else {
|
|
107299
|
+
measure_distance_this.pointArray.push(point);
|
|
107215
107300
|
}
|
|
107301
|
+
measure_distance_this.hasTempPoint = false;
|
|
107216
107302
|
if (measure_distance_this.tipsLabel) {
|
|
107217
107303
|
measure_distance_this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05);
|
|
107218
107304
|
} else {
|
|
@@ -107227,9 +107313,31 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107227
107313
|
measure_distance_this.points.push(geom);
|
|
107228
107314
|
measure_distance_this.scene.add(geom);
|
|
107229
107315
|
}
|
|
107316
|
+
var length = measure_distance_this.pointArray.length;
|
|
107317
|
+
if (length > 1) {
|
|
107318
|
+
var p1 = measure_distance_this.pointArray[length - 2];
|
|
107319
|
+
var p2 = measure_distance_this.pointArray[length - 1];
|
|
107320
|
+
var dist = p1.distanceTo(p2);
|
|
107321
|
+
var label = "".concat(measure_distance_this.numberToString(dist));
|
|
107322
|
+
var position = new Vector3((p1.x + p2.x) / 2, (p1.y + p2.y) / 2, (p1.z + p2.z) / 2);
|
|
107323
|
+
if (measure_distance_this.tempLine) {
|
|
107324
|
+
measure_distance_this.tempLine.geometry.setFromPoints([p1, p2]);
|
|
107325
|
+
} else {
|
|
107326
|
+
measure_distance_this.tempLine = measure_distance_this.createLine(p1, p2);
|
|
107327
|
+
measure_distance_this.polyline.push(measure_distance_this.tempLine);
|
|
107328
|
+
measure_distance_this.scene.add(measure_distance_this.tempLine);
|
|
107329
|
+
}
|
|
107330
|
+
if (measure_distance_this.tempLabel) {
|
|
107331
|
+
measure_distance_this.tempLabel.element.textContent = label;
|
|
107332
|
+
measure_distance_this.tempLabel.position.set(position.x, position.y, position.z);
|
|
107333
|
+
} else {
|
|
107334
|
+
measure_distance_this.tempLabel = measure_distance_this.createLabel('measure-label', label, position);
|
|
107335
|
+
measure_distance_this.labels.push(measure_distance_this.tempLabel);
|
|
107336
|
+
measure_distance_this.scene.add(measure_distance_this.tempLabel);
|
|
107337
|
+
}
|
|
107338
|
+
}
|
|
107230
107339
|
measure_distance_this.tempLine = undefined;
|
|
107231
107340
|
measure_distance_this.tempLabel = undefined;
|
|
107232
|
-
measure_distance_this.pointArray.push(point);
|
|
107233
107341
|
}
|
|
107234
107342
|
});
|
|
107235
107343
|
}
|
|
@@ -107243,11 +107351,13 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107243
107351
|
clearTimeout(measure_distance_this.timer);
|
|
107244
107352
|
var positionResult = measure_distance_this.getPosition(e);
|
|
107245
107353
|
if (positionResult) {
|
|
107354
|
+
measure_distance_this.clearTempMeasure();
|
|
107246
107355
|
measure_distance_this.isCompleted = true;
|
|
107247
107356
|
measure_distance_this.tempPoints = undefined;
|
|
107248
107357
|
measure_distance_this.tempLine = undefined;
|
|
107249
107358
|
measure_distance_this.tempLabel = undefined;
|
|
107250
107359
|
measure_distance_this.pointArray.splice(0);
|
|
107360
|
+
measure_distance_this.hasTempPoint = false;
|
|
107251
107361
|
measure_distance_this.renderer.domElement.removeEventListener('mousemove', measure_distance_this.mousemove);
|
|
107252
107362
|
}
|
|
107253
107363
|
},
|
|
@@ -107267,6 +107377,7 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107267
107377
|
this.tempPoints = undefined;
|
|
107268
107378
|
this.tempLabel = undefined;
|
|
107269
107379
|
this.tempLine = undefined;
|
|
107380
|
+
this.hasTempPoint = false;
|
|
107270
107381
|
this.scene.remove(this.tipsLabel);
|
|
107271
107382
|
this.tipsLabel = undefined;
|
|
107272
107383
|
this.firstTime = 0;
|
|
@@ -107284,6 +107395,7 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107284
107395
|
this.tempPoints = undefined;
|
|
107285
107396
|
this.tempLabel = undefined;
|
|
107286
107397
|
this.tempLine = undefined;
|
|
107398
|
+
this.hasTempPoint = false;
|
|
107287
107399
|
this.scene.remove(this.tipsLabel);
|
|
107288
107400
|
this.tipsLabel = undefined;
|
|
107289
107401
|
this.firstTime = 0;
|
|
@@ -107322,9 +107434,11 @@ measure_distance_MeasureDistance.prototype = {
|
|
|
107322
107434
|
|
|
107323
107435
|
var measure_area_this = null;
|
|
107324
107436
|
var measure_area_MeasureArea = function MeasureArea(renderer, scene, camera, width, height) {
|
|
107437
|
+
var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
|
|
107325
107438
|
this.renderer = renderer;
|
|
107326
107439
|
this.scene = scene;
|
|
107327
107440
|
this.camera = camera;
|
|
107441
|
+
this.pickRoots = options.pickRoots || null;
|
|
107328
107442
|
this.pointArray = []; // 保存当前操作所添加的点
|
|
107329
107443
|
this.raycaster = new Raycaster();
|
|
107330
107444
|
this.points = []; // 保存页面中所添加的点
|
|
@@ -107335,6 +107449,7 @@ var measure_area_MeasureArea = function MeasureArea(renderer, scene, camera, wid
|
|
|
107335
107449
|
this.tempLabel = undefined;
|
|
107336
107450
|
this.tipsLabel = undefined;
|
|
107337
107451
|
this.isCompleted = false;
|
|
107452
|
+
this.hasTempPoint = false;
|
|
107338
107453
|
this.timer = null;
|
|
107339
107454
|
this.polygonMesh = undefined;
|
|
107340
107455
|
this.polygons = [];
|
|
@@ -107361,7 +107476,95 @@ measure_area_MeasureArea.prototype = {
|
|
|
107361
107476
|
this.width = width;
|
|
107362
107477
|
this.height = height;
|
|
107363
107478
|
},
|
|
107479
|
+
getPickRoots: function getPickRoots() {
|
|
107480
|
+
var roots = typeof measure_area_this.pickRoots === 'function' ? measure_area_this.pickRoots() : measure_area_this.pickRoots;
|
|
107481
|
+
if (Array.isArray(roots) && roots.length > 0) {
|
|
107482
|
+
return roots.filter(Boolean);
|
|
107483
|
+
}
|
|
107484
|
+
if (roots) {
|
|
107485
|
+
return [roots];
|
|
107486
|
+
}
|
|
107487
|
+
return measure_area_this.scene && measure_area_this.scene.children ? measure_area_this.scene.children : [];
|
|
107488
|
+
},
|
|
107489
|
+
isExcludedIntersection: function isExcludedIntersection(object) {
|
|
107490
|
+
var current = object;
|
|
107491
|
+
while (current) {
|
|
107492
|
+
var userData = current.userData || {};
|
|
107493
|
+
if (current.visible === false) return true;
|
|
107494
|
+
if (current.name === measure_area_this.measureName || userData.isMeasureObject === true) return true;
|
|
107495
|
+
if (userData.transformControlHelper === true || userData.outlineProxy === true) return true;
|
|
107496
|
+
if (current.isCamera || current.isLight) return true;
|
|
107497
|
+
if (typeof current.type === 'string' && (/Helper$/i.test(current.type) || current.type === 'CSS2DObject' || current.type === 'TransformControlsRoot')) {
|
|
107498
|
+
return true;
|
|
107499
|
+
}
|
|
107500
|
+
current = current.parent;
|
|
107501
|
+
}
|
|
107502
|
+
return false;
|
|
107503
|
+
},
|
|
107504
|
+
markMeasureObject: function markMeasureObject(object) {
|
|
107505
|
+
object.name = this.measureName;
|
|
107506
|
+
if (!object.userData) {
|
|
107507
|
+
object.userData = {};
|
|
107508
|
+
}
|
|
107509
|
+
object.userData.isMeasureObject = true;
|
|
107510
|
+
return object;
|
|
107511
|
+
},
|
|
107512
|
+
disposeObject: function disposeObject(object) {
|
|
107513
|
+
if (!object) return;
|
|
107514
|
+
if (object.geometry) {
|
|
107515
|
+
object.geometry.dispose();
|
|
107516
|
+
}
|
|
107517
|
+
if (object.material) {
|
|
107518
|
+
object.material.dispose();
|
|
107519
|
+
}
|
|
107520
|
+
this.scene.remove(object);
|
|
107521
|
+
},
|
|
107522
|
+
removeArrayItem: function removeArrayItem(array, item) {
|
|
107523
|
+
if (!item) return;
|
|
107524
|
+
var index = array.indexOf(item);
|
|
107525
|
+
if (index !== -1) {
|
|
107526
|
+
array.splice(index, 1);
|
|
107527
|
+
}
|
|
107528
|
+
},
|
|
107529
|
+
clearTempMeasure: function clearTempMeasure() {
|
|
107530
|
+
if (this.hasTempPoint && this.pointArray.length > 0) {
|
|
107531
|
+
this.pointArray.pop();
|
|
107532
|
+
}
|
|
107533
|
+
this.removeArrayItem(this.points, this.tempPoints);
|
|
107534
|
+
this.removeArrayItem(this.polyline, this.tempLine);
|
|
107535
|
+
this.disposeObject(this.tempPoints);
|
|
107536
|
+
this.disposeObject(this.tempLine);
|
|
107537
|
+
this.tempPoints = undefined;
|
|
107538
|
+
this.tempLine = undefined;
|
|
107539
|
+
this.hasTempPoint = false;
|
|
107540
|
+
this.updateAreaMeasure();
|
|
107541
|
+
},
|
|
107542
|
+
updateAreaMeasure: function updateAreaMeasure() {
|
|
107543
|
+
if (this.pointArray.length <= 2) {
|
|
107544
|
+
this.removeArrayItem(this.polygons, this.polygonMesh);
|
|
107545
|
+
this.removeArrayItem(this.labels, this.tempLabel);
|
|
107546
|
+
this.disposeObject(this.polygonMesh);
|
|
107547
|
+
this.disposeObject(this.tempLabel);
|
|
107548
|
+
this.polygonMesh = undefined;
|
|
107549
|
+
this.tempLabel = undefined;
|
|
107550
|
+
return;
|
|
107551
|
+
}
|
|
107552
|
+
var area = this.calculateArea(this.pointArray);
|
|
107553
|
+
this.createPolygon(this.pointArray);
|
|
107554
|
+
if (!this.polygonMesh) return;
|
|
107555
|
+
this.polygonMesh.geometry.computeBoundingSphere();
|
|
107556
|
+
var center = this.polygonMesh.geometry.boundingSphere.center;
|
|
107557
|
+
if (this.tempLabel) {
|
|
107558
|
+
this.tempLabel.element.textContent = this.numberToString(area);
|
|
107559
|
+
this.tempLabel.position.set(center.x, center.y, center.z);
|
|
107560
|
+
} else {
|
|
107561
|
+
this.tempLabel = this.createLabel('measure-label', this.numberToString(area), center);
|
|
107562
|
+
this.labels.push(this.tempLabel);
|
|
107563
|
+
this.scene.add(this.tempLabel);
|
|
107564
|
+
}
|
|
107565
|
+
},
|
|
107364
107566
|
getPosition: function getPosition(e) {
|
|
107567
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
107365
107568
|
var mouse = new Vector2();
|
|
107366
107569
|
var elRect = this.renderer.domElement.getBoundingClientRect();
|
|
107367
107570
|
var canvasX = e.clientX - elRect.left;
|
|
@@ -107369,13 +107572,18 @@ measure_area_MeasureArea.prototype = {
|
|
|
107369
107572
|
mouse.x = canvasX / elRect.width * 2.0 - 1.0;
|
|
107370
107573
|
mouse.y = -(canvasY / elRect.height) * 2.0 + 1.0;
|
|
107371
107574
|
measure_area_this.raycaster.setFromCamera(mouse, measure_area_this.camera);
|
|
107372
|
-
var intersects = measure_area_this.raycaster.intersectObjects(measure_area_this.
|
|
107575
|
+
var intersects = measure_area_this.raycaster.intersectObjects(measure_area_this.getPickRoots(), true).filter(function (item) {
|
|
107576
|
+
return item && item.object && !measure_area_this.isExcludedIntersection(item.object);
|
|
107577
|
+
});
|
|
107373
107578
|
if (intersects.length > 0) {
|
|
107374
107579
|
return {
|
|
107375
107580
|
point: intersects[0].point,
|
|
107376
107581
|
isModel: true
|
|
107377
107582
|
};
|
|
107378
107583
|
}
|
|
107584
|
+
if (options.allowPlaneFallback === false) {
|
|
107585
|
+
return null;
|
|
107586
|
+
}
|
|
107379
107587
|
|
|
107380
107588
|
// 如果没有交点,构建一个基于最后一个确认点且面向相机的平面
|
|
107381
107589
|
if (measure_area_this.pointArray && measure_area_this.pointArray.length > 0) {
|
|
@@ -107417,7 +107625,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107417
107625
|
});
|
|
107418
107626
|
var lineGeometry = new BufferGeometry().setFromPoints([p1, p2]);
|
|
107419
107627
|
var line = new three_core_Line(lineGeometry, lineMaterial);
|
|
107420
|
-
|
|
107628
|
+
this.markMeasureObject(line);
|
|
107421
107629
|
line.renderOrder = 999;
|
|
107422
107630
|
line.frustumCulled = false;
|
|
107423
107631
|
return line;
|
|
@@ -107427,7 +107635,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107427
107635
|
div.className = name;
|
|
107428
107636
|
div.textContent = text;
|
|
107429
107637
|
var divLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
107430
|
-
|
|
107638
|
+
this.markMeasureObject(divLabel);
|
|
107431
107639
|
divLabel.position.set(position.x, position.y, position.z);
|
|
107432
107640
|
return divLabel;
|
|
107433
107641
|
},
|
|
@@ -107436,7 +107644,12 @@ measure_area_MeasureArea.prototype = {
|
|
|
107436
107644
|
var positionResult = measure_area_this.getPosition(e);
|
|
107437
107645
|
if (positionResult) {
|
|
107438
107646
|
var point = positionResult.point;
|
|
107439
|
-
|
|
107647
|
+
if (measure_area_this.hasTempPoint) {
|
|
107648
|
+
measure_area_this.pointArray.splice(measure_area_this.pointArray.length - 1, 1, point);
|
|
107649
|
+
} else {
|
|
107650
|
+
measure_area_this.pointArray.push(point);
|
|
107651
|
+
measure_area_this.hasTempPoint = true;
|
|
107652
|
+
}
|
|
107440
107653
|
var length = measure_area_this.pointArray.length;
|
|
107441
107654
|
if (measure_area_this.tempPoints) {
|
|
107442
107655
|
measure_area_this.tempPoints.position.set(point.x, point.y, point.z);
|
|
@@ -107455,21 +107668,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107455
107668
|
measure_area_this.polyline.push(measure_area_this.tempLine);
|
|
107456
107669
|
measure_area_this.scene.add(measure_area_this.tempLine);
|
|
107457
107670
|
}
|
|
107458
|
-
|
|
107459
|
-
var area = measure_area_this.calculateArea(measure_area_this.pointArray);
|
|
107460
|
-
measure_area_this.createPolygon(measure_area_this.pointArray);
|
|
107461
|
-
if (measure_area_this.tempLabel) {
|
|
107462
|
-
measure_area_this.polygonMesh.geometry.computeBoundingSphere();
|
|
107463
|
-
measure_area_this.tempLabel.element.textContent = measure_area_this.numberToString(area); // + '㎡'
|
|
107464
|
-
measure_area_this.tempLabel.position.set(measure_area_this.polygonMesh.geometry.boundingSphere.center.x, measure_area_this.polygonMesh.geometry.boundingSphere.center.y, measure_area_this.polygonMesh.geometry.boundingSphere.center.z);
|
|
107465
|
-
} else {
|
|
107466
|
-
measure_area_this.polygonMesh.geometry.computeBoundingSphere();
|
|
107467
|
-
console.log(measure_area_this.polygonMesh.geometry);
|
|
107468
|
-
measure_area_this.tempLabel = measure_area_this.createLabel('measure-label', area, measure_area_this.polygonMesh.geometry.boundingSphere.center);
|
|
107469
|
-
measure_area_this.labels.push(measure_area_this.tempLabel);
|
|
107470
|
-
measure_area_this.scene.add(measure_area_this.tempLabel);
|
|
107471
|
-
}
|
|
107472
|
-
}
|
|
107671
|
+
measure_area_this.updateAreaMeasure();
|
|
107473
107672
|
if (measure_area_this.tipsLabel) {
|
|
107474
107673
|
measure_area_this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05);
|
|
107475
107674
|
}
|
|
@@ -107480,7 +107679,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107480
107679
|
div.className = 'tips-label';
|
|
107481
107680
|
div.textContent = label;
|
|
107482
107681
|
var tipsLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
107483
|
-
|
|
107682
|
+
this.markMeasureObject(tipsLabel);
|
|
107484
107683
|
tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
|
|
107485
107684
|
return tipsLabel;
|
|
107486
107685
|
},
|
|
@@ -107496,14 +107695,22 @@ measure_area_MeasureArea.prototype = {
|
|
|
107496
107695
|
clearTimeout(measure_area_this.timer);
|
|
107497
107696
|
measure_area_this.timer = setTimeout(function () {
|
|
107498
107697
|
measure_area_this.isCompleted = false;
|
|
107499
|
-
var positionResult = measure_area_this.getPosition(e
|
|
107698
|
+
var positionResult = measure_area_this.getPosition(e, {
|
|
107699
|
+
allowPlaneFallback: false
|
|
107700
|
+
});
|
|
107701
|
+
if (!positionResult || !positionResult.isModel) {
|
|
107702
|
+
measure_area_this.clearTempMeasure();
|
|
107703
|
+
element_ui_common["Message"].warning('请点击模型进行测量');
|
|
107704
|
+
return;
|
|
107705
|
+
}
|
|
107500
107706
|
if (positionResult) {
|
|
107501
|
-
var point = positionResult.point
|
|
107502
|
-
|
|
107503
|
-
|
|
107504
|
-
|
|
107505
|
-
|
|
107707
|
+
var point = positionResult.point;
|
|
107708
|
+
if (measure_area_this.hasTempPoint && measure_area_this.pointArray.length > 0) {
|
|
107709
|
+
measure_area_this.pointArray.splice(measure_area_this.pointArray.length - 1, 1, point);
|
|
107710
|
+
} else {
|
|
107711
|
+
measure_area_this.pointArray.push(point);
|
|
107506
107712
|
}
|
|
107713
|
+
measure_area_this.hasTempPoint = false;
|
|
107507
107714
|
if (measure_area_this.tipsLabel) {
|
|
107508
107715
|
measure_area_this.tipsLabel.position.set(point.x + 0.01, point.y, point.z + 0.05);
|
|
107509
107716
|
} else {
|
|
@@ -107518,8 +107725,20 @@ measure_area_MeasureArea.prototype = {
|
|
|
107518
107725
|
measure_area_this.points.push(geom);
|
|
107519
107726
|
measure_area_this.scene.add(geom);
|
|
107520
107727
|
}
|
|
107728
|
+
var length = measure_area_this.pointArray.length;
|
|
107729
|
+
if (length > 1) {
|
|
107730
|
+
var p1 = measure_area_this.pointArray[length - 2];
|
|
107731
|
+
var p2 = measure_area_this.pointArray[length - 1];
|
|
107732
|
+
if (measure_area_this.tempLine) {
|
|
107733
|
+
measure_area_this.tempLine.geometry.setFromPoints([p1, p2]);
|
|
107734
|
+
} else {
|
|
107735
|
+
measure_area_this.tempLine = measure_area_this.createLine(p1, p2);
|
|
107736
|
+
measure_area_this.polyline.push(measure_area_this.tempLine);
|
|
107737
|
+
measure_area_this.scene.add(measure_area_this.tempLine);
|
|
107738
|
+
}
|
|
107739
|
+
}
|
|
107521
107740
|
measure_area_this.tempLine = undefined;
|
|
107522
|
-
measure_area_this.
|
|
107741
|
+
measure_area_this.updateAreaMeasure();
|
|
107523
107742
|
}
|
|
107524
107743
|
}, 0);
|
|
107525
107744
|
}
|
|
@@ -107533,16 +107752,13 @@ measure_area_MeasureArea.prototype = {
|
|
|
107533
107752
|
clearTimeout(measure_area_this.timer);
|
|
107534
107753
|
var positionResult = measure_area_this.getPosition(e);
|
|
107535
107754
|
if (positionResult) {
|
|
107536
|
-
|
|
107755
|
+
measure_area_this.clearTempMeasure();
|
|
107537
107756
|
measure_area_this.isCompleted = true;
|
|
107538
|
-
if (measure_area_this.tempPoints) {
|
|
107539
|
-
measure_area_this.tempPoints.position.set(point.x, point.y, point.z);
|
|
107540
|
-
measure_area_this.tempPoints = undefined;
|
|
107541
|
-
}
|
|
107542
107757
|
measure_area_this.tempLine = undefined;
|
|
107543
107758
|
measure_area_this.tempLabel = undefined;
|
|
107544
107759
|
measure_area_this.polygonMesh = undefined;
|
|
107545
107760
|
measure_area_this.pointArray.splice(0);
|
|
107761
|
+
measure_area_this.hasTempPoint = false;
|
|
107546
107762
|
measure_area_this.renderer.domElement.removeEventListener('mousemove', measure_area_this.mousemove);
|
|
107547
107763
|
}
|
|
107548
107764
|
},
|
|
@@ -107563,6 +107779,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107563
107779
|
this.tempPoints = undefined;
|
|
107564
107780
|
this.tempLabel = undefined;
|
|
107565
107781
|
this.tempLine = undefined;
|
|
107782
|
+
this.hasTempPoint = false;
|
|
107566
107783
|
this.scene.remove(this.tipsLabel);
|
|
107567
107784
|
this.tipsLabel = undefined;
|
|
107568
107785
|
}
|
|
@@ -107580,6 +107797,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107580
107797
|
this.tempPoints = undefined;
|
|
107581
107798
|
this.tempLabel = undefined;
|
|
107582
107799
|
this.tempLine = undefined;
|
|
107800
|
+
this.hasTempPoint = false;
|
|
107583
107801
|
this.scene.remove(this.tipsLabel);
|
|
107584
107802
|
this.tipsLabel = undefined;
|
|
107585
107803
|
},
|
|
@@ -107638,8 +107856,7 @@ measure_area_MeasureArea.prototype = {
|
|
|
107638
107856
|
});
|
|
107639
107857
|
var mesh = new Mesh(geom, material);
|
|
107640
107858
|
mesh.frustumCulled = false;
|
|
107641
|
-
|
|
107642
|
-
mesh.name = measure_area_this.measureName;
|
|
107859
|
+
measure_area_this.markMeasureObject(mesh);
|
|
107643
107860
|
measure_area_this.polygonMesh = mesh;
|
|
107644
107861
|
measure_area_this.scene.add(mesh);
|
|
107645
107862
|
measure_area_this.polygons.push(mesh);
|
|
@@ -107659,9 +107876,11 @@ measure_area_MeasureArea.prototype = {
|
|
|
107659
107876
|
|
|
107660
107877
|
var measure_angle_this = null;
|
|
107661
107878
|
var measure_angle_MeasureAngle = function MeasureAngle(renderer, scene, camera, width, height) {
|
|
107879
|
+
var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
|
|
107662
107880
|
this.renderer = renderer;
|
|
107663
107881
|
this.scene = scene;
|
|
107664
107882
|
this.camera = camera;
|
|
107883
|
+
this.pickRoots = options.pickRoots || null;
|
|
107665
107884
|
this.pointArray = []; // 保存当前操作所添加的点
|
|
107666
107885
|
this.raycaster = new Raycaster();
|
|
107667
107886
|
this.points = []; // 保存页面中所添加的点
|
|
@@ -107673,6 +107892,7 @@ var measure_angle_MeasureAngle = function MeasureAngle(renderer, scene, camera,
|
|
|
107673
107892
|
this.tempLabel = undefined;
|
|
107674
107893
|
this.tipsLabel = undefined;
|
|
107675
107894
|
this.isCompleted = false;
|
|
107895
|
+
this.hasTempPoint = false;
|
|
107676
107896
|
this.curveLine = undefined;
|
|
107677
107897
|
this.timer = null;
|
|
107678
107898
|
this.width = width;
|
|
@@ -107700,7 +107920,103 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107700
107920
|
this.width = width;
|
|
107701
107921
|
this.height = height;
|
|
107702
107922
|
},
|
|
107923
|
+
getPickRoots: function getPickRoots() {
|
|
107924
|
+
var roots = typeof measure_angle_this.pickRoots === 'function' ? measure_angle_this.pickRoots() : measure_angle_this.pickRoots;
|
|
107925
|
+
if (Array.isArray(roots) && roots.length > 0) {
|
|
107926
|
+
return roots.filter(Boolean);
|
|
107927
|
+
}
|
|
107928
|
+
if (roots) {
|
|
107929
|
+
return [roots];
|
|
107930
|
+
}
|
|
107931
|
+
return measure_angle_this.scene && measure_angle_this.scene.children ? measure_angle_this.scene.children : [];
|
|
107932
|
+
},
|
|
107933
|
+
isExcludedIntersection: function isExcludedIntersection(object) {
|
|
107934
|
+
var current = object;
|
|
107935
|
+
while (current) {
|
|
107936
|
+
var userData = current.userData || {};
|
|
107937
|
+
if (current.visible === false) return true;
|
|
107938
|
+
if (current.name === measure_angle_this.measureName || userData.isMeasureObject === true) return true;
|
|
107939
|
+
if (userData.transformControlHelper === true || userData.outlineProxy === true) return true;
|
|
107940
|
+
if (current.isCamera || current.isLight) return true;
|
|
107941
|
+
if (typeof current.type === 'string' && (/Helper$/i.test(current.type) || current.type === 'CSS2DObject' || current.type === 'TransformControlsRoot')) {
|
|
107942
|
+
return true;
|
|
107943
|
+
}
|
|
107944
|
+
current = current.parent;
|
|
107945
|
+
}
|
|
107946
|
+
return false;
|
|
107947
|
+
},
|
|
107948
|
+
markMeasureObject: function markMeasureObject(object) {
|
|
107949
|
+
object.name = this.measureName;
|
|
107950
|
+
if (!object.userData) {
|
|
107951
|
+
object.userData = {};
|
|
107952
|
+
}
|
|
107953
|
+
object.userData.isMeasureObject = true;
|
|
107954
|
+
return object;
|
|
107955
|
+
},
|
|
107956
|
+
disposeObject: function disposeObject(object) {
|
|
107957
|
+
if (!object) return;
|
|
107958
|
+
if (object.geometry) {
|
|
107959
|
+
object.geometry.dispose();
|
|
107960
|
+
}
|
|
107961
|
+
if (object.material) {
|
|
107962
|
+
object.material.dispose();
|
|
107963
|
+
}
|
|
107964
|
+
this.scene.remove(object);
|
|
107965
|
+
},
|
|
107966
|
+
removeArrayItem: function removeArrayItem(array, item) {
|
|
107967
|
+
if (!item) return;
|
|
107968
|
+
var index = array.indexOf(item);
|
|
107969
|
+
if (index !== -1) {
|
|
107970
|
+
array.splice(index, 1);
|
|
107971
|
+
}
|
|
107972
|
+
},
|
|
107973
|
+
clearTempMeasure: function clearTempMeasure() {
|
|
107974
|
+
if (this.hasTempPoint && this.pointArray.length > 0) {
|
|
107975
|
+
this.pointArray.pop();
|
|
107976
|
+
}
|
|
107977
|
+
this.removeArrayItem(this.points, this.tempPoints);
|
|
107978
|
+
this.removeArrayItem(this.polyline, this.tempLine);
|
|
107979
|
+
this.disposeObject(this.tempPoints);
|
|
107980
|
+
this.disposeObject(this.tempLine);
|
|
107981
|
+
this.tempPoints = undefined;
|
|
107982
|
+
this.tempLine = undefined;
|
|
107983
|
+
this.hasTempPoint = false;
|
|
107984
|
+
this.updateAngleMeasure();
|
|
107985
|
+
},
|
|
107986
|
+
updateAngleMeasure: function updateAngleMeasure() {
|
|
107987
|
+
if (this.pointArray.length !== 3) {
|
|
107988
|
+
this.removeArrayItem(this.labels, this.tempLabel);
|
|
107989
|
+
this.removeArrayItem(this.curves, this.curveLine);
|
|
107990
|
+
this.disposeObject(this.tempLabel);
|
|
107991
|
+
this.disposeObject(this.curveLine);
|
|
107992
|
+
this.tempLabel = undefined;
|
|
107993
|
+
this.curveLine = undefined;
|
|
107994
|
+
return;
|
|
107995
|
+
}
|
|
107996
|
+
var angle = this.calculateAngle().toFixed(2) + '°';
|
|
107997
|
+
var p0 = this.pointArray[0];
|
|
107998
|
+
var p1 = this.pointArray[1];
|
|
107999
|
+
var p2 = this.pointArray[2];
|
|
108000
|
+
var v1 = new Vector3((p0.x + p1.x) / 2, (p0.y + p1.y) / 2, (p0.z + p1.z) / 2);
|
|
108001
|
+
var v2 = new Vector3((p1.x + p2.x) / 2, (p1.y + p2.y) / 2, (p1.z + p2.z) / 2);
|
|
108002
|
+
var curve = new CatmullRomCurve3([v1, v2]);
|
|
108003
|
+
var points = curve.getPoints(50);
|
|
108004
|
+
if (this.tempLabel) {
|
|
108005
|
+
this.tempLabel.element.textContent = angle;
|
|
108006
|
+
this.tempLabel.position.set(p1.x, p1.y, p1.z);
|
|
108007
|
+
} else {
|
|
108008
|
+
this.tempLabel = this.createLabel('measure-label', angle, p1);
|
|
108009
|
+
this.labels.push(this.tempLabel);
|
|
108010
|
+
this.scene.add(this.tempLabel);
|
|
108011
|
+
}
|
|
108012
|
+
if (this.curveLine) {
|
|
108013
|
+
this.curveLine.geometry.setFromPoints(points);
|
|
108014
|
+
} else {
|
|
108015
|
+
this.createCurve(points);
|
|
108016
|
+
}
|
|
108017
|
+
},
|
|
107703
108018
|
getPosition: function getPosition(e) {
|
|
108019
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
107704
108020
|
var mouse = new Vector2();
|
|
107705
108021
|
var elRect = this.renderer.domElement.getBoundingClientRect();
|
|
107706
108022
|
var canvasX = e.clientX - elRect.left;
|
|
@@ -107708,13 +108024,18 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107708
108024
|
mouse.x = canvasX / elRect.width * 2.0 - 1.0;
|
|
107709
108025
|
mouse.y = -(canvasY / elRect.height) * 2.0 + 1.0;
|
|
107710
108026
|
measure_angle_this.raycaster.setFromCamera(mouse, this.camera);
|
|
107711
|
-
var intersects = measure_angle_this.raycaster.intersectObjects(measure_angle_this.
|
|
108027
|
+
var intersects = measure_angle_this.raycaster.intersectObjects(measure_angle_this.getPickRoots(), true).filter(function (item) {
|
|
108028
|
+
return item && item.object && !measure_angle_this.isExcludedIntersection(item.object);
|
|
108029
|
+
});
|
|
107712
108030
|
if (intersects.length > 0) {
|
|
107713
108031
|
return {
|
|
107714
108032
|
point: intersects[0].point,
|
|
107715
108033
|
isModel: true
|
|
107716
108034
|
};
|
|
107717
108035
|
}
|
|
108036
|
+
if (options.allowPlaneFallback === false) {
|
|
108037
|
+
return null;
|
|
108038
|
+
}
|
|
107718
108039
|
|
|
107719
108040
|
// 如果没有交点,构建一个基于最后一个确认点且面向相机的平面
|
|
107720
108041
|
if (measure_angle_this.pointArray && measure_angle_this.pointArray.length > 0) {
|
|
@@ -107754,7 +108075,7 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107754
108075
|
var geom = new SphereGeometry(config.size || 0.3, 28, 28);
|
|
107755
108076
|
var sphere = new Mesh(geom, mesh);
|
|
107756
108077
|
sphere.frustumCulled = false;
|
|
107757
|
-
|
|
108078
|
+
this.markMeasureObject(sphere);
|
|
107758
108079
|
sphere.position.set(pos.x, pos.y, pos.z);
|
|
107759
108080
|
return sphere;
|
|
107760
108081
|
},
|
|
@@ -107771,7 +108092,7 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107771
108092
|
});
|
|
107772
108093
|
var lineGeometry = new BufferGeometry().setFromPoints([p1, p2]);
|
|
107773
108094
|
var line = new three_core_Line(lineGeometry, lineMaterial);
|
|
107774
|
-
|
|
108095
|
+
this.markMeasureObject(line);
|
|
107775
108096
|
line.renderOrder = 999;
|
|
107776
108097
|
line.frustumCulled = false;
|
|
107777
108098
|
return line;
|
|
@@ -107781,16 +108102,28 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107781
108102
|
div.className = name;
|
|
107782
108103
|
div.textContent = text;
|
|
107783
108104
|
var divLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
107784
|
-
|
|
108105
|
+
this.markMeasureObject(divLabel);
|
|
107785
108106
|
divLabel.position.set(position.x, position.y, position.z);
|
|
107786
108107
|
return divLabel;
|
|
107787
108108
|
},
|
|
107788
108109
|
mousemove: function mousemove(e) {
|
|
107789
|
-
if (measure_angle_this.isCompleted || measure_angle_this.pointArray.length === 0)
|
|
108110
|
+
if (measure_angle_this.isCompleted || measure_angle_this.pointArray.length === 0) {
|
|
108111
|
+
var _positionResult = measure_angle_this.getPosition(e);
|
|
108112
|
+
if (_positionResult && measure_angle_this.tipsLabel) {
|
|
108113
|
+
measure_angle_this.updateTipsLabelPosition(_positionResult.point);
|
|
108114
|
+
}
|
|
108115
|
+
return;
|
|
108116
|
+
}
|
|
108117
|
+
if (measure_angle_this.pointArray.length >= 3 && !measure_angle_this.hasTempPoint) return;
|
|
107790
108118
|
var positionResult = measure_angle_this.getPosition(e);
|
|
107791
108119
|
if (positionResult) {
|
|
107792
108120
|
var point = positionResult.point;
|
|
107793
|
-
|
|
108121
|
+
if (measure_angle_this.hasTempPoint) {
|
|
108122
|
+
measure_angle_this.pointArray.splice(measure_angle_this.pointArray.length - 1, 1, point);
|
|
108123
|
+
} else {
|
|
108124
|
+
measure_angle_this.pointArray.push(point);
|
|
108125
|
+
measure_angle_this.hasTempPoint = true;
|
|
108126
|
+
}
|
|
107794
108127
|
var length = measure_angle_this.pointArray.length;
|
|
107795
108128
|
var p1 = measure_angle_this.pointArray[length - 2];
|
|
107796
108129
|
var p2 = measure_angle_this.pointArray[length - 1];
|
|
@@ -107809,38 +108142,21 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107809
108142
|
measure_angle_this.polyline.push(measure_angle_this.tempLine);
|
|
107810
108143
|
measure_angle_this.scene.add(measure_angle_this.tempLine);
|
|
107811
108144
|
}
|
|
107812
|
-
|
|
107813
|
-
if (measure_angle_this.pointArray.length === 3) {
|
|
107814
|
-
var angle = measure_angle_this.calculateAngle().toFixed(2) + '°';
|
|
107815
|
-
var p0 = measure_angle_this.pointArray[0];
|
|
107816
|
-
var _p = measure_angle_this.pointArray[1];
|
|
107817
|
-
var _p2 = measure_angle_this.pointArray[2];
|
|
107818
|
-
var v1 = new Vector3((p0.x + _p.x) / 2, (p0.y + _p.y) / 2, (p0.z + _p.z) / 2);
|
|
107819
|
-
var v2 = new Vector3((_p.x + _p2.x) / 2, (_p.y + _p2.y) / 2, (_p.z + _p2.z) / 2);
|
|
107820
|
-
var curve = new CatmullRomCurve3([v1, v2]);
|
|
107821
|
-
var points = curve.getPoints(50);
|
|
107822
|
-
if (measure_angle_this.tempLabel) {
|
|
107823
|
-
measure_angle_this.tempLabel.element.textContent = angle;
|
|
107824
|
-
measure_angle_this.tempLabel.position.set(_p.x, _p.y, _p.z);
|
|
107825
|
-
measure_angle_this.curveLine.geometry.setFromPoints(points);
|
|
107826
|
-
} else {
|
|
107827
|
-
measure_angle_this.tempLabel = measure_angle_this.createLabel('measure-label', angle, _p);
|
|
107828
|
-
measure_angle_this.labels.push(measure_angle_this.tempLabel);
|
|
107829
|
-
measure_angle_this.scene.add(measure_angle_this.tempLabel);
|
|
107830
|
-
measure_angle_this.createCurve(points);
|
|
107831
|
-
}
|
|
107832
|
-
}
|
|
108145
|
+
measure_angle_this.updateAngleMeasure();
|
|
107833
108146
|
if (measure_angle_this.tipsLabel) {
|
|
107834
|
-
measure_angle_this.
|
|
108147
|
+
measure_angle_this.updateTipsLabelPosition(point);
|
|
107835
108148
|
}
|
|
107836
108149
|
}
|
|
107837
108150
|
},
|
|
108151
|
+
updateTipsLabelPosition: function updateTipsLabelPosition(position) {
|
|
108152
|
+
this.tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
|
|
108153
|
+
},
|
|
107838
108154
|
createTipsLabel: function createTipsLabel(label, position) {
|
|
107839
108155
|
var div = document.createElement('div');
|
|
107840
108156
|
div.className = 'tips-label';
|
|
107841
108157
|
div.textContent = label;
|
|
107842
108158
|
var tipsLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
107843
|
-
|
|
108159
|
+
this.markMeasureObject(tipsLabel);
|
|
107844
108160
|
tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
|
|
107845
108161
|
return tipsLabel;
|
|
107846
108162
|
},
|
|
@@ -107856,16 +108172,24 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107856
108172
|
clearTimeout(measure_angle_this.timer);
|
|
107857
108173
|
measure_angle_this.timer = setTimeout(function () {
|
|
107858
108174
|
measure_angle_this.isCompleted = false;
|
|
107859
|
-
var positionResult = measure_angle_this.getPosition(e
|
|
108175
|
+
var positionResult = measure_angle_this.getPosition(e, {
|
|
108176
|
+
allowPlaneFallback: false
|
|
108177
|
+
});
|
|
108178
|
+
if (!positionResult || !positionResult.isModel) {
|
|
108179
|
+
measure_angle_this.clearTempMeasure();
|
|
108180
|
+
element_ui_common["Message"].warning('请点击模型进行测量');
|
|
108181
|
+
return;
|
|
108182
|
+
}
|
|
107860
108183
|
if (positionResult) {
|
|
107861
|
-
var point = positionResult.point
|
|
107862
|
-
|
|
107863
|
-
|
|
107864
|
-
|
|
107865
|
-
|
|
108184
|
+
var point = positionResult.point;
|
|
108185
|
+
if (measure_angle_this.hasTempPoint && measure_angle_this.pointArray.length > 0) {
|
|
108186
|
+
measure_angle_this.pointArray.splice(measure_angle_this.pointArray.length - 1, 1, point);
|
|
108187
|
+
} else {
|
|
108188
|
+
measure_angle_this.pointArray.push(point);
|
|
107866
108189
|
}
|
|
108190
|
+
measure_angle_this.hasTempPoint = false;
|
|
107867
108191
|
if (measure_angle_this.tipsLabel) {
|
|
107868
|
-
measure_angle_this.
|
|
108192
|
+
measure_angle_this.updateTipsLabelPosition(point);
|
|
107869
108193
|
} else {
|
|
107870
108194
|
measure_angle_this.tipsLabel = measure_angle_this.createTipsLabel('左击绘制右击结束', point);
|
|
107871
108195
|
measure_angle_this.scene.add(measure_angle_this.tipsLabel);
|
|
@@ -107878,9 +108202,27 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107878
108202
|
measure_angle_this.points.push(geom);
|
|
107879
108203
|
measure_angle_this.scene.add(geom);
|
|
107880
108204
|
}
|
|
108205
|
+
var length = measure_angle_this.pointArray.length;
|
|
108206
|
+
if (length > 1) {
|
|
108207
|
+
var p1 = measure_angle_this.pointArray[length - 2];
|
|
108208
|
+
var p2 = measure_angle_this.pointArray[length - 1];
|
|
108209
|
+
if (measure_angle_this.tempLine) {
|
|
108210
|
+
measure_angle_this.tempLine.geometry.setFromPoints([p1, p2]);
|
|
108211
|
+
} else {
|
|
108212
|
+
measure_angle_this.tempLine = measure_angle_this.createLine(p1, p2);
|
|
108213
|
+
measure_angle_this.polyline.push(measure_angle_this.tempLine);
|
|
108214
|
+
measure_angle_this.scene.add(measure_angle_this.tempLine);
|
|
108215
|
+
}
|
|
108216
|
+
}
|
|
108217
|
+
measure_angle_this.updateAngleMeasure();
|
|
108218
|
+
if (measure_angle_this.pointArray.length >= 3) {
|
|
108219
|
+
measure_angle_this.isCompleted = true;
|
|
108220
|
+
measure_angle_this.pointArray.splice(0);
|
|
108221
|
+
measure_angle_this.hasTempPoint = false;
|
|
108222
|
+
measure_angle_this.curveLine = undefined;
|
|
108223
|
+
}
|
|
107881
108224
|
measure_angle_this.tempLine = undefined;
|
|
107882
108225
|
measure_angle_this.tempLabel = undefined;
|
|
107883
|
-
measure_angle_this.pointArray.push(point);
|
|
107884
108226
|
}
|
|
107885
108227
|
});
|
|
107886
108228
|
}
|
|
@@ -107894,11 +108236,13 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107894
108236
|
clearTimeout(measure_angle_this.timer);
|
|
107895
108237
|
var positionResult = measure_angle_this.getPosition(e);
|
|
107896
108238
|
if (positionResult) {
|
|
108239
|
+
measure_angle_this.clearTempMeasure();
|
|
107897
108240
|
measure_angle_this.isCompleted = true;
|
|
107898
108241
|
measure_angle_this.tempPoints = undefined;
|
|
107899
108242
|
measure_angle_this.tempLine = undefined;
|
|
107900
108243
|
measure_angle_this.tempLabel = undefined;
|
|
107901
108244
|
measure_angle_this.pointArray.splice(0);
|
|
108245
|
+
measure_angle_this.hasTempPoint = false;
|
|
107902
108246
|
measure_angle_this.renderer.domElement.removeEventListener('mousemove', measure_angle_this.mousemove);
|
|
107903
108247
|
}
|
|
107904
108248
|
},
|
|
@@ -107920,6 +108264,7 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107920
108264
|
this.tempPoints = undefined;
|
|
107921
108265
|
this.tempLabel = undefined;
|
|
107922
108266
|
this.tempLine = undefined;
|
|
108267
|
+
this.hasTempPoint = false;
|
|
107923
108268
|
this.scene.remove(this.tipsLabel);
|
|
107924
108269
|
this.tipsLabel = undefined;
|
|
107925
108270
|
}
|
|
@@ -107938,6 +108283,7 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107938
108283
|
this.tempPoints = undefined;
|
|
107939
108284
|
this.tempLabel = undefined;
|
|
107940
108285
|
this.tempLine = undefined;
|
|
108286
|
+
this.hasTempPoint = false;
|
|
107941
108287
|
this.scene.remove(this.tipsLabel);
|
|
107942
108288
|
this.tipsLabel = undefined;
|
|
107943
108289
|
},
|
|
@@ -107968,6 +108314,7 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107968
108314
|
transparent: true
|
|
107969
108315
|
});
|
|
107970
108316
|
measure_angle_this.curveLine = new three_core_Line(geom, material);
|
|
108317
|
+
measure_angle_this.markMeasureObject(measure_angle_this.curveLine);
|
|
107971
108318
|
measure_angle_this.curveLine.renderOrder = 999;
|
|
107972
108319
|
measure_angle_this.curveLine.frustumCulled = false;
|
|
107973
108320
|
measure_angle_this.curves.push(measure_angle_this.curveLine);
|
|
@@ -107998,9 +108345,11 @@ measure_angle_MeasureAngle.prototype = {
|
|
|
107998
108345
|
|
|
107999
108346
|
var measure_height_this = null;
|
|
108000
108347
|
var measure_height_MeasureHeight = function MeasureHeight(renderer, scene, camera, width, height) {
|
|
108348
|
+
var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
|
|
108001
108349
|
this.renderer = renderer;
|
|
108002
108350
|
this.scene = scene;
|
|
108003
108351
|
this.camera = camera;
|
|
108352
|
+
this.pickRoots = options.pickRoots || null;
|
|
108004
108353
|
this.pointArray = [];
|
|
108005
108354
|
this.raycaster = new Raycaster();
|
|
108006
108355
|
this.points = [];
|
|
@@ -108033,7 +108382,41 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108033
108382
|
this.width = width;
|
|
108034
108383
|
this.height = height;
|
|
108035
108384
|
},
|
|
108385
|
+
getPickRoots: function getPickRoots() {
|
|
108386
|
+
var roots = typeof measure_height_this.pickRoots === 'function' ? measure_height_this.pickRoots() : measure_height_this.pickRoots;
|
|
108387
|
+
if (Array.isArray(roots) && roots.length > 0) {
|
|
108388
|
+
return roots.filter(Boolean);
|
|
108389
|
+
}
|
|
108390
|
+
if (roots) {
|
|
108391
|
+
return [roots];
|
|
108392
|
+
}
|
|
108393
|
+
return measure_height_this.scene && measure_height_this.scene.children ? measure_height_this.scene.children : [];
|
|
108394
|
+
},
|
|
108395
|
+
isExcludedIntersection: function isExcludedIntersection(object) {
|
|
108396
|
+
var current = object;
|
|
108397
|
+
while (current) {
|
|
108398
|
+
var userData = current.userData || {};
|
|
108399
|
+
if (current.visible === false) return true;
|
|
108400
|
+
if (current.name === measure_height_this.measureName || userData.isMeasureObject === true) return true;
|
|
108401
|
+
if (userData.transformControlHelper === true || userData.outlineProxy === true) return true;
|
|
108402
|
+
if (current.isCamera || current.isLight) return true;
|
|
108403
|
+
if (typeof current.type === 'string' && (/Helper$/i.test(current.type) || current.type === 'CSS2DObject' || current.type === 'TransformControlsRoot')) {
|
|
108404
|
+
return true;
|
|
108405
|
+
}
|
|
108406
|
+
current = current.parent;
|
|
108407
|
+
}
|
|
108408
|
+
return false;
|
|
108409
|
+
},
|
|
108410
|
+
markMeasureObject: function markMeasureObject(object) {
|
|
108411
|
+
object.name = this.measureName;
|
|
108412
|
+
if (!object.userData) {
|
|
108413
|
+
object.userData = {};
|
|
108414
|
+
}
|
|
108415
|
+
object.userData.isMeasureObject = true;
|
|
108416
|
+
return object;
|
|
108417
|
+
},
|
|
108036
108418
|
getPosition: function getPosition(e) {
|
|
108419
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
108037
108420
|
var mouse = new Vector2();
|
|
108038
108421
|
var elRect = this.renderer.domElement.getBoundingClientRect();
|
|
108039
108422
|
var canvasX = e.clientX - elRect.left;
|
|
@@ -108041,13 +108424,18 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108041
108424
|
mouse.x = canvasX / elRect.width * 2.0 - 1.0;
|
|
108042
108425
|
mouse.y = -(canvasY / elRect.height) * 2.0 + 1.0;
|
|
108043
108426
|
measure_height_this.raycaster.setFromCamera(mouse, this.camera);
|
|
108044
|
-
var intersects = measure_height_this.raycaster.intersectObjects(measure_height_this.
|
|
108427
|
+
var intersects = measure_height_this.raycaster.intersectObjects(measure_height_this.getPickRoots(), true).filter(function (item) {
|
|
108428
|
+
return item && item.object && !measure_height_this.isExcludedIntersection(item.object);
|
|
108429
|
+
});
|
|
108045
108430
|
if (intersects.length > 0) {
|
|
108046
108431
|
return {
|
|
108047
108432
|
point: intersects[0].point,
|
|
108048
108433
|
isModel: true
|
|
108049
108434
|
};
|
|
108050
108435
|
}
|
|
108436
|
+
if (options.allowPlaneFallback === false) {
|
|
108437
|
+
return null;
|
|
108438
|
+
}
|
|
108051
108439
|
if (measure_height_this.pointArray && measure_height_this.pointArray.length > 0) {
|
|
108052
108440
|
var lastPoint = measure_height_this.pointArray.length === 1 ? measure_height_this.pointArray[0] : measure_height_this.pointArray[measure_height_this.pointArray.length - 2];
|
|
108053
108441
|
var cameraDir = new Vector3();
|
|
@@ -108085,7 +108473,7 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108085
108473
|
});
|
|
108086
108474
|
var lineGeometry = new BufferGeometry().setFromPoints([p1, p2]);
|
|
108087
108475
|
var line = new three_core_Line(lineGeometry, lineMaterial);
|
|
108088
|
-
|
|
108476
|
+
this.markMeasureObject(line);
|
|
108089
108477
|
line.renderOrder = 999;
|
|
108090
108478
|
line.frustumCulled = false;
|
|
108091
108479
|
return line;
|
|
@@ -108095,7 +108483,7 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108095
108483
|
div.className = name;
|
|
108096
108484
|
div.textContent = text;
|
|
108097
108485
|
var divLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
108098
|
-
|
|
108486
|
+
this.markMeasureObject(divLabel);
|
|
108099
108487
|
divLabel.position.set(position.x, position.y, position.z);
|
|
108100
108488
|
return divLabel;
|
|
108101
108489
|
},
|
|
@@ -108121,7 +108509,7 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108121
108509
|
div.className = 'tips-label';
|
|
108122
108510
|
div.textContent = label;
|
|
108123
108511
|
var tipsLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
108124
|
-
|
|
108512
|
+
this.markMeasureObject(tipsLabel);
|
|
108125
108513
|
tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
|
|
108126
108514
|
return tipsLabel;
|
|
108127
108515
|
},
|
|
@@ -108134,14 +108522,15 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108134
108522
|
clearTimeout(measure_height_this.timer);
|
|
108135
108523
|
measure_height_this.timer = setTimeout(function () {
|
|
108136
108524
|
measure_height_this.isCompleted = false;
|
|
108137
|
-
var positionResult = measure_height_this.getPosition(e
|
|
108525
|
+
var positionResult = measure_height_this.getPosition(e, {
|
|
108526
|
+
allowPlaneFallback: false
|
|
108527
|
+
});
|
|
108528
|
+
if (!positionResult || !positionResult.isModel) {
|
|
108529
|
+
element_ui_common["Message"].warning('请点击模型进行测量');
|
|
108530
|
+
return;
|
|
108531
|
+
}
|
|
108138
108532
|
if (positionResult) {
|
|
108139
|
-
var point = positionResult.point
|
|
108140
|
-
isModel = positionResult.isModel;
|
|
108141
|
-
if (!isModel) {
|
|
108142
|
-
element_ui_common["Message"].warning('请点击模型进行测量');
|
|
108143
|
-
return;
|
|
108144
|
-
}
|
|
108533
|
+
var point = positionResult.point;
|
|
108145
108534
|
// if (_this.tipsLabel) {
|
|
108146
108535
|
// _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05);
|
|
108147
108536
|
// } else {
|
|
@@ -108222,6 +108611,386 @@ measure_height_MeasureHeight.prototype = {
|
|
|
108222
108611
|
/* harmony default export */ var measure_height = ({
|
|
108223
108612
|
MeasureHeight: measure_height_MeasureHeight
|
|
108224
108613
|
});
|
|
108614
|
+
// CONCATENATED MODULE: ./src/utils/threejs/measure-clear-distance.js
|
|
108615
|
+
function measure_clear_distance_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = measure_clear_distance_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
108616
|
+
function measure_clear_distance_slicedToArray(r, e) { return measure_clear_distance_arrayWithHoles(r) || measure_clear_distance_iterableToArrayLimit(r, e) || measure_clear_distance_unsupportedIterableToArray(r, e) || measure_clear_distance_nonIterableRest(); }
|
|
108617
|
+
function measure_clear_distance_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
108618
|
+
function measure_clear_distance_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return measure_clear_distance_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? measure_clear_distance_arrayLikeToArray(r, a) : void 0; } }
|
|
108619
|
+
function measure_clear_distance_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
108620
|
+
function measure_clear_distance_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
108621
|
+
function measure_clear_distance_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
108622
|
+
|
|
108623
|
+
|
|
108624
|
+
|
|
108625
|
+
var measure_clear_distance_this = null;
|
|
108626
|
+
var measure_clear_distance_MeasureClearDistance = function MeasureClearDistance(renderer, scene, camera, width, height) {
|
|
108627
|
+
this.renderer = renderer;
|
|
108628
|
+
this.scene = scene;
|
|
108629
|
+
this.camera = camera;
|
|
108630
|
+
this.pointArray = []; // 保存当前操作所添加的点
|
|
108631
|
+
this.raycaster = new Raycaster();
|
|
108632
|
+
this.points = []; // 保存页面中所添加的点
|
|
108633
|
+
this.polyline = []; //保存页面中所添加的直线
|
|
108634
|
+
this.labels = []; // 保存页面中所添加的文本
|
|
108635
|
+
this.timer = null;
|
|
108636
|
+
this.width = width;
|
|
108637
|
+
this.height = height;
|
|
108638
|
+
this.firstTime = 0;
|
|
108639
|
+
this.measureName = 'measureObj';
|
|
108640
|
+
this.selectedObjects = [];
|
|
108641
|
+
};
|
|
108642
|
+
measure_clear_distance_MeasureClearDistance.prototype = {
|
|
108643
|
+
start: function start() {
|
|
108644
|
+
measure_clear_distance_this = this;
|
|
108645
|
+
this.renderer.domElement.style.cursor = 'crosshair';
|
|
108646
|
+
this.renderer.domElement.addEventListener('mouseup', this.click, false);
|
|
108647
|
+
this.renderer.domElement.addEventListener('mousedown', this.mousedown, false);
|
|
108648
|
+
},
|
|
108649
|
+
updateParams: function updateParams(width, height) {
|
|
108650
|
+
this.camera.aspect = width / height;
|
|
108651
|
+
this.camera.updateProjectionMatrix();
|
|
108652
|
+
this.renderer.setSize(width, height, true);
|
|
108653
|
+
this.width = width;
|
|
108654
|
+
this.height = height;
|
|
108655
|
+
},
|
|
108656
|
+
getPosition: function getPosition(e) {
|
|
108657
|
+
var mouse = new Vector2();
|
|
108658
|
+
var elRect = this.renderer.domElement.getBoundingClientRect();
|
|
108659
|
+
var canvasX = e.clientX - elRect.left;
|
|
108660
|
+
var canvasY = e.clientY - elRect.top;
|
|
108661
|
+
mouse.x = canvasX / elRect.width * 2.0 - 1.0;
|
|
108662
|
+
mouse.y = -(canvasY / elRect.height) * 2.0 + 1.0;
|
|
108663
|
+
measure_clear_distance_this.raycaster.setFromCamera(mouse, this.camera);
|
|
108664
|
+
var intersects = measure_clear_distance_this.raycaster.intersectObjects(measure_clear_distance_this.scene.children, true);
|
|
108665
|
+
if (intersects.length > 0) {
|
|
108666
|
+
return intersects[0];
|
|
108667
|
+
}
|
|
108668
|
+
return null;
|
|
108669
|
+
},
|
|
108670
|
+
createLine: function createLine(p1, p2) {
|
|
108671
|
+
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
108672
|
+
color: 0xff0000
|
|
108673
|
+
};
|
|
108674
|
+
var lineMaterial = new LineBasicMaterial({
|
|
108675
|
+
color: config.color,
|
|
108676
|
+
linewidth: 15,
|
|
108677
|
+
depthTest: false,
|
|
108678
|
+
depthWrite: false,
|
|
108679
|
+
transparent: true
|
|
108680
|
+
});
|
|
108681
|
+
var lineGeometry = new BufferGeometry().setFromPoints([p1, p2]);
|
|
108682
|
+
var line = new three_core_Line(lineGeometry, lineMaterial);
|
|
108683
|
+
line.name = this.measureName;
|
|
108684
|
+
line.renderOrder = 999;
|
|
108685
|
+
line.frustumCulled = false;
|
|
108686
|
+
return line;
|
|
108687
|
+
},
|
|
108688
|
+
createLabel: function createLabel(name, text, position) {
|
|
108689
|
+
var div = document.createElement('div');
|
|
108690
|
+
div.className = name;
|
|
108691
|
+
div.textContent = text;
|
|
108692
|
+
var divLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
108693
|
+
divLabel.name = this.measureName;
|
|
108694
|
+
divLabel.position.set(position.x, position.y, position.z);
|
|
108695
|
+
return divLabel;
|
|
108696
|
+
},
|
|
108697
|
+
createTipsLabel: function createTipsLabel(label, position) {
|
|
108698
|
+
var div = document.createElement('div');
|
|
108699
|
+
div.className = 'tips-label';
|
|
108700
|
+
div.textContent = label;
|
|
108701
|
+
var tipsLabel = new CSS2DRenderer_CSS2DObject(div);
|
|
108702
|
+
tipsLabel.name = this.measureName;
|
|
108703
|
+
tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05);
|
|
108704
|
+
return tipsLabel;
|
|
108705
|
+
},
|
|
108706
|
+
mousedown: function mousedown() {
|
|
108707
|
+
this.firstTime = new Date().getTime();
|
|
108708
|
+
},
|
|
108709
|
+
click: function click(e) {
|
|
108710
|
+
var lastTime = new Date().getTime();
|
|
108711
|
+
if (lastTime - this.firstTime < 300) {
|
|
108712
|
+
var measureObj = measure_clear_distance_this.getPosition(e);
|
|
108713
|
+
if (measureObj) {
|
|
108714
|
+
measure_clear_distance_this.selectedObjects.push(measureObj);
|
|
108715
|
+
if (measure_clear_distance_this.selectedObjects.length % 2 === 0) {
|
|
108716
|
+
measure_clear_distance_this.calculateClearDistance();
|
|
108717
|
+
}
|
|
108718
|
+
} else {
|
|
108719
|
+
element_ui_common["Message"].warning('请点击模型进行测量');
|
|
108720
|
+
}
|
|
108721
|
+
}
|
|
108722
|
+
},
|
|
108723
|
+
calculateClearDistance: function calculateClearDistance() {
|
|
108724
|
+
var l = this.selectedObjects.length;
|
|
108725
|
+
// 每次都取最后两个
|
|
108726
|
+
var obj1 = this.selectedObjects[l - 2];
|
|
108727
|
+
var obj2 = this.selectedObjects[l - 1];
|
|
108728
|
+
var isParallel = this.checkParallelism(obj1.object, obj1.instanceId, obj2.object, obj2.instanceId);
|
|
108729
|
+
console.log(isParallel);
|
|
108730
|
+
var pts1 = this.getInstanceSurfacePoints(obj1.object, obj1.instanceId, 600);
|
|
108731
|
+
var pts2 = this.getInstanceSurfacePoints(obj2.object, obj2.instanceId, 600);
|
|
108732
|
+
if (pts1.length === 0 || pts2.length === 0) {
|
|
108733
|
+
return;
|
|
108734
|
+
}
|
|
108735
|
+
var closestPair = this.findClosestPair(pts1, pts2);
|
|
108736
|
+
var position = new Vector3((closestPair.point1.x + closestPair.point2.x) / 2, (closestPair.point1.y + closestPair.point2.y) / 2, (closestPair.point1.z + closestPair.point2.z) / 2);
|
|
108737
|
+
// 将测量结果显示在页面中
|
|
108738
|
+
var circleTag1 = this.createLabel('circle-tag', '', closestPair.point1);
|
|
108739
|
+
var circleTag2 = this.createLabel('circle-tag', '', closestPair.point2);
|
|
108740
|
+
var line = this.createLine(closestPair.point1, closestPair.point2);
|
|
108741
|
+
var label = this.createLabel('measure-label', "".concat(this.numberToString(closestPair.distance)), position);
|
|
108742
|
+
this.points.push(circleTag1);
|
|
108743
|
+
this.points.push(circleTag1);
|
|
108744
|
+
this.polyline.push(line);
|
|
108745
|
+
this.labels.push(label);
|
|
108746
|
+
this.scene.add(circleTag1);
|
|
108747
|
+
this.scene.add(circleTag2);
|
|
108748
|
+
this.scene.add(line);
|
|
108749
|
+
this.scene.add(label);
|
|
108750
|
+
},
|
|
108751
|
+
getInstanceSurfacePoints: function getInstanceSurfacePoints(instancedMesh, instanceId) {
|
|
108752
|
+
var maxPoints = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
|
|
108753
|
+
var geometry = instancedMesh.geometry;
|
|
108754
|
+
// let localPoints = this.generateGenericLocalPoints(geometry, maxPoints);
|
|
108755
|
+
var localPoints = this.sampleGeometrySurface(geometry, maxPoints);
|
|
108756
|
+
var worldMatrix = this.getInstanceWorldMatrix(instancedMesh, instanceId);
|
|
108757
|
+
var worldPoints = localPoints.map(function (p) {
|
|
108758
|
+
return p.clone().applyMatrix4(worldMatrix);
|
|
108759
|
+
});
|
|
108760
|
+
return worldPoints.slice(0, maxPoints);
|
|
108761
|
+
},
|
|
108762
|
+
sampleGeometrySurface: function sampleGeometrySurface(geometry) {
|
|
108763
|
+
var maxPoints = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 600;
|
|
108764
|
+
var positions = geometry.getAttribute('position');
|
|
108765
|
+
if (!positions) return [];
|
|
108766
|
+
|
|
108767
|
+
// 获取三角形(优先使用索引)
|
|
108768
|
+
var triangles = [];
|
|
108769
|
+
if (geometry.index) {
|
|
108770
|
+
var index = geometry.index.array;
|
|
108771
|
+
for (var i = 0; i < index.length; i += 3) {
|
|
108772
|
+
var a = new Vector3(positions.getX(index[i]), positions.getY(index[i]), positions.getZ(index[i]));
|
|
108773
|
+
var b = new Vector3(positions.getX(index[i + 1]), positions.getY(index[i + 1]), positions.getZ(index[i + 1]));
|
|
108774
|
+
var c = new Vector3(positions.getX(index[i + 2]), positions.getY(index[i + 2]), positions.getZ(index[i + 2]));
|
|
108775
|
+
triangles.push([a, b, c]);
|
|
108776
|
+
}
|
|
108777
|
+
} else {
|
|
108778
|
+
// 无索引时,每三个顶点组成一个三角形
|
|
108779
|
+
for (var _i = 0; _i < positions.count; _i += 3) {
|
|
108780
|
+
var _a = new Vector3(positions.getX(_i), positions.getY(_i), positions.getZ(_i));
|
|
108781
|
+
var _b = new Vector3(positions.getX(_i + 1), positions.getY(_i + 1), positions.getZ(_i + 1));
|
|
108782
|
+
var _c = new Vector3(positions.getX(_i + 2), positions.getY(_i + 2), positions.getZ(_i + 2));
|
|
108783
|
+
triangles.push([_a, _b, _c]);
|
|
108784
|
+
}
|
|
108785
|
+
}
|
|
108786
|
+
if (triangles.length === 0) return [];
|
|
108787
|
+
|
|
108788
|
+
// 计算每个三角形的面积
|
|
108789
|
+
var areas = triangles.map(function (_ref) {
|
|
108790
|
+
var _ref2 = measure_clear_distance_slicedToArray(_ref, 3),
|
|
108791
|
+
a = _ref2[0],
|
|
108792
|
+
b = _ref2[1],
|
|
108793
|
+
c = _ref2[2];
|
|
108794
|
+
var ab = new Vector3().subVectors(b, a);
|
|
108795
|
+
var ac = new Vector3().subVectors(c, a);
|
|
108796
|
+
return new Vector3().crossVectors(ab, ac).length() * 0.5;
|
|
108797
|
+
});
|
|
108798
|
+
var totalArea = areas.reduce(function (sum, a) {
|
|
108799
|
+
return sum + a;
|
|
108800
|
+
}, 0);
|
|
108801
|
+
|
|
108802
|
+
// 按面积比例分配采样点数
|
|
108803
|
+
var points = [];
|
|
108804
|
+
for (var _i2 = 0; _i2 < triangles.length; _i2++) {
|
|
108805
|
+
var _triangles$_i = measure_clear_distance_slicedToArray(triangles[_i2], 3),
|
|
108806
|
+
_a2 = _triangles$_i[0],
|
|
108807
|
+
_b2 = _triangles$_i[1],
|
|
108808
|
+
_c2 = _triangles$_i[2];
|
|
108809
|
+
var area = areas[_i2];
|
|
108810
|
+
var samplesForFace = Math.round(area / totalArea * maxPoints);
|
|
108811
|
+
if (samplesForFace < 1 && points.length < maxPoints) samplesForFace = 1; // 确保每个面至少一个点
|
|
108812
|
+
|
|
108813
|
+
for (var j = 0; j < samplesForFace; j++) {
|
|
108814
|
+
// 重心坐标随机采样
|
|
108815
|
+
var u = Math.random();
|
|
108816
|
+
var v = Math.random() * (1 - u);
|
|
108817
|
+
var w = 1 - u - v;
|
|
108818
|
+
var point = new Vector3().addScaledVector(_a2, u).addScaledVector(_b2, v).addScaledVector(_c2, w);
|
|
108819
|
+
points.push(point);
|
|
108820
|
+
}
|
|
108821
|
+
}
|
|
108822
|
+
|
|
108823
|
+
// 如果点数不够,随机补充
|
|
108824
|
+
while (points.length < maxPoints) {
|
|
108825
|
+
var triIdx = Math.floor(Math.random() * triangles.length);
|
|
108826
|
+
var _triangles$triIdx = measure_clear_distance_slicedToArray(triangles[triIdx], 3),
|
|
108827
|
+
_a3 = _triangles$triIdx[0],
|
|
108828
|
+
_b3 = _triangles$triIdx[1],
|
|
108829
|
+
_c3 = _triangles$triIdx[2];
|
|
108830
|
+
var _u = Math.random();
|
|
108831
|
+
var _v = Math.random() * (1 - _u);
|
|
108832
|
+
var _w = 1 - _u - _v;
|
|
108833
|
+
points.push(new Vector3().addScaledVector(_a3, _u).addScaledVector(_b3, _v).addScaledVector(_c3, _w));
|
|
108834
|
+
}
|
|
108835
|
+
return points.slice(0, maxPoints);
|
|
108836
|
+
},
|
|
108837
|
+
generateGenericLocalPoints: function generateGenericLocalPoints(geometry) {
|
|
108838
|
+
var maxPoints = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;
|
|
108839
|
+
var pos = geometry.getAttribute('position');
|
|
108840
|
+
if (!pos) return [];
|
|
108841
|
+
var allVerts = [];
|
|
108842
|
+
for (var i = 0; i < pos.count; i++) {
|
|
108843
|
+
allVerts.push(new Vector3(pos.getX(i), pos.getY(i), pos.getZ(i)));
|
|
108844
|
+
}
|
|
108845
|
+
var sourceVerts = allVerts;
|
|
108846
|
+
if (geometry.index) {
|
|
108847
|
+
var indexArr = geometry.index.array;
|
|
108848
|
+
var seen = new Set();
|
|
108849
|
+
sourceVerts = [];
|
|
108850
|
+
for (var _i3 = 0; _i3 < indexArr.length; _i3++) {
|
|
108851
|
+
var v = allVerts[indexArr[_i3]];
|
|
108852
|
+
var key = "".concat(v.x.toFixed(4), ",").concat(v.y.toFixed(4), ",").concat(v.z.toFixed(4));
|
|
108853
|
+
if (!seen.has(key)) {
|
|
108854
|
+
seen.add(key);
|
|
108855
|
+
sourceVerts.push(v.clone());
|
|
108856
|
+
}
|
|
108857
|
+
}
|
|
108858
|
+
}
|
|
108859
|
+
if (sourceVerts.length > maxPoints) {
|
|
108860
|
+
var step = Math.ceil(sourceVerts.length / maxPoints);
|
|
108861
|
+
var sampled = [];
|
|
108862
|
+
for (var _i4 = 0; _i4 < sourceVerts.length; _i4 += step) sampled.push(sourceVerts[_i4]);
|
|
108863
|
+
sourceVerts = sampled;
|
|
108864
|
+
}
|
|
108865
|
+
return sourceVerts;
|
|
108866
|
+
},
|
|
108867
|
+
findClosestPair: function findClosestPair(points1, points2) {
|
|
108868
|
+
var minDist = Infinity;
|
|
108869
|
+
var c1 = new Vector3();
|
|
108870
|
+
var c2 = new Vector3();
|
|
108871
|
+
var _iterator = measure_clear_distance_createForOfIteratorHelper(points1),
|
|
108872
|
+
_step;
|
|
108873
|
+
try {
|
|
108874
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
108875
|
+
var p1 = _step.value;
|
|
108876
|
+
var _iterator2 = measure_clear_distance_createForOfIteratorHelper(points2),
|
|
108877
|
+
_step2;
|
|
108878
|
+
try {
|
|
108879
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
108880
|
+
var p2 = _step2.value;
|
|
108881
|
+
var d = p1.distanceTo(p2);
|
|
108882
|
+
if (d < minDist) {
|
|
108883
|
+
minDist = d;
|
|
108884
|
+
c1.copy(p1);
|
|
108885
|
+
c2.copy(p2);
|
|
108886
|
+
}
|
|
108887
|
+
}
|
|
108888
|
+
} catch (err) {
|
|
108889
|
+
_iterator2.e(err);
|
|
108890
|
+
} finally {
|
|
108891
|
+
_iterator2.f();
|
|
108892
|
+
}
|
|
108893
|
+
}
|
|
108894
|
+
} catch (err) {
|
|
108895
|
+
_iterator.e(err);
|
|
108896
|
+
} finally {
|
|
108897
|
+
_iterator.f();
|
|
108898
|
+
}
|
|
108899
|
+
return {
|
|
108900
|
+
point1: c1,
|
|
108901
|
+
point2: c2,
|
|
108902
|
+
distance: minDist
|
|
108903
|
+
};
|
|
108904
|
+
},
|
|
108905
|
+
// 平行判断 (基于包围盒主轴方向)
|
|
108906
|
+
checkParallelism: function checkParallelism(inst1, id1, inst2, id2) {
|
|
108907
|
+
var mat1 = this.getInstanceWorldMatrix(inst1, id1);
|
|
108908
|
+
var mat2 = this.getInstanceWorldMatrix(inst2, id2);
|
|
108909
|
+
var box1 = new Box3();
|
|
108910
|
+
var box2 = new Box3();
|
|
108911
|
+
|
|
108912
|
+
// 确保包围盒存在
|
|
108913
|
+
if (!inst1.geometry.boundingBox) inst1.geometry.computeBoundingBox();
|
|
108914
|
+
if (!inst2.geometry.boundingBox) inst2.geometry.computeBoundingBox();
|
|
108915
|
+
box1.copy(inst1.geometry.boundingBox).applyMatrix4(mat1);
|
|
108916
|
+
box2.copy(inst2.geometry.boundingBox).applyMatrix4(mat2);
|
|
108917
|
+
var size1 = new Vector3();
|
|
108918
|
+
box1.getSize(size1);
|
|
108919
|
+
var size2 = new Vector3();
|
|
108920
|
+
box2.getSize(size2);
|
|
108921
|
+
var getMainDir = function getMainDir(s) {
|
|
108922
|
+
if (s.x >= s.y && s.x >= s.z) return new Vector3(1, 0, 0);
|
|
108923
|
+
if (s.y >= s.x && s.y >= s.z) return new Vector3(0, 1, 0);
|
|
108924
|
+
return new Vector3(0, 0, 1);
|
|
108925
|
+
};
|
|
108926
|
+
var d1 = getMainDir(size1);
|
|
108927
|
+
var d2 = getMainDir(size2);
|
|
108928
|
+
var rot1 = new Quaternion().setFromRotationMatrix(new Matrix4().extractRotation(mat1));
|
|
108929
|
+
var rot2 = new Quaternion().setFromRotationMatrix(new Matrix4().extractRotation(mat2));
|
|
108930
|
+
d1.applyQuaternion(rot1);
|
|
108931
|
+
d2.applyQuaternion(rot2);
|
|
108932
|
+
return Math.abs(d1.dot(d2)) > 0.95;
|
|
108933
|
+
},
|
|
108934
|
+
getInstanceWorldMatrix: function getInstanceWorldMatrix(instancedMesh, instanceId) {
|
|
108935
|
+
var matrix = new Matrix4();
|
|
108936
|
+
var instanceMatrix = new Matrix4();
|
|
108937
|
+
instancedMesh.getMatrixAt(instanceId, instanceMatrix);
|
|
108938
|
+
matrix.multiplyMatrices(instancedMesh.matrixWorld, instanceMatrix);
|
|
108939
|
+
return matrix;
|
|
108940
|
+
},
|
|
108941
|
+
close: function close(isClear) {
|
|
108942
|
+
this.renderer.domElement.removeEventListener('mousedown', this.mousedown);
|
|
108943
|
+
this.renderer.domElement.removeEventListener('mouseup', this.click);
|
|
108944
|
+
if (!isClear) {
|
|
108945
|
+
this.remove(this.points);
|
|
108946
|
+
this.remove(this.polyline);
|
|
108947
|
+
this.remove(this.labels);
|
|
108948
|
+
this.pointArray.splice(0);
|
|
108949
|
+
this.points.splice(0);
|
|
108950
|
+
this.polyline.splice(0);
|
|
108951
|
+
this.labels.splice(0);
|
|
108952
|
+
this.firstTime = 0;
|
|
108953
|
+
}
|
|
108954
|
+
this.renderer.domElement.style.cursor = 'pointer';
|
|
108955
|
+
},
|
|
108956
|
+
clear: function clear() {
|
|
108957
|
+
this.remove(this.points);
|
|
108958
|
+
this.remove(this.polyline);
|
|
108959
|
+
this.remove(this.labels);
|
|
108960
|
+
this.pointArray.splice(0);
|
|
108961
|
+
this.points.splice(0);
|
|
108962
|
+
this.polyline.splice(0);
|
|
108963
|
+
this.labels.splice(0);
|
|
108964
|
+
this.firstTime = 0;
|
|
108965
|
+
},
|
|
108966
|
+
remove: function remove(array) {
|
|
108967
|
+
for (var index = 0; index < array.length; index++) {
|
|
108968
|
+
var element = array[index];
|
|
108969
|
+
if (element.geometry) {
|
|
108970
|
+
element.geometry.dispose();
|
|
108971
|
+
}
|
|
108972
|
+
this.scene.remove(element);
|
|
108973
|
+
}
|
|
108974
|
+
},
|
|
108975
|
+
numberToString: function numberToString(num) {
|
|
108976
|
+
if (num < 0.0001) {
|
|
108977
|
+
return num.toString();
|
|
108978
|
+
}
|
|
108979
|
+
var fractionDigits = 2;
|
|
108980
|
+
if (num < 0.01) {
|
|
108981
|
+
fractionDigits = 4;
|
|
108982
|
+
} else if (num < 0.1) {
|
|
108983
|
+
fractionDigits = 3;
|
|
108984
|
+
}
|
|
108985
|
+
return num.toFixed(fractionDigits);
|
|
108986
|
+
},
|
|
108987
|
+
preventContextMenu: function preventContextMenu(event) {
|
|
108988
|
+
event.preventDefault();
|
|
108989
|
+
}
|
|
108990
|
+
};
|
|
108991
|
+
/* harmony default export */ var measure_clear_distance = ({
|
|
108992
|
+
MeasureClearDistance: measure_clear_distance_MeasureClearDistance
|
|
108993
|
+
});
|
|
108225
108994
|
// CONCATENATED MODULE: ./src/utils/flgltf-parser.js
|
|
108226
108995
|
function flgltf_parser_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = flgltf_parser_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
108227
108996
|
function flgltf_parser_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return flgltf_parser_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? flgltf_parser_arrayLikeToArray(r, a) : void 0; } }
|
|
@@ -120029,6 +120798,7 @@ var LOG_INTERVAL = 30;
|
|
|
120029
120798
|
|
|
120030
120799
|
|
|
120031
120800
|
|
|
120801
|
+
|
|
120032
120802
|
|
|
120033
120803
|
|
|
120034
120804
|
var isDebug = false || false === true;
|
|
@@ -125347,7 +126117,14 @@ var isDebug = false || false === true;
|
|
|
125347
126117
|
/*
|
|
125348
126118
|
参数: type: '', distance、area、angle、height, 暂时只提供距离、面积、角度、高度这四种方式
|
|
125349
126119
|
*/
|
|
126120
|
+
getMeasurePickRoots: function getMeasurePickRoots() {
|
|
126121
|
+
if (this.modelGroup && this.modelGroup.children && this.modelGroup.children.length > 0) {
|
|
126122
|
+
return [this.modelGroup];
|
|
126123
|
+
}
|
|
126124
|
+
return this.scene && this.scene.children ? this.scene.children : [];
|
|
126125
|
+
},
|
|
125350
126126
|
openMeasure: function openMeasure(type) {
|
|
126127
|
+
var _this47 = this;
|
|
125351
126128
|
var isClear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
125352
126129
|
if (this.threeMeasure) {
|
|
125353
126130
|
this.threeMeasure.close(isClear);
|
|
@@ -125357,19 +126134,39 @@ var isDebug = false || false === true;
|
|
|
125357
126134
|
// renderEnabled = true
|
|
125358
126135
|
switch (type) {
|
|
125359
126136
|
case 'distance':
|
|
125360
|
-
this.threeMeasure = new measure_distance.MeasureDistance(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight
|
|
126137
|
+
this.threeMeasure = new measure_distance.MeasureDistance(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight, {
|
|
126138
|
+
pickRoots: function pickRoots() {
|
|
126139
|
+
return _this47.getMeasurePickRoots();
|
|
126140
|
+
}
|
|
126141
|
+
});
|
|
125361
126142
|
this.threeMeasure.start();
|
|
125362
126143
|
break;
|
|
125363
126144
|
case 'area':
|
|
125364
|
-
this.threeMeasure = new measure_area.MeasureArea(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight
|
|
126145
|
+
this.threeMeasure = new measure_area.MeasureArea(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight, {
|
|
126146
|
+
pickRoots: function pickRoots() {
|
|
126147
|
+
return _this47.getMeasurePickRoots();
|
|
126148
|
+
}
|
|
126149
|
+
});
|
|
125365
126150
|
this.threeMeasure.start();
|
|
125366
126151
|
break;
|
|
125367
126152
|
case 'angle':
|
|
125368
|
-
this.threeMeasure = new measure_angle.MeasureAngle(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight
|
|
126153
|
+
this.threeMeasure = new measure_angle.MeasureAngle(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight, {
|
|
126154
|
+
pickRoots: function pickRoots() {
|
|
126155
|
+
return _this47.getMeasurePickRoots();
|
|
126156
|
+
}
|
|
126157
|
+
});
|
|
125369
126158
|
this.threeMeasure.start();
|
|
125370
126159
|
break;
|
|
125371
126160
|
case 'height':
|
|
125372
|
-
this.threeMeasure = new measure_height.MeasureHeight(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight
|
|
126161
|
+
this.threeMeasure = new measure_height.MeasureHeight(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight, {
|
|
126162
|
+
pickRoots: function pickRoots() {
|
|
126163
|
+
return _this47.getMeasurePickRoots();
|
|
126164
|
+
}
|
|
126165
|
+
});
|
|
126166
|
+
this.threeMeasure.start();
|
|
126167
|
+
break;
|
|
126168
|
+
case 'clearDistance':
|
|
126169
|
+
this.threeMeasure = new measure_clear_distance.MeasureClearDistance(this.renderer, this.scene, this.camera, this.instructions.offsetWidth, this.instructions.offsetHeight);
|
|
125373
126170
|
this.threeMeasure.start();
|
|
125374
126171
|
break;
|
|
125375
126172
|
}
|
|
@@ -125387,20 +126184,53 @@ var isDebug = false || false === true;
|
|
|
125387
126184
|
// 移除键盘事件监听器
|
|
125388
126185
|
document.removeEventListener('keydown', this.handleMeasureKeyDown, false);
|
|
125389
126186
|
},
|
|
125390
|
-
|
|
125391
|
-
|
|
125392
|
-
|
|
125393
|
-
|
|
125394
|
-
|
|
125395
|
-
|
|
125396
|
-
|
|
125397
|
-
|
|
126187
|
+
disposeMeasureObject: function disposeMeasureObject(object) {
|
|
126188
|
+
if (!object) return;
|
|
126189
|
+
if (object.geometry) {
|
|
126190
|
+
object.geometry.dispose();
|
|
126191
|
+
}
|
|
126192
|
+
if (Array.isArray(object.material)) {
|
|
126193
|
+
object.material.forEach(function (material) {
|
|
126194
|
+
material && material.dispose && material.dispose();
|
|
126195
|
+
});
|
|
126196
|
+
} else if (object.material && object.material.dispose) {
|
|
126197
|
+
object.material.dispose();
|
|
126198
|
+
}
|
|
126199
|
+
if (object.element && object.element.parentNode) {
|
|
126200
|
+
object.element.parentNode.removeChild(object.element);
|
|
126201
|
+
}
|
|
126202
|
+
},
|
|
126203
|
+
isMeasureObject: function isMeasureObject(object) {
|
|
126204
|
+
if (!object) return false;
|
|
126205
|
+
var userData = object.userData || {};
|
|
126206
|
+
return object.name === 'measureObj' || userData.isMeasureObject === true;
|
|
126207
|
+
},
|
|
126208
|
+
removeMeasureObjectsFromScene: function removeMeasureObjectsFromScene() {
|
|
126209
|
+
var _this48 = this;
|
|
126210
|
+
if (!this.scene) return;
|
|
126211
|
+
var measureObjects = [];
|
|
126212
|
+
this.scene.traverse(function (object) {
|
|
126213
|
+
if (_this48.isMeasureObject(object)) {
|
|
126214
|
+
measureObjects.push(object);
|
|
126215
|
+
}
|
|
126216
|
+
});
|
|
126217
|
+
measureObjects.forEach(function (object) {
|
|
126218
|
+
if (object.parent) {
|
|
126219
|
+
object.parent.remove(object);
|
|
126220
|
+
} else {
|
|
126221
|
+
_this48.scene.remove(object);
|
|
125398
126222
|
}
|
|
125399
|
-
|
|
126223
|
+
_this48.disposeMeasureObject(object);
|
|
125400
126224
|
});
|
|
126225
|
+
},
|
|
126226
|
+
// 增加一个清除所有测量结果的方法,清理历史测量实例遗留的对象
|
|
126227
|
+
clearMeasureByName: function clearMeasureByName() {
|
|
125401
126228
|
if (this.threeMeasure) {
|
|
125402
126229
|
this.threeMeasure.clear();
|
|
125403
126230
|
}
|
|
126231
|
+
this.removeMeasureObjectsFromScene();
|
|
126232
|
+
// this.measureFlag = false;
|
|
126233
|
+
document.removeEventListener('keydown', this.handleMeasureKeyDown, false);
|
|
125404
126234
|
},
|
|
125405
126235
|
handleMeasureKeyDown: function handleMeasureKeyDown(event) {
|
|
125406
126236
|
// 检查是否按下了ESC键
|
|
@@ -125463,12 +126293,12 @@ var isDebug = false || false === true;
|
|
|
125463
126293
|
参数: object, 目标实体,
|
|
125464
126294
|
*/
|
|
125465
126295
|
isolate: function isolate(object) {
|
|
125466
|
-
var
|
|
126296
|
+
var _this49 = this;
|
|
125467
126297
|
if (!this.scene) return;
|
|
125468
126298
|
// 隔离 将目标实体以外的实体隐藏掉
|
|
125469
126299
|
this.scene.traverse(function (item) {
|
|
125470
126300
|
if (item.isMesh && item.name !== object.name) {
|
|
125471
|
-
var offsetMatrix = new
|
|
126301
|
+
var offsetMatrix = new _this49.THREE.Matrix4().copy(item.userData.copyMatrix).makeTranslation(9999999, 9999999, 9999999);
|
|
125472
126302
|
item.setMatrixAt(item.userData.instanceIndex, offsetMatrix);
|
|
125473
126303
|
item.instanceMatrix.needsUpdate = true;
|
|
125474
126304
|
}
|
|
@@ -125476,7 +126306,7 @@ var isDebug = false || false === true;
|
|
|
125476
126306
|
},
|
|
125477
126307
|
// 还原操作 将修改过的实体进行恢复
|
|
125478
126308
|
restore: function restore() {
|
|
125479
|
-
var
|
|
126309
|
+
var _this50 = this;
|
|
125480
126310
|
if (!this.scene) return;
|
|
125481
126311
|
this.scene.traverse(function (item) {
|
|
125482
126312
|
if (item.isMesh) {
|
|
@@ -125498,20 +126328,20 @@ var isDebug = false || false === true;
|
|
|
125498
126328
|
item.userData.translateMatrixInvert = null;
|
|
125499
126329
|
}
|
|
125500
126330
|
if (item.userData.combineMatrixInvert) {
|
|
125501
|
-
|
|
126331
|
+
_this50.rotateMesh(item, {
|
|
125502
126332
|
x: 0,
|
|
125503
126333
|
y: 0,
|
|
125504
126334
|
z: 0
|
|
125505
126335
|
});
|
|
125506
126336
|
item.userData.combineMatrixInvert = null;
|
|
125507
126337
|
}
|
|
125508
|
-
var copyMatrix =
|
|
126338
|
+
var copyMatrix = _this50.getInstanceCopyMatrix(item, instanceId);
|
|
125509
126339
|
if (!copyMatrix) return;
|
|
125510
|
-
var sourceHidden =
|
|
125511
|
-
var offsetMatrix = new
|
|
126340
|
+
var sourceHidden = _this50.isSourceHiddenInstance(item, instanceId);
|
|
126341
|
+
var offsetMatrix = new _this50.THREE.Matrix4().copy(copyMatrix);
|
|
125512
126342
|
if (sourceHidden) {
|
|
125513
126343
|
offsetMatrix.makeTranslation(9999999, 9999999, 9999999);
|
|
125514
|
-
|
|
126344
|
+
_this50.removeOutlineInstanceProxy(item, item.userData.instanceIndex);
|
|
125515
126345
|
}
|
|
125516
126346
|
item.setMatrixAt(item.userData.instanceIndex, offsetMatrix);
|
|
125517
126347
|
item.instanceMatrix.needsUpdate = true;
|
|
@@ -125520,7 +126350,7 @@ var isDebug = false || false === true;
|
|
|
125520
126350
|
},
|
|
125521
126351
|
// 添加自定义模型, 暂时只支持glb、gltf格式
|
|
125522
126352
|
addCustomModel: function addCustomModel(name, position, url) {
|
|
125523
|
-
var
|
|
126353
|
+
var _this51 = this;
|
|
125524
126354
|
var scale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
125525
126355
|
var immediately = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
125526
126356
|
var callback = arguments.length > 5 ? arguments[5] : undefined;
|
|
@@ -125531,41 +126361,41 @@ var isDebug = false || false === true;
|
|
|
125531
126361
|
locationModel.scale.set(scale, scale, scale);
|
|
125532
126362
|
locationModel.updateMatrixWorld();
|
|
125533
126363
|
if (immediately) {
|
|
125534
|
-
|
|
126364
|
+
_this51.cameraControls.fitToSphere(gltf.this.scene, true);
|
|
125535
126365
|
}
|
|
125536
126366
|
// 动画混合器
|
|
125537
126367
|
// 不参与裁剪
|
|
125538
126368
|
locationModel.userData.cull = false;
|
|
125539
126369
|
locationModel.name = name;
|
|
125540
|
-
if (
|
|
125541
|
-
locationModel.position.copy(new
|
|
126370
|
+
if (_this51.scene) _this51.scene.add(locationModel);
|
|
126371
|
+
locationModel.position.copy(new _this51.THREE.Vector3(position.x, position.y, position.z));
|
|
125542
126372
|
if (gltf.animations.length > 0) {
|
|
125543
|
-
var actionMixer = new
|
|
126373
|
+
var actionMixer = new _this51.THREE.AnimationMixer(gltf.this.scene);
|
|
125544
126374
|
var walkActive = actionMixer.clipAction(gltf.animations[0]);
|
|
125545
126375
|
walkActive.play();
|
|
125546
|
-
|
|
125547
|
-
|
|
126376
|
+
_this51.modelActive.push(walkActive);
|
|
126377
|
+
_this51.modelActions.push(actionMixer);
|
|
125548
126378
|
}
|
|
125549
126379
|
callback && callback();
|
|
125550
126380
|
});
|
|
125551
126381
|
},
|
|
125552
126382
|
// 删除添加的自定义模型
|
|
125553
126383
|
removeCustomModel: function removeCustomModel(name) {
|
|
125554
|
-
var
|
|
126384
|
+
var _this52 = this;
|
|
125555
126385
|
var obj = this.getObjectByName(name);
|
|
125556
126386
|
obj.forEach(function (item, index) {
|
|
125557
126387
|
if (item.animations > 0) {
|
|
125558
126388
|
item.removeFromParent();
|
|
125559
|
-
|
|
125560
|
-
|
|
126389
|
+
_this52.modelActions[index].uncacheRoot(item);
|
|
126390
|
+
_this52.modelActions[index].uncacheRoot(_this52.modelActive[index]);
|
|
125561
126391
|
}
|
|
125562
126392
|
item.traverse(function (child) {
|
|
125563
|
-
if (child instanceof
|
|
126393
|
+
if (child instanceof _this52.THREE.Mesh) {
|
|
125564
126394
|
child.geometry.dispose();
|
|
125565
126395
|
child.material.dispose();
|
|
125566
126396
|
}
|
|
125567
126397
|
});
|
|
125568
|
-
if (
|
|
126398
|
+
if (_this52.scene) _this52.scene.remove(item);
|
|
125569
126399
|
});
|
|
125570
126400
|
this.modelActions.splice(0);
|
|
125571
126401
|
this.modelActive.splice(0);
|
|
@@ -125627,7 +126457,7 @@ var isDebug = false || false === true;
|
|
|
125627
126457
|
return size;
|
|
125628
126458
|
},
|
|
125629
126459
|
animate: function animate() {
|
|
125630
|
-
var
|
|
126460
|
+
var _this53 = this;
|
|
125631
126461
|
if (isDebug) {
|
|
125632
126462
|
this.stats && this.stats.begin(); // 开始帧率统计
|
|
125633
126463
|
}
|
|
@@ -125641,7 +126471,7 @@ var isDebug = false || false === true;
|
|
|
125641
126471
|
if (this.timeStamp > singleFrameTime) {
|
|
125642
126472
|
if (this.modelActions.length > 0) {
|
|
125643
126473
|
this.modelActions.forEach(function (item) {
|
|
125644
|
-
item.update(
|
|
126474
|
+
item.update(_this53.timeStamp);
|
|
125645
126475
|
});
|
|
125646
126476
|
}
|
|
125647
126477
|
this.cameraControls.enabled && this.cameraControls.update(this.timeStamp);
|
|
@@ -125999,25 +126829,25 @@ var isDebug = false || false === true;
|
|
|
125999
126829
|
* 加载下一批数据
|
|
126000
126830
|
*/
|
|
126001
126831
|
loadNextBatch: function loadNextBatch() {
|
|
126002
|
-
var
|
|
126832
|
+
var _this54 = this;
|
|
126003
126833
|
return com_graphicsvue_type_script_lang_js_asyncToGenerator(/*#__PURE__*/com_graphicsvue_type_script_lang_js_regenerator().m(function _callee1() {
|
|
126004
126834
|
var loadingState, batch, _t3;
|
|
126005
126835
|
return com_graphicsvue_type_script_lang_js_regenerator().w(function (_context1) {
|
|
126006
126836
|
while (1) switch (_context1.p = _context1.n) {
|
|
126007
126837
|
case 0:
|
|
126008
|
-
loadingState =
|
|
126009
|
-
if (
|
|
126838
|
+
loadingState = _this54.noObserver ? _this54.noObserver.batchLoadingState : _this54.batchLoadingState;
|
|
126839
|
+
if (_this54.isBatchLoadingSceneReady()) {
|
|
126010
126840
|
_context1.n = 1;
|
|
126011
126841
|
break;
|
|
126012
126842
|
}
|
|
126013
|
-
|
|
126843
|
+
_this54.stopBatchLoading('scene_unavailable');
|
|
126014
126844
|
return _context1.a(2);
|
|
126015
126845
|
case 1:
|
|
126016
126846
|
if (!(!loadingState.isLoading || loadingState.currentBatch >= loadingState.pendingData.length)) {
|
|
126017
126847
|
_context1.n = 2;
|
|
126018
126848
|
break;
|
|
126019
126849
|
}
|
|
126020
|
-
|
|
126850
|
+
_this54.completeBatchLoading();
|
|
126021
126851
|
return _context1.a(2);
|
|
126022
126852
|
case 2:
|
|
126023
126853
|
if (!loadingState.isPaused) {
|
|
@@ -126026,7 +126856,7 @@ var isDebug = false || false === true;
|
|
|
126026
126856
|
}
|
|
126027
126857
|
// 如果暂停,延迟一段时间后再次检查
|
|
126028
126858
|
loadingState.animationFrameId = requestAnimationFrame(function () {
|
|
126029
|
-
|
|
126859
|
+
_this54.loadNextBatch();
|
|
126030
126860
|
});
|
|
126031
126861
|
return _context1.a(2);
|
|
126032
126862
|
case 3:
|
|
@@ -126036,7 +126866,7 @@ var isDebug = false || false === true;
|
|
|
126036
126866
|
}
|
|
126037
126867
|
// 如果正在交互,延迟一段时间后再次检查
|
|
126038
126868
|
loadingState.animationFrameId = requestAnimationFrame(function () {
|
|
126039
|
-
|
|
126869
|
+
_this54.loadNextBatch();
|
|
126040
126870
|
});
|
|
126041
126871
|
return _context1.a(2);
|
|
126042
126872
|
case 4:
|
|
@@ -126045,13 +126875,13 @@ var isDebug = false || false === true;
|
|
|
126045
126875
|
_context1.n = 5;
|
|
126046
126876
|
break;
|
|
126047
126877
|
}
|
|
126048
|
-
|
|
126878
|
+
_this54.completeBatchLoading();
|
|
126049
126879
|
return _context1.a(2);
|
|
126050
126880
|
case 5:
|
|
126051
126881
|
_context1.p = 5;
|
|
126052
126882
|
console.log('加载批次:', loadingState.currentBatch);
|
|
126053
126883
|
_context1.n = 6;
|
|
126054
|
-
return
|
|
126884
|
+
return _this54.processWithMainThread(batch);
|
|
126055
126885
|
case 6:
|
|
126056
126886
|
if (loadingState.isLoading) {
|
|
126057
126887
|
_context1.n = 7;
|
|
@@ -126059,11 +126889,11 @@ var isDebug = false || false === true;
|
|
|
126059
126889
|
}
|
|
126060
126890
|
return _context1.a(2);
|
|
126061
126891
|
case 7:
|
|
126062
|
-
if (
|
|
126892
|
+
if (_this54.isBatchLoadingSceneReady()) {
|
|
126063
126893
|
_context1.n = 8;
|
|
126064
126894
|
break;
|
|
126065
126895
|
}
|
|
126066
|
-
|
|
126896
|
+
_this54.stopBatchLoading('scene_unavailable');
|
|
126067
126897
|
return _context1.a(2);
|
|
126068
126898
|
case 8:
|
|
126069
126899
|
// 更新进度
|
|
@@ -126071,8 +126901,8 @@ var isDebug = false || false === true;
|
|
|
126071
126901
|
loadingState.currentBatch++;
|
|
126072
126902
|
|
|
126073
126903
|
// 同步到响应式状态
|
|
126074
|
-
|
|
126075
|
-
|
|
126904
|
+
_this54.batchLoadingState.loadedCount = loadingState.loadedCount;
|
|
126905
|
+
_this54.batchLoadingState.currentBatch = loadingState.currentBatch;
|
|
126076
126906
|
|
|
126077
126907
|
// 调用进度回调
|
|
126078
126908
|
if (loadingState.onProgress) {
|
|
@@ -126086,7 +126916,7 @@ var isDebug = false || false === true;
|
|
|
126086
126916
|
|
|
126087
126917
|
// 使用 requestAnimationFrame 在下一帧继续加载
|
|
126088
126918
|
loadingState.animationFrameId = requestAnimationFrame(function () {
|
|
126089
|
-
|
|
126919
|
+
_this54.loadNextBatch();
|
|
126090
126920
|
});
|
|
126091
126921
|
_context1.n = 10;
|
|
126092
126922
|
break;
|
|
@@ -126097,7 +126927,7 @@ var isDebug = false || false === true;
|
|
|
126097
126927
|
|
|
126098
126928
|
// 继续下一批次
|
|
126099
126929
|
loadingState.animationFrameId = requestAnimationFrame(function () {
|
|
126100
|
-
|
|
126930
|
+
_this54.loadNextBatch();
|
|
126101
126931
|
});
|
|
126102
126932
|
case 10:
|
|
126103
126933
|
return _context1.a(2);
|
|
@@ -126109,20 +126939,20 @@ var isDebug = false || false === true;
|
|
|
126109
126939
|
* 使用主线程处理批次数据
|
|
126110
126940
|
*/
|
|
126111
126941
|
processWithMainThread: function processWithMainThread(batch) {
|
|
126112
|
-
var
|
|
126942
|
+
var _this55 = this;
|
|
126113
126943
|
return com_graphicsvue_type_script_lang_js_asyncToGenerator(/*#__PURE__*/com_graphicsvue_type_script_lang_js_regenerator().m(function _callee10() {
|
|
126114
126944
|
var loadingState;
|
|
126115
126945
|
return com_graphicsvue_type_script_lang_js_regenerator().w(function (_context10) {
|
|
126116
126946
|
while (1) switch (_context10.n) {
|
|
126117
126947
|
case 0:
|
|
126118
|
-
loadingState =
|
|
126948
|
+
loadingState = _this55.noObserver ? _this55.noObserver.batchLoadingState : _this55.batchLoadingState;
|
|
126119
126949
|
loadingState.options.batchSize = loadingState.batchSize;
|
|
126120
126950
|
loadingState.options.resetState = loadingState.currentBatch === 0;
|
|
126121
126951
|
// 使用原始的handleInstancedMeshModel方法
|
|
126122
126952
|
|
|
126123
126953
|
isDebug && performance.mark('handleInstancedMeshModel-start');
|
|
126124
126954
|
_context10.n = 1;
|
|
126125
|
-
return handleInstancedMeshModel(
|
|
126955
|
+
return handleInstancedMeshModel(_this55.modelGroup, batch.instances, batch.drawObjs, '', _this55.scene, loadingState.color, loadingState.meshNameConfig, '', loadingState.options);
|
|
126126
126956
|
case 1:
|
|
126127
126957
|
isDebug && performance.mark('handleInstancedMeshModel-end');
|
|
126128
126958
|
isDebug && performance.measure('handleInstancedMeshModel', 'handleInstancedMeshModel-start', 'handleInstancedMeshModel-end');
|
|
@@ -126136,7 +126966,7 @@ var isDebug = false || false === true;
|
|
|
126136
126966
|
* 完成批量加载
|
|
126137
126967
|
*/
|
|
126138
126968
|
completeBatchLoading: function completeBatchLoading() {
|
|
126139
|
-
var
|
|
126969
|
+
var _this56 = this;
|
|
126140
126970
|
var loadingState = this.noObserver ? this.noObserver.batchLoadingState : this.batchLoadingState;
|
|
126141
126971
|
if (!loadingState.isLoading) return;
|
|
126142
126972
|
if (!this.isBatchLoadingSceneReady()) {
|
|
@@ -126169,17 +126999,17 @@ var isDebug = false || false === true;
|
|
|
126169
126999
|
this.modelGroup.traverse(function (child) {
|
|
126170
127000
|
if (child.isMesh && !child.userData.batchInitDone) {
|
|
126171
127001
|
markRendered(child);
|
|
126172
|
-
var json =
|
|
126173
|
-
var meshBox3 = new
|
|
127002
|
+
var json = _this56.getMeshCenterAndVolume(child);
|
|
127003
|
+
var meshBox3 = new _this56.THREE.Box3();
|
|
126174
127004
|
meshBox3.setFromObject(child);
|
|
126175
|
-
var worldPs = new
|
|
127005
|
+
var worldPs = new _this56.THREE.Vector3().addVectors(meshBox3.max, meshBox3.min).multiplyScalar(0.5);
|
|
126176
127006
|
if (isNaN(worldPs.x)) return;
|
|
126177
|
-
child.worldDir = new
|
|
127007
|
+
child.worldDir = new _this56.THREE.Vector3().subVectors(worldPs, modelWorldPs).normalize();
|
|
126178
127008
|
child.userData.center = json.center;
|
|
126179
127009
|
child.userData.worldPs = worldPs;
|
|
126180
|
-
child.userData.oldPs = child.getWorldPosition(new
|
|
127010
|
+
child.userData.oldPs = child.getWorldPosition(new _this56.THREE.Vector3());
|
|
126181
127011
|
child.userData.box = json.box;
|
|
126182
|
-
child.userData.position = new
|
|
127012
|
+
child.userData.position = new _this56.THREE.Vector3().copy(child.position);
|
|
126183
127013
|
child.userData.translate = {
|
|
126184
127014
|
x: 0,
|
|
126185
127015
|
y: 0,
|
|
@@ -126271,7 +127101,7 @@ var isDebug = false || false === true;
|
|
|
126271
127101
|
* @param {Object} options - 配置项 { immediate: boolean }
|
|
126272
127102
|
*/
|
|
126273
127103
|
setSystemInterruption: function setSystemInterruption(active) {
|
|
126274
|
-
var
|
|
127104
|
+
var _this57 = this;
|
|
126275
127105
|
var reason = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'user_interaction';
|
|
126276
127106
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
126277
127107
|
var loadingState = this.noObserver ? this.noObserver.batchLoadingState : this.batchLoadingState;
|
|
@@ -126337,7 +127167,7 @@ var isDebug = false || false === true;
|
|
|
126337
127167
|
if (loadingState.interactionState.wheelTimeout) return;
|
|
126338
127168
|
|
|
126339
127169
|
// 2. 如果是 wheel 结束,但 this.userInteracting (this.camera) 还在进行,则不恢复
|
|
126340
|
-
if (reason === 'wheel' &&
|
|
127170
|
+
if (reason === 'wheel' && _this57.userInteracting) return;
|
|
126341
127171
|
|
|
126342
127172
|
// 3. 检查是否有强制跳过标记 (可能由其他逻辑触发)
|
|
126343
127173
|
// if (this.forceSkipRendering && reason !== 'user_interaction') return; // 视情况而定
|
|
@@ -126348,15 +127178,15 @@ var isDebug = false || false === true;
|
|
|
126348
127178
|
loadingState.pauseReason = '';
|
|
126349
127179
|
loadingState.interactionState.isInteracting = false;
|
|
126350
127180
|
loadingState.interactionState.interactionType = '';
|
|
126351
|
-
|
|
127181
|
+
_this57.forceSkipRendering = false;
|
|
126352
127182
|
|
|
126353
127183
|
// 恢复本地批量加载 (如果未完成)
|
|
126354
127184
|
if (loadingState.isLoading && loadingState.currentBatch < loadingState.totalBatches) {
|
|
126355
|
-
|
|
127185
|
+
_this57.loadNextBatch();
|
|
126356
127186
|
}
|
|
126357
127187
|
|
|
126358
127188
|
// 恢复 StreamLoader
|
|
126359
|
-
var streamLoader =
|
|
127189
|
+
var streamLoader = _this57.noObserver.streamLoader;
|
|
126360
127190
|
if (streamLoader && typeof streamLoader.handleControlEnd === 'function') {
|
|
126361
127191
|
// StreamLoader 内部通常有防抖或延迟,这里直接通知结束即可
|
|
126362
127192
|
streamLoader.handleControlEnd();
|
|
@@ -126409,7 +127239,7 @@ var isDebug = false || false === true;
|
|
|
126409
127239
|
* 滚轮交互结束的定时检测
|
|
126410
127240
|
*/
|
|
126411
127241
|
scheduleWheelInteractionEnd: function scheduleWheelInteractionEnd(event) {
|
|
126412
|
-
var
|
|
127242
|
+
var _this58 = this;
|
|
126413
127243
|
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
|
|
126414
127244
|
var loadingState = this.noObserver ? this.noObserver.batchLoadingState : this.batchLoadingState;
|
|
126415
127245
|
if (loadingState.interactionState.wheelTimeout) {
|
|
@@ -126417,8 +127247,8 @@ var isDebug = false || false === true;
|
|
|
126417
127247
|
loadingState.interactionState.wheelTimeout = null;
|
|
126418
127248
|
}
|
|
126419
127249
|
loadingState.interactionState.wheelTimeout = setTimeout(function () {
|
|
126420
|
-
|
|
126421
|
-
|
|
127250
|
+
_this58.$emit('wheelEnd', event);
|
|
127251
|
+
_this58.endInteraction('wheel', event, {
|
|
126422
127252
|
immediateResume: false
|
|
126423
127253
|
});
|
|
126424
127254
|
loadingState.interactionState.wheelTimeout = null;
|
|
@@ -126471,11 +127301,11 @@ var isDebug = false || false === true;
|
|
|
126471
127301
|
});
|
|
126472
127302
|
// CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=script&lang=js
|
|
126473
127303
|
/* harmony default export */ var components_com_graphicsvue_type_script_lang_js = (com_graphicsvue_type_script_lang_js);
|
|
126474
|
-
// EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=
|
|
126475
|
-
var
|
|
127304
|
+
// EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=7fad0c6c&prod&lang=scss&scoped=true
|
|
127305
|
+
var com_graphicsvue_type_style_index_0_id_7fad0c6c_prod_lang_scss_scoped_true = __webpack_require__("4edc");
|
|
126476
127306
|
|
|
126477
|
-
// EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=1&id=
|
|
126478
|
-
var
|
|
127307
|
+
// EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=1&id=7fad0c6c&prod&lang=css
|
|
127308
|
+
var com_graphicsvue_type_style_index_1_id_7fad0c6c_prod_lang_css = __webpack_require__("9f61");
|
|
126479
127309
|
|
|
126480
127310
|
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
|
|
126481
127311
|
/* globals __VUE_SSR_CONTEXT__ */
|
|
@@ -126587,17 +127417,17 @@ function normalizeComponent(
|
|
|
126587
127417
|
|
|
126588
127418
|
var component = normalizeComponent(
|
|
126589
127419
|
components_com_graphicsvue_type_script_lang_js,
|
|
126590
|
-
|
|
127420
|
+
com_graphicsvue_type_template_id_7fad0c6c_scoped_true_render,
|
|
126591
127421
|
staticRenderFns,
|
|
126592
127422
|
false,
|
|
126593
127423
|
null,
|
|
126594
|
-
"
|
|
127424
|
+
"7fad0c6c",
|
|
126595
127425
|
null
|
|
126596
127426
|
|
|
126597
127427
|
)
|
|
126598
127428
|
|
|
126599
127429
|
/* harmony default export */ var com_graphics = (component.exports);
|
|
126600
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
127430
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e203256c-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-flcanvas/index.vue?vue&type=template&id=b313ab6c&scoped=true
|
|
126601
127431
|
var com_flcanvasvue_type_template_id_b313ab6c_scoped_true_render = function render() {
|
|
126602
127432
|
var _vm = this,
|
|
126603
127433
|
_c = _vm._self._c;
|
|
@@ -130650,7 +131480,7 @@ var com_flcanvas_component = normalizeComponent(
|
|
|
130650
131480
|
)
|
|
130651
131481
|
|
|
130652
131482
|
/* harmony default export */ var com_flcanvas = (com_flcanvas_component.exports);
|
|
130653
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
131483
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e203256c-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/per-control.vue?vue&type=template&id=f547d5c6&scoped=true
|
|
130654
131484
|
var per_controlvue_type_template_id_f547d5c6_scoped_true_render = function render() {
|
|
130655
131485
|
var _vm = this,
|
|
130656
131486
|
_c = _vm._self._c;
|
|
@@ -130758,7 +131588,7 @@ var per_control_component = normalizeComponent(
|
|
|
130758
131588
|
)
|
|
130759
131589
|
|
|
130760
131590
|
/* harmony default export */ var per_control = (per_control_component.exports);
|
|
130761
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
131591
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e203256c-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/pid.vue?vue&type=template&id=2572c0e2&scoped=true
|
|
130762
131592
|
var pidvue_type_template_id_2572c0e2_scoped_true_render = function render() {
|
|
130763
131593
|
var _vm = this,
|
|
130764
131594
|
_c = _vm._self._c;
|
|
@@ -130805,7 +131635,7 @@ var browserify_default = /*#__PURE__*/__webpack_require__.n(browserify);
|
|
|
130805
131635
|
var html2canvas = __webpack_require__("c0e9");
|
|
130806
131636
|
var html2canvas_default = /*#__PURE__*/__webpack_require__.n(html2canvas);
|
|
130807
131637
|
|
|
130808
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
131638
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"e203256c-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/component/ann-tool.vue?vue&type=template&id=4b17bce0&scoped=true
|
|
130809
131639
|
var ann_toolvue_type_template_id_4b17bce0_scoped_true_render = function render() {
|
|
130810
131640
|
var _vm = this,
|
|
130811
131641
|
_c = _vm._self._c;
|