fl-web-component 1.1.10 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,6 +46,11 @@ Vue.use(FlWebComponent)
46
46
  欢迎贡献代码和问题反馈。
47
47
 
48
48
  ## 更新日志
49
+ - 2025-05-30 1.2.0
50
+ 1. 图纸模型新增点击、高亮、重置高亮等api
51
+ 2. 三维图形新增、获取中心点、计算实体大小等接口
52
+ - 2025-05-28 1.1.11
53
+ 1. 调整视椎体可视范围
49
54
  - 2025-05-27 1.1.10
50
55
  1. 支持更改模型透明度
51
56
  - 2025-05-26 1.1.9
@@ -3331,6 +3331,17 @@ Factory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNum
3331
3331
  Factory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);
3332
3332
  Factory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);
3333
3333
 
3334
+ /***/ }),
3335
+
3336
+ /***/ "46ca":
3337
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
3338
+
3339
+ "use strict";
3340
+ /* 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_07e32868_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("92c4");
3341
+ /* 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_07e32868_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_07e32868_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
3342
+ /* unused harmony reexport * */
3343
+
3344
+
3334
3345
  /***/ }),
3335
3346
 
3336
3347
  /***/ "4971":
@@ -6290,17 +6301,6 @@ function _typeof(o) {
6290
6301
  }
6291
6302
  module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
6292
6303
 
6293
- /***/ }),
6294
-
6295
- /***/ "7254":
6296
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
6297
-
6298
- "use strict";
6299
- /* 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_362c6e4a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b041");
6300
- /* 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_362c6e4a_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_362c6e4a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
6301
- /* unused harmony reexport * */
6302
-
6303
-
6304
6304
  /***/ }),
6305
6305
 
6306
6306
  /***/ "72ba":
@@ -22234,17 +22234,6 @@ Factory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {
22234
22234
  });
22235
22235
  Factory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);
22236
22236
 
22237
- /***/ }),
22238
-
22239
- /***/ "8e95":
22240
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
22241
-
22242
- "use strict";
22243
- /* 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_0a4da738_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f24d");
22244
- /* 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_0a4da738_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_0a4da738_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
22245
- /* unused harmony reexport * */
22246
-
22247
-
22248
22237
  /***/ }),
22249
22238
 
22250
22239
  /***/ "926b":
@@ -22297,6 +22286,13 @@ exports.HSL = HSL;
22297
22286
 
22298
22287
  /***/ }),
22299
22288
 
22289
+ /***/ "92c4":
22290
+ /***/ (function(module, exports, __webpack_require__) {
22291
+
22292
+ // extracted by mini-css-extract-plugin
22293
+
22294
+ /***/ }),
22295
+
22300
22296
  /***/ "9470":
22301
22297
  /***/ (function(module, exports, __webpack_require__) {
22302
22298
 
@@ -23535,21 +23531,25 @@ Factory_1.Factory.backCompat(Sprite, {
23535
23531
 
23536
23532
  /***/ }),
23537
23533
 
23538
- /***/ "af55":
23534
+ /***/ "a988":
23539
23535
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
23540
23536
 
23541
23537
  "use strict";
23542
- /* 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_pid_vue_vue_type_style_index_0_id_09d5c9d8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("bd9a");
23543
- /* 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_pid_vue_vue_type_style_index_0_id_09d5c9d8_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_pid_vue_vue_type_style_index_0_id_09d5c9d8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
23538
+ /* 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_4b99f9dc_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cfb3");
23539
+ /* 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_4b99f9dc_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_4b99f9dc_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
23544
23540
  /* unused harmony reexport * */
23545
23541
 
23546
23542
 
23547
23543
  /***/ }),
23548
23544
 
23549
- /***/ "b041":
23550
- /***/ (function(module, exports, __webpack_require__) {
23545
+ /***/ "af55":
23546
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
23547
+
23548
+ "use strict";
23549
+ /* 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_pid_vue_vue_type_style_index_0_id_09d5c9d8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("bd9a");
23550
+ /* 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_pid_vue_vue_type_style_index_0_id_09d5c9d8_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_pid_vue_vue_type_style_index_0_id_09d5c9d8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
23551
+ /* unused harmony reexport * */
23551
23552
 
23552
- // extracted by mini-css-extract-plugin
23553
23553
 
23554
23554
  /***/ }),
23555
23555
 
@@ -24961,6 +24961,13 @@ exports.Grayscale = Grayscale;
24961
24961
 
24962
24962
  /***/ }),
24963
24963
 
24964
+ /***/ "cfb3":
24965
+ /***/ (function(module, exports, __webpack_require__) {
24966
+
24967
+ // extracted by mini-css-extract-plugin
24968
+
24969
+ /***/ }),
24970
+
24964
24971
  /***/ "d488":
