fl-web-component 2.1.1-beta.11 → 2.1.1-beta.13

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.
@@ -1 +1 @@
1
- @charset "UTF-8";.fl-model-containor[data-v-43473926]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-43473926] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-43473926] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-43473926] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-43473926] .measure-label-font{word-break:break-all}[data-v-43473926] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-43473926]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-43473926]{opacity:1;visibility:visible}.loading-content[data-v-43473926]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-43473926]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-43473926 1s linear infinite;animation:spin-43473926 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-43473926{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-43473926{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-43473926]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-43473926]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-43473926]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-43473926]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-41b98e1a]{z-index:3;width:100%;height:100%;cursor:pointer;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:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;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:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;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:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
1
+ @charset "UTF-8";.fl-model-containor[data-v-3b9a926b]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-3b9a926b] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-3b9a926b] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-3b9a926b] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-3b9a926b] .measure-label-font{word-break:break-all}[data-v-3b9a926b] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-3b9a926b]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-3b9a926b]{opacity:1;visibility:visible}.loading-content[data-v-3b9a926b]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-3b9a926b]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-3b9a926b 1s linear infinite;animation:spin-3b9a926b 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-3b9a926b{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-3b9a926b{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-3b9a926b]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-3b9a926b]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-3b9a926b]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-3b9a926b]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-97fd148c]{z-index:3;width:100%;height:100%;cursor:pointer;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:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;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:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;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:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fl-web-component",
3
- "version": "2.1.1-beta.11",
3
+ "version": "2.1.1-beta.13",
4
4
  "scripts": {
5
5
  "postinstall": "patch-package",
6
6
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
@@ -1,7 +1,6 @@
1
1
  import bSpline from './bspline';
2
2
  import * as THREE from 'three';
3
3
  //rgb转换
4
-
5
4
  function decimalToRGBHex(decimalValue) {
6
5
  // Ensure the input is a valid integer
7
6
  if (!Number.isInteger(decimalValue)) {
@@ -378,7 +377,6 @@ function drawText(recordDxf, entity, group, key, configParams) {
378
377
  entity.endPoint && (entity.halign !== undefined || entity.valign !== undefined)
379
378
  ? entity.endPoint
380
379
  : entity.startPoint;
381
-
382
380
  const dim = new Konva.Text({
383
381
  x: 0,
384
382
  y: 0,
@@ -185,17 +185,19 @@ export default {
185
185
  methods: {
186
186
  // 图纸居中展示
187
187
  centerDraw() {
188
- const { scale, x, y } = this.calculateScaleAndPosition(
189
- this.bounds,
190
- this.konvaStage.width(),
191
- this.konvaStage.height(),
192
- 0.05 // 5% 边距
193
- );
194
-
195
- this.konvaStage.position({ x: x, y: y });
196
- this.konvaStage.scale({ x: scale, y: scale });
197
-
198
- this.konvaStage.batchDraw();
188
+ if (this.bounds) {
189
+ const { scale, x, y } = this.calculateScaleAndPosition(
190
+ this.bounds,
191
+ this.konvaStage.width(),
192
+ this.konvaStage.height(),
193
+ 0.05 // 5% 边距
194
+ );
195
+
196
+ this.konvaStage.position({ x: x, y: y });
197
+ this.konvaStage.scale({ x: scale, y: scale });
198
+
199
+ this.konvaStage.batchDraw();
200
+ }
199
201
  },
200
202
  calculateScaleAndPosition(contentBounds, stageWidth, stageHeight, padding = 0.1) {
201
203
  // 1. 计算内容的实际宽高
@@ -274,21 +276,21 @@ export default {
274
276
  //思路是计算居中包围盒,然后排除脏数据。
275
277
  loadDxf(data) {
276
278
  let _this = this;
277
-
278
- /* if(this.layer!=null){
279
- let nodes=this.layer.find(".item");
280
- for(let i=0;i<nodes.length;i++){
281
- nodes[i].destroy();
282
- }
283
- }*/
284
279
  this.bounds = null;
285
280
  this.konvaLayer.destroyChildren();
286
281
  const parser = new DxfParser();
287
282
  let dxf = parser.parse(data);
283
+ // 在这里处理数据为空的时候
284
+ if (dxf.entities.length === 0) {
285
+ this.$emit('error', {
286
+ type: 'entityEmpty'
287
+ })
288
+ return
289
+ }
288
290
  const parser2 = new DxfParser2();
289
291
  let dxf2 = parser2.parseSync(data);
290
292
 
291
- let hatchEntitys = dxf2.entities;
293
+ let hatchEntitys = dxf2.entities.filter(item => item.type === 'HATCH');
292
294
  // 处理HATCH部分
293
295
  for (let i = 0; i < hatchEntitys.length; i++) {
294
296
  let entity = hatchEntitys[i];
@@ -297,122 +299,124 @@ export default {
297
299
  let color = configParams ? configParams.color : '#000';
298
300
  let visible = configParams ? configParams.visible : true;
299
301
  let name = entity.layer.replace(/\s*/g, '');
300
- if (entity.type == 'HATCH') {
302
+ // if (entity.type == 'HATCH') {
301
303
  let boundaryLoops = entity.boundaryLoops;
302
- for (let j = 0; j < boundaryLoops.length; j++) {
303
- let list = [];
304
- let edges = boundaryLoops[j].edges;
305
- if (edges != undefined) {
306
- for (let k = 0; k < edges.length; k++) {
307
- let entity = edges[k];
308
- if (entity.type == 3) {
309
- let majorAxisEndPoint = entity.end;
310
- let center = entity.start;
311
- const xR = Math.sqrt(
312
- majorAxisEndPoint.x * majorAxisEndPoint.x +
313
- majorAxisEndPoint.y * majorAxisEndPoint.y
314
- );
315
- const axisRatio = entity.radius;
316
- const yR = xR * axisRatio;
317
- const rotation = Math.atan2(majorAxisEndPoint.y, majorAxisEndPoint.x);
318
-
319
- const arcVertices = _GenerateArcVertices({
320
- vertices: [],
321
- center,
322
- radius: xR,
323
- startAngle: parseFloat(entity.startAngle),
324
- endAngle: parseFloat(entity.endAngle),
325
- yRadius: yR,
326
- ccwAngleDir: entity.isCcw,
327
- });
328
-
329
- if (rotation !== 0) {
330
- //XXX should account angDir?
331
- const cos = Math.cos(rotation);
332
- const sin = Math.sin(rotation);
333
- for (const v of arcVertices) {
334
- const tx = v.x - center.x;
335
- const ty = v.y - center.y;
336
- /* Rotate the vertex around the ellipse center point. */
337
- v.x = tx * cos - ty * sin + center.x;
338
- v.y = tx * sin + ty * cos + center.y;
304
+ if (boundaryLoops && boundaryLoops.length > 0) {
305
+ for (let j = 0; j < boundaryLoops.length; j++) {
306
+ let list = [];
307
+ let edges = boundaryLoops[j].edges;
308
+ if (edges != undefined) {
309
+ for (let k = 0; k < edges.length; k++) {
310
+ let entity = edges[k];
311
+ if (entity.type == 3) {
312
+ let majorAxisEndPoint = entity.end;
313
+ let center = entity.start;
314
+ const xR = Math.sqrt(
315
+ majorAxisEndPoint.x * majorAxisEndPoint.x +
316
+ majorAxisEndPoint.y * majorAxisEndPoint.y
317
+ );
318
+ const axisRatio = entity.radius;
319
+ const yR = xR * axisRatio;
320
+ const rotation = Math.atan2(majorAxisEndPoint.y, majorAxisEndPoint.x);
321
+
322
+ const arcVertices = _GenerateArcVertices({
323
+ vertices: [],
324
+ center,
325
+ radius: xR,
326
+ startAngle: parseFloat(entity.startAngle),
327
+ endAngle: parseFloat(entity.endAngle),
328
+ yRadius: yR,
329
+ ccwAngleDir: entity.isCcw,
330
+ });
331
+
332
+ if (rotation !== 0) {
333
+ //XXX should account angDir?
334
+ const cos = Math.cos(rotation);
335
+ const sin = Math.sin(rotation);
336
+ for (const v of arcVertices) {
337
+ const tx = v.x - center.x;
338
+ const ty = v.y - center.y;
339
+ /* Rotate the vertex around the ellipse center point. */
340
+ v.x = tx * cos - ty * sin + center.x;
341
+ v.y = tx * sin + ty * cos + center.y;
342
+ }
343
+ }
344
+ //let list = [];
345
+ for (let i = 0; i < arcVertices.length; i++) {
346
+ list.push(arcVertices[i].x);
347
+ list.push(-parseFloat(arcVertices[i].y));
339
348
  }
340
349
  }
341
- //let list = [];
342
- for (let i = 0; i < arcVertices.length; i++) {
343
- list.push(arcVertices[i].x);
344
- list.push(-parseFloat(arcVertices[i].y));
350
+ if (entity.type == 1) {
351
+ list.push(entity.start.x);
352
+ list.push(-parseFloat(entity.start.y));
353
+ list.push(entity.end.x);
354
+ list.push(-parseFloat(entity.end.y));
355
+ //konvaLayer.add(line);
345
356
  }
357
+ let line = new Konva.Line({
358
+ points: list,
359
+ name: name,
360
+ entityId: entity.layer,
361
+ strokeWidth: 0.2,
362
+ closed: true,
363
+ fill: color,
364
+ stroke: color,
365
+ customColor: color,
366
+ visible: visible,
367
+ shapeType: 'hatch',
368
+ });
369
+ this.konvaLayer.add(line);
346
370
  }
347
- if (entity.type == 1) {
348
- list.push(entity.start.x);
349
- list.push(-parseFloat(entity.start.y));
350
- list.push(entity.end.x);
351
- list.push(-parseFloat(entity.end.y));
352
- //konvaLayer.add(line);
353
- }
354
- let line = new Konva.Line({
355
- points: list,
356
- name: name,
357
- entityId: entity.layer,
358
- strokeWidth: 0.2,
359
- closed: true,
360
- fill: color,
361
- stroke: color,
362
- customColor: color,
363
- visible: visible,
364
- shapeType: 'hatch',
365
- });
366
- this.konvaLayer.add(line);
367
- }
368
- } else {
369
- let boundaryLoops = entity.boundaryLoops;
370
- let loop = boundaryLoops[0];
371
- if (loop.type == 7) {
372
- let vertices = [];
373
- for (let vtxIdx = 0; vtxIdx < loop.polyline.vertices.length; vtxIdx++) {
374
- const vtx = loop.polyline.vertices[vtxIdx];
375
- if ((vtx.bulge ?? 0) == 0) {
376
- vertices.push(new Vector2(vtx.x, vtx.y));
377
- } else {
378
- const prevVtx =
379
- loop.polyline.vertices[
380
- vtxIdx == 0 ? loop.polyline.vertices.length - 1 : vtxIdx - 1
381
- ];
382
- if ((prevVtx.bulge ?? 0) == 0) {
383
- /* Start vertex is not produced by _GenerateBulgeVertices(). */
371
+ } else {
372
+ let boundaryLoops = entity.boundaryLoops;
373
+ let loop = boundaryLoops[0];
374
+ if (loop.type == 7) {
375
+ let vertices = [];
376
+ for (let vtxIdx = 0; vtxIdx < loop.polyline.vertices.length; vtxIdx++) {
377
+ const vtx = loop.polyline.vertices[vtxIdx];
378
+ if ((vtx.bulge ?? 0) == 0) {
384
379
  vertices.push(new Vector2(vtx.x, vtx.y));
380
+ } else {
381
+ const prevVtx =
382
+ loop.polyline.vertices[
383
+ vtxIdx == 0 ? loop.polyline.vertices.length - 1 : vtxIdx - 1
384
+ ];
385
+ if ((prevVtx.bulge ?? 0) == 0) {
386
+ /* Start vertex is not produced by _GenerateBulgeVertices(). */
387
+ vertices.push(new Vector2(vtx.x, vtx.y));
388
+ }
389
+ const nextVtx =
390
+ loop.polyline.vertices[
391
+ vtxIdx == loop.polyline.vertices.length - 1 ? 0 : vtxIdx + 1
392
+ ];
393
+ vertices = _GenerateBulgeVertices([], vtx, nextVtx, vtx.bulge);
385
394
  }
386
- const nextVtx =
387
- loop.polyline.vertices[
388
- vtxIdx == loop.polyline.vertices.length - 1 ? 0 : vtxIdx + 1
389
- ];
390
- vertices = _GenerateBulgeVertices([], vtx, nextVtx, vtx.bulge);
391
395
  }
392
- }
393
- let list = [];
394
- for (let i = 0; i < vertices.length; i++) {
395
- list.push(vertices[i].x);
396
- list.push(-parseFloat(vertices[i].y));
397
- }
396
+ let list = [];
397
+ for (let i = 0; i < vertices.length; i++) {
398
+ list.push(vertices[i].x);
399
+ list.push(-parseFloat(vertices[i].y));
400
+ }
398
401
 
399
- let line = new Konva.Line({
400
- points: list,
401
- strokeWidth: 0.2,
402
- name: name,
403
- entityId: entity.layer,
404
- closed: true,
405
- fill: color,
406
- stroke: color,
407
- customColor: color,
408
- visible: visible,
409
- shapeType: 'hatch',
410
- });
411
- this.konvaLayer.add(line);
402
+ let line = new Konva.Line({
403
+ points: list,
404
+ strokeWidth: 0.2,
405
+ name: name,
406
+ entityId: entity.layer,
407
+ closed: true,
408
+ fill: color,
409
+ stroke: color,
410
+ customColor: color,
411
+ visible: visible,
412
+ shapeType: 'hatch',
413
+ });
414
+ this.konvaLayer.add(line);
415
+ }
412
416
  }
413
417
  }
414
418
  }
415
- }
419
+ // }
416
420
  }
417
421
  //加载图纸
418
422
  let entities = formatEntity(dxf.entities);
@@ -443,23 +447,24 @@ export default {
443
447
  if (this.konvaLayer) this.konvaLayer.add(entity.obj);
444
448
  }
445
449
  }
446
- if (group.length > 0) {
447
- if (group[0]?.stroke) {
448
- group[0].stroke = '#000';
449
- }
450
+ let shapeGroup = group.filter(item => item.type !== 'text')
451
+ if (shapeGroup.length > 0) {
452
+ // if (group[0]?.stroke) {
453
+ // group[0].stroke = '#000';
454
+ // }
450
455
  let customShape = new Konva.Shape({
451
456
  x: 0,
452
457
  y: 0,
453
458
  strokeWidth: 0.2,
454
459
  name: key.replace(/\s*/g, ''),
455
460
  entityId: key,
456
- stroke: group[0].stroke,
457
- customColor: configParams ? configParams.color : group[0].stroke,
461
+ stroke: shapeGroup[0].stroke,
462
+ customColor: configParams ? configParams.color : shapeGroup[0].stroke,
458
463
  //visible: configParams ? configParams.visible :true,
459
464
  sceneFunc(context, shape) {
460
465
  context.beginPath();
461
- for (let i = 0; i < group.length; i++) {
462
- let entity = group[i];
466
+ for (let i = 0; i < shapeGroup.length; i++) {
467
+ let entity = shapeGroup[i];
463
468
 
464
469
  if (entity.type === 'line') {
465
470
  context.strokeStyle = entity.stroke;
@@ -222,8 +222,8 @@ export default {
222
222
  },
223
223
  isolateMode: false,
224
224
  sceneBoundingBoxDebugEnabled: false,
225
- // collisionObbDebugEnabled: isDebug,
226
- collisionObbDebugEnabled: false,
225
+ collisionObbDebugEnabled: isDebug,
226
+ // collisionObbDebugEnabled: false,
227
227
  // occlusionBoundsDebugEnabled: isDebug,
228
228
  occlusionBoundsDebugEnabled: false,
229
229
  };
@@ -1237,7 +1237,9 @@ export default {
1237
1237
  if (!copyMatrix) return;
1238
1238
 
1239
1239
  const shouldShow =
1240
- visible && instanceState.visible !== false && this.isSourceVisible(instanceId, instancedMesh);
1240
+ visible &&
1241
+ instanceState.visible !== false &&
1242
+ this.isSourceVisible(instanceId, instancedMesh);
1241
1243
  const matrix = new this.THREE.Matrix4().copy(copyMatrix);
1242
1244
  if (!shouldShow) {
1243
1245
  matrix.makeTranslation(9999999, 9999999, 9999999);
@@ -3074,12 +3076,7 @@ export default {
3074
3076
  visibleIdSet.add(this.formatModelId(hits[i].modelId));
3075
3077
  continue;
3076
3078
  }
3077
- this.appendOcclusionCandidates(
3078
- candidates,
3079
- hits[i].modelId,
3080
- hits[i].box,
3081
- globalFrustum
3082
- );
3079
+ this.appendOcclusionCandidates(candidates, hits[i].modelId, hits[i].box, globalFrustum);
3083
3080
  }
3084
3081
  } else if (this._boxIndex && this._boxIndex.size > 0) {
3085
3082
  this._boxIndex.forEach((box, modelId) => {
@@ -49,7 +49,7 @@ export class StreamLoader {
49
49
 
50
50
  // Initialize worker
51
51
  try {
52
- this.worker = new StreamLoaderParserWorker();
52
+ this.worker = this.debug ? null : new StreamLoaderParserWorker();
53
53
  // this.worker = null; // TODO
54
54
  } catch (e) {
55
55
  this.worker = null;
@@ -1068,10 +1068,10 @@ function draw3Dmodel(
1068
1068
  * @param {String} instanceName - 模型实例的名称
1069
1069
  * @returns {Object} - 包含所有 2D 模型的组对象
1070
1070
  */
1071
- function draw2Dmodel(geom, instanceName, instanceCount, nColor, nOpacity, options = {}) {
1072
- const points = geom.points;
1073
- const normals = geom.normals;
1074
- const geometry = new THREE.BufferGeometry();
1071
+ function draw2Dmodel(geom, instanceName, instanceCount, nColor, nOpacity, options = {}) {
1072
+ const points = geom.points;
1073
+ const normals = geom.normals;
1074
+ const geometry = new THREE.BufferGeometry();
1075
1075
 
1076
1076
  if (points && points.length) {
1077
1077
  const position = new Float32Array(points);
@@ -1082,18 +1082,18 @@ function draw2Dmodel(geom, instanceName, instanceCount, nColor, nOpacity, option
1082
1082
  const normal = new Float32Array(normals);
1083
1083
  geometry.setAttribute('normal', new THREE.BufferAttribute(normal, 3));
1084
1084
  }
1085
-
1086
- const { color, linewidth } = geom.prop;
1087
- const formatLinewidth = (linewidth < 1 ? linewidth * 50 : linewidth) || 5;
1088
- const meshLineResolution = options.meshLineResolution || {};
1089
- const resolutionWidth = meshLineResolution.width || window.innerWidth || 1;
1090
- const resolutionHeight = meshLineResolution.height || window.innerHeight || 1;
1091
- const material = new MeshLineMaterial({
1092
- color: new THREE.Color(`rgb(${color[0]}, ${color[1]}, ${color[2]})`),
1093
- lineWidth: formatLinewidth,
1094
- resolution: new THREE.Vector2(resolutionWidth, resolutionHeight),
1095
- sizeAttenuation: 0,
1096
- });
1085
+
1086
+ const { color, linewidth } = geom.prop;
1087
+ const formatLinewidth = (linewidth < 1 ? linewidth * 50 : linewidth) || 5;
1088
+ const meshLineResolution = options.meshLineResolution || {};
1089
+ const resolutionWidth = meshLineResolution.width || window.innerWidth || 1;
1090
+ const resolutionHeight = meshLineResolution.height || window.innerHeight || 1;
1091
+ const material = new MeshLineMaterial({
1092
+ color: new THREE.Color(`rgb(${color[0]}, ${color[1]}, ${color[2]})`),
1093
+ lineWidth: formatLinewidth,
1094
+ resolution: new THREE.Vector2(resolutionWidth, resolutionHeight),
1095
+ sizeAttenuation: 0,
1096
+ });
1097
1097
 
1098
1098
  const lineGeometry = new MeshLineGeometry();
1099
1099
  lineGeometry.setPoints(geometry);