24965
24972
  /***/ (function(module, exports, __webpack_require__) {
24966
24973
 
@@ -28357,13 +28364,6 @@ exports.Factory = {
28357
28364
 
28358
28365
  /***/ }),
28359
28366
 
28360
- /***/ "f24d":
28361
- /***/ (function(module, exports, __webpack_require__) {
28362
-
28363
- // extracted by mini-css-extract-plugin
28364
-
28365
- /***/ }),
28366
-
28367
28367
  /***/ "f35c":
28368
28368
  /***/ (function(module, exports, __webpack_require__) {
28369
28369
 
@@ -29241,8 +29241,8 @@ if (typeof window !== 'undefined') {
29241
29241
  // Indicate to webpack that this file can be concatenated
29242
29242
  /* harmony default export */ var setPublicPath = (null);
29243
29243
 
29244
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2cfcd00a-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=362c6e4a&scoped=true
29245
- var com_graphicsvue_type_template_id_362c6e4a_scoped_true_render = function render() {
29244
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-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=07e32868&scoped=true
29245
+ var com_graphicsvue_type_template_id_07e32868_scoped_true_render = function render() {
29246
29246
  var _vm = this,
29247
29247
  _c = _vm._self._c;
29248
29248
  return _c('div', {
@@ -29253,7 +29253,7 @@ var com_graphicsvue_type_template_id_362c6e4a_scoped_true_render = function rend
29253
29253
  };
29254
29254
  var staticRenderFns = [];
29255
29255
 
29256
- // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=362c6e4a&scoped=true
29256
+ // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=07e32868&scoped=true
29257
29257
 
29258
29258
  // CONCATENATED MODULE: ./node_modules/camera-controls/dist/camera-controls.module.js
29259
29259
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
@@ -57208,7 +57208,7 @@ function parseData(input) {
57208
57208
  drawObjs: Array.from(drawObjMap.values()),
57209
57209
  instances: formatInstances
57210
57210
  };
57211
- console.log('parseData', map);
57211
+ // console.log('parseData', map);
57212
57212
  return map;
57213
57213
  }
57214
57214
 
@@ -59486,8 +59486,8 @@ function handleInstancedMeshModel(instances, drawObjs, type, scene, customColor,
59486
59486
  for (var _i = 0; _i < instances.length; _i++) {
59487
59487
  _loop(_i);
59488
59488
  }
59489
- console.log('modelGroup', modelGroup);
59490
- console.log('drawObjMapInstance', drawObjMapInstance);
59489
+ // console.log('modelGroup', modelGroup);
59490
+ // console.log('drawObjMapInstance', drawObjMapInstance);
59491
59491
  return modelGroup;
59492
59492
  // timeRender();
59493
59493
  // console.log('scene', scene)
@@ -61069,11 +61069,32 @@ var guiParams = {
61069
61069
  this.initControl();
61070
61070
  this.initLight();
61071
61071
  this.initLabelRender();
61072
- com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mouseup', this.mouseClick, false);
61073
- com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mousedown', this.mouseDown, false);
61072
+ // 判断是设备是手机还是电脑
61073
+ var isMobileDevice = this.isMobileDevice();
61074
+ if (isMobileDevice) {
61075
+ com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('pointerup', this.mouseClick, false);
61076
+ com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('pointerdown', this.mouseDown, false);
61077
+ } else {
61078
+ com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mouseup', this.mouseClick, false);
61079
+ com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mousedown', this.mouseDown, false);
61080
+ }
61074
61081
  this.animate();
61075
61082
  },
61076
61083
  methods: {
61084
+ // 判断是设备是手机还是电脑
61085
+ isMobileDevice: function isMobileDevice() {
61086
+ var userAgent = navigator.userAgent || navigator.vendor || window.opera;
61087
+ if (/windows phone/i.test(userAgent)) {
61088
+ return true;
61089
+ }
61090
+ if (/android/i.test(userAgent)) {
61091
+ return true;
61092
+ }
61093
+ if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
61094
+ return true;
61095
+ }
61096
+ return false;
61097
+ },
61077
61098
  initRender: function initRender() {
61078
61099
  com_graphicsvue_type_script_lang_js_renderer = new this.THREE.WebGLRenderer({
61079
61100
  antialias: true,
@@ -61098,7 +61119,7 @@ var guiParams = {
61098
61119
  com_graphicsvue_type_script_lang_js_scene = new this.THREE.Scene();
61099
61120
  },
61100
61121
  initCamera: function initCamera() {
61101
- com_graphicsvue_type_script_lang_js_camera = new this.THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000);
61122
+ com_graphicsvue_type_script_lang_js_camera = new this.THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 100000);
61102
61123
  com_graphicsvue_type_script_lang_js_camera.position.set(0, 100, 150);
61103
61124
  },
61104
61125
  initControl: function initControl() {
@@ -61349,8 +61370,6 @@ var guiParams = {
61349
61370
  });
61350
61371
  break;
61351
61372
  case 'opacity':
61352
- // obj.material.opacity = ele.attr[key];
61353
- // obj.material.transparent = true;
61354
61373
  targetObj.forEach(function (children) {
61355
61374
  if (children.isMesh) {
61356
61375
  var opacity = children.geometry.attributes.opacity.array;
@@ -61440,7 +61459,6 @@ var guiParams = {
61440
61459
  } else if (obj.isMesh) {
61441
61460
  this.setModelCenter(obj.parent);
61442
61461
  }
61443
- // cameraControls.fitToBox( obj, true);
61444
61462
  }
61445
61463
  },
61446
61464
  // 根据自定义参数修改模型
@@ -62264,6 +62282,24 @@ var guiParams = {
62264
62282
  }
62265
62283
  scenePass = null;
62266
62284
  },
62285
+ // 获取中心点
62286
+ getCenter: function getCenter(obj) {
62287
+ console.log(obj);
62288
+ var center = new this.THREE.Vector3();
62289
+ obj.boundingBox.getCenter(center);
62290
+ var mat4 = new this.THREE.Matrix4();
62291
+ mat4.makeRotationX(-Math.PI / 2);
62292
+ center.applyMatrix4(mat4);
62293
+ return center;
62294
+ },
62295
+ getSize: function getSize(obj) {
62296
+ var size = new this.THREE.Vector3();
62297
+ obj.boundingBox.getSize(size);
62298
+ var mat4 = new this.THREE.Matrix4();
62299
+ mat4.makeRotationX(-Math.PI / 2);
62300
+ size.applyMatrix4(mat4);
62301
+ return size;
62302
+ },
62267
62303
  animate: function animate() {
62268
62304
  var delta = fpsClock.getDelta();
62269
62305
  timeStamp += delta;
@@ -62291,8 +62327,8 @@ var guiParams = {
62291
62327
  });
62292
62328
  // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=script&lang=js
62293
62329
  /* harmony default export */ var components_com_graphicsvue_type_script_lang_js = (com_graphicsvue_type_script_lang_js);
62294
- // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=362c6e4a&prod&lang=scss&scoped=true
62295
- var com_graphicsvue_type_style_index_0_id_362c6e4a_prod_lang_scss_scoped_true = __webpack_require__("7254");
62330
+ // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=07e32868&prod&lang=scss&scoped=true
62331
+ var com_graphicsvue_type_style_index_0_id_07e32868_prod_lang_scss_scoped_true = __webpack_require__("46ca");
62296
62332
 
62297
62333
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
62298
62334
  /* globals __VUE_SSR_CONTEXT__ */
@@ -62403,18 +62439,18 @@ function normalizeComponent(
62403
62439
 
62404
62440
  var component = normalizeComponent(
62405
62441
  components_com_graphicsvue_type_script_lang_js,
62406
- com_graphicsvue_type_template_id_362c6e4a_scoped_true_render,
62442
+ com_graphicsvue_type_template_id_07e32868_scoped_true_render,
62407
62443
  staticRenderFns,
62408
62444
  false,
62409
62445
  null,
62410
- "362c6e4a",
62446
+ "07e32868",
62411
62447
  null
62412
62448
 
62413
62449
  )
62414
62450
 
62415
62451
  /* harmony default export */ var com_graphics = (component.exports);
62416
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2cfcd00a-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=0a4da738&scoped=true
62417
- var com_flcanvasvue_type_template_id_0a4da738_scoped_true_render = function render() {
62452
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-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=4b99f9dc&scoped=true
62453
+ var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render = function render() {
62418
62454
  var _vm = this,
62419
62455
  _c = _vm._self._c;
62420
62456
  return _c('div', {
@@ -62427,9 +62463,9 @@ var com_flcanvasvue_type_template_id_0a4da738_scoped_true_render = function rend
62427
62463
  }
62428
62464
  });
62429
62465
  };
62430
- var com_flcanvasvue_type_template_id_0a4da738_scoped_true_staticRenderFns = [];
62466
+ var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_staticRenderFns = [];
62431
62467
 
62432
- // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=template&id=0a4da738&scoped=true
62468
+ // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=template&id=4b99f9dc&scoped=true
62433
62469
 
62434
62470
  // EXTERNAL MODULE: ./node_modules/konva/lib/index.js
62435
62471
  var lib = __webpack_require__("362d");
@@ -64793,7 +64829,7 @@ function getColors() {
64793
64829
  return colors;
64794
64830
  }
64795
64831
  // 居中定位
64796
- function centering(obj, container, konvaStage, scaleBy) {
64832
+ function entityFormatting_centering(obj, container, konvaStage, scaleBy) {
64797
64833
  // 由于图纸结构解析的变更 可能最外层的group x y 都是0所以 需要拿到x y有值的group
64798
64834
  var filterGroup = obj.filter(function (item) {
64799
64835
  return item.attrs.isGroup && !item.attrs.isMix;
@@ -65002,7 +65038,7 @@ function drawLine(recordDxf, entity, group, key, configParams) {
65002
65038
  entityId: key,
65003
65039
  isGroup: false,
65004
65040
  stroke: configParams ? configParams.color : "#000",
65005
- customColor: configParams ? configParams.color : "",
65041
+ customColor: configParams ? configParams.color : "#000",
65006
65042
  strokeWidth: width,
65007
65043
  visible: configParams ? configParams.visible : true,
65008
65044
  oldstrokeLength: width
@@ -65046,7 +65082,7 @@ function entityFormatting_drawText(recordDxf, entity, group, key, configParams)
65046
65082
  text: text,
65047
65083
  fontSize: fontSize,
65048
65084
  fill: configParams ? configParams.color : "#000",
65049
- customColor: configParams ? configParams.color : "",
65085
+ customColor: configParams ? configParams.color : "#000",
65050
65086
  name: key.replace(/\s*/g, ""),
65051
65087
  entityId: key,
65052
65088
  fontFamily: "SimSun",
@@ -65100,7 +65136,7 @@ function drawLwLine(recordDxf, entity, group, key, configParams) {
65100
65136
  name: key.replace(/\s*/g, ""),
65101
65137
  entityId: key,
65102
65138
  stroke: configParams ? configParams.color : "#000",
65103
- customColor: configParams ? configParams.color : "",
65139
+ customColor: configParams ? configParams.color : "#000",
65104
65140
  strokeWidth: width,
65105
65141
  visible: configParams ? configParams.visible : true,
65106
65142
  oldstrokeLength: width
@@ -65136,7 +65172,7 @@ function drawSpline(recordDxf, entity, group, key, configParams) {
65136
65172
  entityId: key,
65137
65173
  isGroup: false,
65138
65174
  stroke: configParams ? configParams : "#000",
65139
- customColor: configParams ? configParams.color : "",
65175
+ customColor: configParams ? configParams.color : "#000",
65140
65176
  strokeWidth: width,
65141
65177
  visible: configParams ? configParams.visible : true,
65142
65178
  oldstrokeLength: width
@@ -65212,6 +65248,8 @@ function drawInsert(recordDxf, entities, group, key, configParams, konvaLayer) {
65212
65248
  }
65213
65249
  }
65214
65250
  // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./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=script&lang=js
65251
+ var inspectionRect = null;
65252
+ var preTarget = [];
65215
65253
  function base64ToBlob(base64) {
65216
65254
  var byteCharacters = atob(base64);
65217
65255
  var byteArrays = [];
@@ -65248,7 +65286,6 @@ function downloadPDF(base64, fileName) {
65248
65286
 
65249
65287
  var konvaStage = null,
65250
65288
  konvaLayer = null;
65251
- var recordLayerConfig = {};
65252
65289
  /* harmony default export */ var com_flcanvasvue_type_script_lang_js = ({
65253
65290
  name: 'Fl2dcanvas',
65254
65291
  components: {},
@@ -65259,6 +65296,7 @@ var recordLayerConfig = {};
65259
65296
  var _this = this;
65260
65297
  //resize方法
65261
65298
  window.addEventListener('resize', function () {
65299
+ console.log('resize');
65262
65300
  if (konvaStage) {
65263
65301
  var obj = document.getElementById('konva-container');
65264
65302
  konvaStage.setWidth(obj.clientWidth);
@@ -65289,7 +65327,6 @@ var recordLayerConfig = {};
65289
65327
  var scaleBy = 1.5;
65290
65328
  //初始化缩放方法
65291
65329
  konvaStage.on('wheel', function (e) {
65292
- console.log(e);
65293
65330
  e.evt.preventDefault();
65294
65331
  var oldScale = konvaStage.scaleX();
65295
65332
  var pointer = konvaStage.getPointerPosition();
@@ -65317,6 +65354,28 @@ var recordLayerConfig = {};
65317
65354
  };
65318
65355
  konvaStage.position(newPos);
65319
65356
  });
65357
+ // 点击事件
65358
+ konvaStage.on('click', function (e) {
65359
+ var clickObj = null;
65360
+ var position = konvaStage.getPointerPosition();
65361
+ var x = (position.x - konvaStage.getX()) / konvaStage.scaleX();
65362
+ var y = (position.y - konvaStage.getY()) / konvaStage.scaleY();
65363
+ inspectionRect.setX(x);
65364
+ inspectionRect.setY(y);
65365
+ position = null;
65366
+ if (e.target.attrs.hasOwnProperty("className") && e.target.attrs.className === "stage") {
65367
+ var obj = _this.getIntersects(inspectionRect.getClientRect());
65368
+ console.log(obj);
65369
+ clickObj = obj.length > 0 ? obj[obj.length - 1] : null;
65370
+ } else {
65371
+ clickObj = e.target.attrs;
65372
+ }
65373
+ if (e.evt.button === 0) {
65374
+ _this.$emit('leftClick', clickObj);
65375
+ } else if (e.evt.button === 2) {
65376
+ _this.$emit('rightClick', clickObj);
65377
+ }
65378
+ });
65320
65379
  });
65321
65380
 
65322
65381
  //create方法结束
@@ -65325,25 +65384,40 @@ var recordLayerConfig = {};
65325
65384
 
65326
65385
  methods: {
65327
65386
  loadDxf: function loadDxf(data) {
65328
- console.log('ok');
65387
+ var layerConfigs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
65388
+ konvaLayer.destroyChildren();
65389
+ konvaStage.scale({
65390
+ x: 1,
65391
+ y: 1
65392
+ });
65393
+ konvaStage.setX(0);
65394
+ konvaStage.setY(0);
65395
+ inspectionRect = null;
65396
+ inspectionRect = new lib_default.a.Rect({
65397
+ width: 1.5,
65398
+ height: 1.5,
65399
+ x: 0,
65400
+ y: 0,
65401
+ stroke: "#000",
65402
+ strokeWidth: 0.2,
65403
+ name: "intersect-rect",
65404
+ visible: false,
65405
+ opacity: 0
65406
+ });
65407
+ konvaLayer.add(inspectionRect);
65329
65408
  var parser = new dxf_parser_dist();
65330
65409
  var dxf = parser.parse(data);
65331
65410
  var entities = formatEntity(dxf.entities);
65332
- console.log(entities);
65333
65411
  var layers = dxf.tables.layer.layers;
65334
- //加载图纸
65335
-
65336
- console.log('layers');
65337
- console.log(layers);
65338
65412
  var _loop = function _loop() {
65339
65413
  if (entities[key]) {
65340
65414
  var group = [];
65341
65415
  var l = entities[key].length;
65342
- var layerConfig = recordLayerConfig[key];
65416
+ var layerConfig = layerConfigs[key];
65343
65417
  var configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null;
65344
65418
  for (var i = 0; i < l; i++) {
65345
65419
  var type = entities[key][i].type;
65346
- handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig);
65420
+ handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, layerConfigs);
65347
65421
  }
65348
65422
  if (!konvaLayer) return {
65349
65423
  v: void 0
@@ -65361,7 +65435,7 @@ var recordLayerConfig = {};
65361
65435
  name: key.replace(/\s*/g, ''),
65362
65436
  entityId: key,
65363
65437
  stroke: configParams ? configParams.color : '#000',
65364
- customColor: configParams ? configParams.color : '',
65438
+ customColor: configParams ? configParams.color : '#000',
65365
65439
  visible: configParams ? configParams.visible : true,
65366
65440
  sceneFunc: function sceneFunc(context, shape) {
65367
65441
  context.beginPath();
@@ -65420,21 +65494,22 @@ var recordLayerConfig = {};
65420
65494
  scale = Number((boundingRect.width / boundingRect.height).toFixed(1));
65421
65495
  scale = scale < 2 ? 2 : scale;
65422
65496
  }
65423
- /*
65424
- konvaStage.scale({
65425
- x: scale,
65426
- y: scale,
65427
- })*/
65497
+ konvaStage.scale({
65498
+ x: scale,
65499
+ y: scale
65500
+ });
65428
65501
  var boundingScale = konvaLayer.getClientRect();
65429
65502
  //平移视口
65430
65503
  var x = this.$refs.svgDraw.clientWidth / 2 - (Math.ceil(boundingScale.width) / 2 + boundingScale.x / 2);
65431
65504
  var y = this.$refs.svgDraw.clientHeight / 2 - (Math.ceil(boundingScale.height) / 2 + boundingScale.y);
65432
- konvaStage.scale({
65433
- x: 2,
65434
- y: 2
65435
- });
65436
- // konvaStage.setX(x);
65437
- konvaStage.setY(750);
65505
+
65506
+ // konvaStage.scale({
65507
+ // x: 2,
65508
+ // y: 2,
65509
+ // });
65510
+ konvaStage.setX(x);
65511
+ konvaStage.setY(y); // 750
65512
+ this.$emit('loaded');
65438
65513
  },
65439
65514
  toPdf: function toPdf(name) {
65440
65515
  // get data URL with default settings
@@ -65467,6 +65542,69 @@ var recordLayerConfig = {};
65467
65542
  konvaLayer = null;
65468
65543
  konvaStage = null;
65469
65544
  },
65545
+ getIntersects: function getIntersects(rect) {
65546
+ var l = konvaLayer.children.length;
65547
+ var intersects = [];
65548
+ for (var index = 0; index < l; index++) {
65549
+ var ele = konvaLayer.children[index];
65550
+ if (ele.attrs.name !== "intersect-rect") {
65551
+ var boundingRect = ele.getClientRect();
65552
+ if (!(rect.x + rect.width < boundingRect.x || boundingRect.x + boundingRect.width < rect.x || rect.y + rect.height < boundingRect.y || boundingRect.y + boundingRect.height < rect.y)) {
65553
+ intersects.push(ele);
65554
+ }
65555
+ }
65556
+ }
65557
+ return intersects;
65558
+ },
65559
+ // 参数说明arr数组,每个元素为一个对象,对象包含id, color属性
65560
+ highLight: function highLight(arr) {
65561
+ for (var index = 0; index < arr.length; index++) {
65562
+ var element = arr[index];
65563
+ var name = element.id.replace(/\s*/g, "");
65564
+ var obj = konvaStage.find("." + name);
65565
+ if (obj.length > 0) {
65566
+ var lists = obj.filter(function (item) {
65567
+ return !item.attrs.isGroup;
65568
+ });
65569
+ for (var i = 0; i < lists.length; i++) {
65570
+ preTarget.push(lists[i]);
65571
+ var ele = lists[i];
65572
+ if (ele.className === "Text") {
65573
+ ele.setFill(element.color);
65574
+ ele.setStroke(element.color);
65575
+ } else {
65576
+ ele.setStroke(element.color);
65577
+ }
65578
+ }
65579
+ }
65580
+ }
65581
+ },
65582
+ resetHighLight: function resetHighLight() {
65583
+ for (var index = 0; index < preTarget.length; index++) {
65584
+ var element = preTarget[index];
65585
+ if (element.className === "Text") {
65586
+ element.setFill(element.attrs.customColor);
65587
+ element.setStroke(element.attrs.customColor);
65588
+ } else {
65589
+ element.setStroke(element.attrs.customColor);
65590
+ }
65591
+ }
65592
+ preTarget.splice(0);
65593
+ },
65594
+ // 居中定位
65595
+ centering: function centering(id) {
65596
+ var entityId = id.replace(/\s*/g, "");
65597
+ var obj = konvaStage.find("." + entityId);
65598
+ var scaleBy = 8;
65599
+ if (obj.length > 0) {
65600
+ konvaStage.scale({
65601
+ x: scaleBy,
65602
+ y: scaleBy
65603
+ });
65604
+ entityFormatting_centering(obj, this.$refs.svgDraw, konvaStage, scaleBy);
65605
+ obj = null;
65606
+ }
65607
+ },
65470
65608
  beforeDestroy: function beforeDestroy() {
65471
65609
  this.clearCache();
65472
65610
  }
@@ -65474,8 +65612,8 @@ var recordLayerConfig = {};
65474
65612
  });
65475
65613
  // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=script&lang=js
65476
65614
  /* harmony default export */ var components_com_flcanvasvue_type_script_lang_js = (com_flcanvasvue_type_script_lang_js);
65477
- // EXTERNAL MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=style&index=0&id=0a4da738&prod&lang=scss&scoped=true
65478
- var com_flcanvasvue_type_style_index_0_id_0a4da738_prod_lang_scss_scoped_true = __webpack_require__("8e95");
65615
+ // EXTERNAL MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=style&index=0&id=4b99f9dc&prod&lang=scss&scoped=true
65616
+ var com_flcanvasvue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true = __webpack_require__("a988");
65479
65617
 
65480
65618
  // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue
65481
65619
 
@@ -65488,17 +65626,17 @@ var com_flcanvasvue_type_style_index_0_id_0a4da738_prod_lang_scss_scoped_true =
65488
65626
 
65489
65627
  var com_flcanvas_component = normalizeComponent(
65490
65628
  components_com_flcanvasvue_type_script_lang_js,
65491
- com_flcanvasvue_type_template_id_0a4da738_scoped_true_render,
65492
- com_flcanvasvue_type_template_id_0a4da738_scoped_true_staticRenderFns,
65629
+ com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render,
65630
+ com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_staticRenderFns,
65493
65631
  false,
65494
65632
  null,
65495
- "0a4da738",
65633
+ "4b99f9dc",
65496
65634
  null
65497
65635
 
65498
65636
  )
65499
65637
 
65500
65638
  /* harmony default export */ var com_flcanvas = (com_flcanvas_component.exports);
65501
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2cfcd00a-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
65639
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-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
65502
65640
  var per_controlvue_type_template_id_f547d5c6_scoped_true_render = function render() {
65503
65641
  var _vm = this,
65504
65642
  _c = _vm._self._c;
@@ -65606,7 +65744,7 @@ var per_control_component = normalizeComponent(
65606
65744
  )
65607
65745
 
65608
65746
  /* harmony default export */ var per_control = (per_control_component.exports);
65609
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2cfcd00a-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=09d5c9d8&scoped=true
65747
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-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=09d5c9d8&scoped=true
65610
65748
  var pidvue_type_template_id_09d5c9d8_scoped_true_render = function render() {
65611
65749
  var _vm = this,
65612
65750
  _c = _vm._self._c;
@@ -65635,7 +65773,7 @@ var preTargetCon = [],
65635
65773
  preTargetStyle = [];
65636
65774
  var pidvue_type_script_lang_js_firstTime = 0,
65637
65775
  pidvue_type_script_lang_js_lastTime = 0;
65638
- var inspectionRect = null,
65776
+ var pidvue_type_script_lang_js_inspectionRect = null,
65639
65777
  pointerRect = null;
65640
65778
  /* harmony default export */ var pidvue_type_script_lang_js = ({
65641
65779
  name: 'FlSvg',
@@ -65676,9 +65814,9 @@ var inspectionRect = null,
65676
65814
  svgCon = svgEmbed.getSVGDocument().querySelector('svg');
65677
65815
  svgCon.style = 'cursor: pointer;user-select: none;';
65678
65816
  svgCon.setAttribute('viewBox', '0 0 ' + svgEmbed.offsetWidth + ' ' + svgEmbed.offsetHeight);
65679
- inspectionRect = svgCon.createSVGRect();
65680
- inspectionRect.width = 10;
65681
- inspectionRect.height = 10;
65817
+ pidvue_type_script_lang_js_inspectionRect = svgCon.createSVGRect();
65818
+ pidvue_type_script_lang_js_inspectionRect.width = 10;
65819
+ pidvue_type_script_lang_js_inspectionRect.height = 10;
65682
65820
  pointerRect = svgCon.createSVGPoint();
65683
65821
  _this.onWindowResize();
65684
65822
  // 禁止右键菜单栏
@@ -65719,9 +65857,9 @@ var inspectionRect = null,
65719
65857
  pointerRect.x = evt.clientX;
65720
65858
  pointerRect.y = evt.clientY;
65721
65859
  var tp = pointerRect.matrixTransform(svgCon.getScreenCTM());
65722
- inspectionRect.x = tp.x;
65723
- inspectionRect.y = tp.y;
65724
- var intersectionList = svgCon.getIntersectionList(inspectionRect, null);
65860
+ pidvue_type_script_lang_js_inspectionRect.x = tp.x;
65861
+ pidvue_type_script_lang_js_inspectionRect.y = tp.y;
65862
+ var intersectionList = svgCon.getIntersectionList(pidvue_type_script_lang_js_inspectionRect, null);
65725
65863
  targetElement = intersectionList.length > 0 ? intersectionList[intersectionList.length - 1] : null;
65726
65864
  }
65727
65865
  if (evt.button === 0) {
@@ -65796,7 +65934,7 @@ var inspectionRect = null,
65796
65934
  this.$set(this, 'currentSvg', url);
65797
65935
  preTargetCon.splice(0);
65798
65936
  preTargetStyle.splice(0);
65799
- inspectionRect = null;
65937
+ pidvue_type_script_lang_js_inspectionRect = null;
65800
65938
  pointerRect = null;
65801
65939
  }
65802
65940
  }
@@ -1 +1 @@
1
- @charset "UTF-8";#fl-model[data-v-362c6e4a],#konva-container[data-v-0a4da738]{width:100%;height:100%;cursor:pointer}#konva-container[data-v-0a4da738]{z-index:3;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:flex;flex-direction:column;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:flex;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}#svg-tigger[data-v-09d5c9d8]{cursor:pointer;height:100%;width:100%}
1
+ @charset "UTF-8";#fl-model[data-v-07e32868],#konva-container[data-v-4b99f9dc]{width:100%;height:100%;cursor:pointer}#konva-container[data-v-4b99f9dc]{z-index:3;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:flex;flex-direction:column;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:flex;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}#svg-tigger[data-v-09d5c9d8]{cursor:pointer;height:100%;width:100%}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fl-web-component",
3
- "version": "1.1.10",
3
+ "version": "1.2.0",
4
4
  "scripts": {
5
5
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
6
6
  "dev": "vue-cli-service serve",
@@ -290,7 +290,7 @@ function drawLine(recordDxf, entity, group, key, configParams) {
290
290
  entityId: key,
291
291
  isGroup: false,
292
292
  stroke: configParams ? configParams.color : "#000",
293
- customColor: configParams ? configParams.color : "",
293
+ customColor: configParams ? configParams.color : "#000",
294
294
  strokeWidth: width,
295
295
  visible: configParams ? configParams.visible : true,
296
296
  oldstrokeLength:width,
@@ -334,7 +334,7 @@ function drawText(recordDxf, entity, group, key, configParams) {
334
334
  text: text,
335
335
  fontSize: fontSize,
336
336
  fill: configParams ? configParams.color : "#000",
337
- customColor: configParams ? configParams.color : "",
337
+ customColor: configParams ? configParams.color : "#000",
338
338
  name: key.replace(/\s*/g, ""),
339
339
  entityId: key,
340
340
  fontFamily: "SimSun",
@@ -393,7 +393,7 @@ function drawLwLine(recordDxf, entity, group, key, configParams) {
393
393
  name: key.replace(/\s*/g, ""),
394
394
  entityId: key,
395
395
  stroke: configParams ? configParams.color : "#000",
396
- customColor: configParams ? configParams.color : "",
396
+ customColor: configParams ? configParams.color : "#000",
397
397
  strokeWidth: width,
398
398
  visible: configParams ? configParams.visible : true,
399
399
  oldstrokeLength:width,
@@ -434,7 +434,7 @@ function drawSpline(recordDxf, entity, group, key, configParams) {
434
434
  entityId: key,
435
435
  isGroup: false,
436
436
  stroke: configParams ? configParams : "#000",
437
- customColor: configParams ? configParams.color : "",
437
+ customColor: configParams ? configParams.color : "#000",
438
438
  strokeWidth: width,
439
439
  visible: configParams ? configParams.visible : true,
440
440
  oldstrokeLength: width
@@ -3,6 +3,8 @@
3
3
  </template>
4
4
 
5
5
  <script>
6
+ var inspectionRect = null;
7
+ var preTarget = [];
6
8
  function base64ToBlob(base64) {
7
9
  const byteCharacters = atob(base64);
8
10
  const byteArrays = [];
@@ -40,7 +42,6 @@
40
42
  import { formatEntity, handleFn, centering } from './components/entityFormatting';
41
43
  var konvaStage = null,
42
44
  konvaLayer = null;
43
- var recordLayerConfig = {};
44
45
  export default {
45
46
  name: 'Fl2dcanvas',
46
47
  components: {},
@@ -50,6 +51,7 @@
50
51
  mounted() {
51
52
  //resize方法
52
53
  window.addEventListener('resize', () => {
54
+ console.log('resize');
53
55
  if (konvaStage) {
54
56
  const obj = document.getElementById('konva-container');
55
57
  konvaStage.setWidth(obj.clientWidth);
@@ -81,7 +83,6 @@
81
83
  var scaleBy = 1.5;
82
84
  //初始化缩放方法
83
85
  konvaStage.on('wheel', e => {
84
- console.log(e);
85
86
  e.evt.preventDefault();
86
87
  var oldScale = konvaStage.scaleX();
87
88
  var pointer = konvaStage.getPointerPosition();
@@ -106,6 +107,31 @@
106
107
  };
107
108
  konvaStage.position(newPos);
108
109
  });
110
+ // 点击事件
111
+ konvaStage.on('click', e => {
112
+ let clickObj = null;
113
+ let position = konvaStage.getPointerPosition();
114
+ let x = (position.x- konvaStage.getX()) / konvaStage.scaleX();
115
+ let y = (position.y- konvaStage.getY()) / konvaStage.scaleY();
116
+ inspectionRect.setX(x);
117
+ inspectionRect.setY(y);
118
+ position = null;
119
+ if (
120
+ e.target.attrs.hasOwnProperty("className") &&
121
+ e.target.attrs.className === "stage"
122
+ ) {
123
+ let obj = this.getIntersects(inspectionRect.getClientRect());
124
+ console.log(obj);
125
+ clickObj = obj.length > 0 ? obj[obj.length - 1] : null;
126
+ } else {
127
+ clickObj = e.target.attrs;
128
+ }
129
+ if (e.evt.button === 0) {
130
+ this.$emit('leftClick', clickObj);
131
+ } else if (e.evt.button === 2) {
132
+ this.$emit('rightClick', clickObj);
133
+ }
134
+ });
109
135
  });
110
136
 
111
137
  //create方法结束
@@ -113,26 +139,37 @@
113
139
  //销毁方法
114
140
 
115
141
  methods: {
116
- loadDxf(data) {
117
- console.log('ok');
118
-
142
+ loadDxf(data, layerConfigs = {}) {
143
+ konvaLayer.destroyChildren();
144
+ konvaStage.scale({
145
+ x: 1,
146
+ y: 1,
147
+ });
148
+ konvaStage.setX(0);
149
+ konvaStage.setY(0);
150
+ inspectionRect = null;
151
+ inspectionRect = new Konva.Rect({
152
+ width: 1.5,
153
+ height: 1.5,
154
+ x: 0,
155
+ y: 0,
156
+ stroke: "#000",
157
+ strokeWidth: 0.2,
158
+ name: "intersect-rect",
159
+ visible: false,
160
+ opacity: 0
161
+ });
162
+ konvaLayer.add(inspectionRect);
119
163
  const parser = new DxfParser();
120
164
  let dxf = parser.parse(data);
121
165
  let entities = formatEntity(dxf.entities);
122
-
123
- console.log(entities);
124
-
125
166
  let layers = dxf.tables.layer.layers;
126
- //加载图纸
127
-
128
- console.log('layers');
129
- console.log(layers);
130
167
 
131
168
  for (let key in layers) {
132
169
  if (entities[key]) {
133
170
  let group = [];
134
171
  let l = entities[key].length;
135
- let layerConfig = recordLayerConfig[key];
172
+ let layerConfig = layerConfigs[key];
136
173
  let configParams =
137
174
  layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null;
138
175
  for (let i = 0; i < l; i++) {
@@ -145,7 +182,7 @@
145
182
  key,
146
183
  configParams,
147
184
  konvaLayer,
148
- recordLayerConfig
185
+ layerConfigs
149
186
  );
150
187
  }
151
188
  if (!konvaLayer) return;
@@ -163,7 +200,7 @@
163
200
  name: key.replace(/\s*/g, ''),
164
201
  entityId: key,
165
202
  stroke: configParams ? configParams.color : '#000',
166
- customColor: configParams ? configParams.color : '',
203
+ customColor: configParams ? configParams.color : '#000',
167
204
  visible: configParams ? configParams.visible : true,
168
205
  sceneFunc(context, shape) {
169
206
  context.beginPath();
@@ -221,11 +258,10 @@
221
258
  scale = Number((boundingRect.width / boundingRect.height).toFixed(1));
222
259
  scale = scale < 2 ? 2 : scale;
223
260
  }
224
- /*
225
- konvaStage.scale({
226
- x: scale,
227
- y: scale,
228
- })*/
261
+ konvaStage.scale({
262
+ x: scale,
263
+ y: scale,
264
+ })
229
265
  const boundingScale = konvaLayer.getClientRect();
230
266
  //平移视口
231
267
  const x =
@@ -235,12 +271,13 @@
235
271
  this.$refs.svgDraw.clientHeight / 2 -
236
272
  (Math.ceil(boundingScale.height) / 2 + boundingScale.y);
237
273
 
238
- konvaStage.scale({
239
- x: 2,
240
- y: 2,
241
- });
242
- // konvaStage.setX(x);
243
- konvaStage.setY(750);
274
+ // konvaStage.scale({
275
+ // x: 2,
276
+ // y: 2,
277
+ // });
278
+ konvaStage.setX(x);
279
+ konvaStage.setY(y); // 750
280
+ this.$emit('loaded')
244
281
  },
245
282
  toPdf(name) {
246
283
  // get data URL with default settings
@@ -282,6 +319,72 @@
282
319
  konvaLayer = null;
283
320
  konvaStage = null;
284
321
  },
322
+ getIntersects(rect) {
323
+ let l = konvaLayer.children.length;
324
+ let intersects = [];
325
+ for (let index = 0; index < l; index++) {
326
+ const ele = konvaLayer.children[index];
327
+ if (ele.attrs.name !== "intersect-rect") {
328
+ const boundingRect = ele.getClientRect();
329
+ if (
330
+ !(
331
+ rect.x + rect.width < boundingRect.x ||
332
+ boundingRect.x + boundingRect.width < rect.x ||
333
+ rect.y + rect.height < boundingRect.y ||
334
+ boundingRect.y + boundingRect.height < rect.y
335
+ )
336
+ ) {
337
+
338
+ intersects.push(ele);
339
+ }
340
+ }
341
+ }
342
+ return intersects;
343
+ },
344
+ // 参数说明arr数组,每个元素为一个对象,对象包含id, color属性
345
+ highLight(arr) {
346
+ for (let index = 0; index < arr.length; index++) {
347
+ const element = arr[index];
348
+ let name = element.id.replace(/\s*/g, "")
349
+ let obj = konvaStage.find("." + name)
350
+ if (obj.length > 0) {
351
+ let lists = obj.filter((item) => !item.attrs.isGroup);
352
+ for (let i = 0; i < lists.length; i++) {
353
+ preTarget.push(lists[i]);
354
+ const ele = lists[i];
355
+ if (ele.className === "Text") {
356
+ ele.setFill(element.color);
357
+ ele.setStroke(element.color)
358
+ } else {
359
+ ele.setStroke(element.color);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ },
365
+ resetHighLight() {
366
+ for (let index = 0; index < preTarget.length; index++) {
367
+ const element = preTarget[index];
368
+ if (element.className === "Text") {
369
+ element.setFill(element.attrs.customColor);
370
+ element.setStroke(element.attrs.customColor)
371
+ } else {
372
+ element.setStroke(element.attrs.customColor);
373
+ }
374
+ }
375
+ preTarget.splice(0);
376
+ },
377
+ // 居中定位
378
+ centering(id) {
379
+ let entityId = id.replace(/\s*/g, "");
380
+ let obj = konvaStage.find("." + entityId);
381
+ let scaleBy = 8;
382
+ if (obj.length > 0) {
383
+ konvaStage.scale({ x: scaleBy, y: scaleBy });
384
+ centering(obj, this.$refs.svgDraw, konvaStage, scaleBy)
385
+ obj = null;
386
+ }
387
+ },
285
388
  beforeDestroy() {
286
389
  this.clearCache();
287
390
  },
@@ -119,11 +119,32 @@
119
119
  this.initControl();
120
120
  this.initLight();
121
121
  this.initLabelRender();
122
- renderer.domElement.addEventListener('mouseup', this.mouseClick, false);
123
- renderer.domElement.addEventListener('mousedown', this.mouseDown, false);
122
+ // 判断是设备是手机还是电脑
123
+ let isMobileDevice = this.isMobileDevice();
124
+ if (isMobileDevice) {
125
+ renderer.domElement.addEventListener('pointerup', this.mouseClick, false);
126
+ renderer.domElement.addEventListener('pointerdown', this.mouseDown, false);
127
+ } else {
128
+ renderer.domElement.addEventListener('mouseup', this.mouseClick, false);
129
+ renderer.domElement.addEventListener('mousedown', this.mouseDown, false);
130
+ }
124
131
  this.animate();
125
132
  },
126
133
  methods: {
134
+ // 判断是设备是手机还是电脑
135
+ isMobileDevice() {
136
+ const userAgent = navigator.userAgent || navigator.vendor || window.opera;
137
+ if (/windows phone/i.test(userAgent)) {
138
+ return true;
139
+ }
140
+ if (/android/i.test(userAgent)) {
141
+ return true;
142
+ }
143
+ if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
144
+ return true;
145
+ }
146
+ return false;
147
+ },
127
148
  initRender() {
128
149
  renderer = new this.THREE.WebGLRenderer({
129
150
  antialias: true,
@@ -152,7 +173,7 @@
152
173
  45,
153
174
  window.innerWidth / window.innerHeight,
154
175
  0.1,
155
- 10000
176
+ 100000
156
177
  );
157
178
  camera.position.set(0, 100, 150);
158
179
  },
@@ -443,8 +464,6 @@
443
464
  });
444
465
  break;
445
466
  case 'opacity':
446
- // obj.material.opacity = ele.attr[key];
447
- // obj.material.transparent = true;
448
467
  targetObj.forEach(children => {
449
468
  if (children.isMesh) {
450
469
  const opacity = children.geometry.attributes.opacity.array;
@@ -533,7 +552,6 @@
533
552
  } else if (obj.isMesh) {
534
553
  this.setModelCenter(obj.parent);
535
554
  }
536
- // cameraControls.fitToBox( obj, true);
537
555
  }
538
556
  },
539
557
  // 根据自定义参数修改模型
@@ -1431,6 +1449,24 @@
1431
1449
  }
1432
1450
  scenePass = null;
1433
1451
  },
1452
+ // 获取中心点
1453
+ getCenter(obj) {
1454
+ console.log(obj)
1455
+ let center = new this.THREE.Vector3();
1456
+ obj.boundingBox.getCenter(center);
1457
+ const mat4 = new this.THREE.Matrix4();
1458
+ mat4.makeRotationX(-Math.PI / 2);
1459
+ center.applyMatrix4(mat4)
1460
+ return center;
1461
+ },
1462
+ getSize(obj) {
1463
+ let size = new this.THREE.Vector3();
1464
+ obj.boundingBox.getSize(size);
1465
+ const mat4 = new this.THREE.Matrix4();
1466
+ mat4.makeRotationX(-Math.PI / 2);
1467
+ size.applyMatrix4(mat4)
1468
+ return size;
1469
+ },
1434
1470
  animate() {
1435
1471
  const delta = fpsClock.getDelta();
1436
1472
  timeStamp += delta;
@@ -136,7 +136,7 @@ function parseData(input) {
136
136
  drawObjs: Array.from(drawObjMap.values()),
137
137
  instances: formatInstances,
138
138
  };
139
- console.log('parseData', map);
139
+ // console.log('parseData', map);
140
140
  return map;
141
141
  }
142
142
 
@@ -112,8 +112,8 @@ function handleInstancedMeshModel(
112
112
  }
113
113
  }
114
114
  }
115
- console.log('modelGroup', modelGroup);
116
- console.log('drawObjMapInstance', drawObjMapInstance);
115
+ // console.log('modelGroup', modelGroup);
116
+ // console.log('drawObjMapInstance', drawObjMapInstance);
117
117
  return modelGroup;
118
118
  // timeRender();
119
119
  // console.log('scene', scene)