fl-web-component 2.0.19 → 2.1.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/fl-web-component.common.1.js.map +1 -1
  2. package/dist/fl-web-component.common.2.js.map +1 -1
  3. package/dist/fl-web-component.common.js +5871 -1872
  4. package/dist/fl-web-component.common.js.map +1 -1
  5. package/dist/fl-web-component.css +1 -1
  6. package/package.json +4 -3
  7. package/packages/components/com-flcanvas/components/entityFormatting.js +134 -1
  8. package/packages/components/com-flcanvas/index.vue +335 -239
  9. package/packages/components/com-graphics/index.vue +433 -35
  10. package/packages/components/com-graphics/mock.json +115 -0
  11. package/packages/utils/StreamLoader.js +250 -107
  12. package/packages/utils/StreamLoaderParser.worker.js +180 -72
  13. package/src/utils/dxf-parser/AutoCadColorIndex.js +265 -0
  14. package/src/utils/dxf-parser/DimStyleCodes.js +33 -0
  15. package/src/utils/dxf-parser/DxfArrayScanner.js +151 -0
  16. package/src/utils/dxf-parser/DxfParser.js +918 -0
  17. package/src/utils/dxf-parser/ExtendedDataParser.js +117 -0
  18. package/src/utils/dxf-parser/LICENSE +21 -0
  19. package/src/utils/dxf-parser/ParseHelpers.js +140 -0
  20. package/src/utils/dxf-parser/README.md +8 -0
  21. package/src/utils/dxf-parser/entities/3dface.js +83 -0
  22. package/src/utils/dxf-parser/entities/arc.js +38 -0
  23. package/src/utils/dxf-parser/entities/attdef.js +89 -0
  24. package/src/utils/dxf-parser/entities/attribute.js +109 -0
  25. package/src/utils/dxf-parser/entities/circle.js +43 -0
  26. package/src/utils/dxf-parser/entities/dimension.js +71 -0
  27. package/src/utils/dxf-parser/entities/ellipse.js +48 -0
  28. package/src/utils/dxf-parser/entities/hatch.js +348 -0
  29. package/src/utils/dxf-parser/entities/insert.js +57 -0
  30. package/src/utils/dxf-parser/entities/line.js +34 -0
  31. package/src/utils/dxf-parser/entities/lwpolyline.js +103 -0
  32. package/src/utils/dxf-parser/entities/mtext.js +57 -0
  33. package/src/utils/dxf-parser/entities/point.js +35 -0
  34. package/src/utils/dxf-parser/entities/polyline.js +92 -0
  35. package/src/utils/dxf-parser/entities/solid.js +40 -0
  36. package/src/utils/dxf-parser/entities/spline.js +70 -0
  37. package/src/utils/dxf-parser/entities/text.js +50 -0
  38. package/src/utils/dxf-parser/entities/vertex.js +62 -0
  39. package/src/utils/flgltf-parser.js +21 -9
  40. package/src/utils/instance-parser.js +59 -59
  41. package/src/utils/threejs/measure-clear-distance.js +149 -123
  42. package/packages/components/com-graphics/box.json +0 -77
@@ -1 +1 @@
1
- @charset "UTF-8";.fl-model-containor[data-v-607a330c]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-607a330c] .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-607a330c] .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-607a330c] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-607a330c] .measure-label-font{word-break:break-all}[data-v-607a330c] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-607a330c]{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-607a330c]{opacity:1;visibility:visible}.loading-content[data-v-607a330c]{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-607a330c]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-607a330c 1s linear infinite;animation:spin-607a330c 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-607a330c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-607a330c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-607a330c]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-607a330c]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-607a330c]{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-607a330c]{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-b313ab6c]{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-160a92af]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-160a92af] .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-160a92af] .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-160a92af] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-160a92af] .measure-label-font{word-break:break-all}[data-v-160a92af] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-160a92af]{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-160a92af]{opacity:1;visibility:visible}.loading-content[data-v-160a92af]{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-160a92af]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-160a92af 1s linear infinite;animation:spin-160a92af 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-160a92af{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-160a92af{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-160a92af]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-160a92af]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-160a92af]{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-160a92af]{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-e2de7752]{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.0.19",
3
+ "version": "2.1.1-beta.0",
4
4
  "scripts": {
5
5
  "postinstall": "patch-package",
6
6
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
@@ -8,8 +8,9 @@
8
8
  "lint": "eslint \"{src,packages}/**/*.{vue,js}\" --fix",
9
9
  "prettier": "prettier --write \"packages/**/*.{js,css,less,scss,vue,html}\"",
10
10
  "=": "=============================================================",
11
- "tip2": "同时调试本组件与业务组件,请执行watch",
12
- "watch": "vue-cli-service build --watch --mode production --target lib --name fl-web-component --formats commonjs ./src/main.js",
11
+ "tip2": "同时调试本组件与业务组件,请执行watch,生产模式监听请执行watch:prod",
12
+ "watch": "vue-cli-service build --watch --mode development --target lib --name fl-web-component --formats commonjs ./src/main.js",
13
+ "watch:prod": "vue-cli-service build --watch --mode production --target lib --name fl-web-component --formats commonjs ./src/main.js",
13
14
  "build": "npm run lint && vue-cli-service build --target lib --name fl-web-component --formats commonjs ./src/main.js",
14
15
  "build:test": "vue-cli-service build --target lib --name fl-web-component --formats commonjs ./src/main.js",
15
16
  "publish:base": "npm run build && npm publish --registry https://registry.npmjs.org/",
@@ -1,6 +1,5 @@
1
1
  import bSpline from './bspline';
2
2
  import * as THREE from 'three';
3
-
4
3
  //rgb转换
5
4
 
6
5
  function decimalToRGBHex(decimalValue) {
@@ -602,7 +601,141 @@ function drawInsert(recordDxf, entities, group, key, configParams, konvaLayer) {
602
601
  konvaLayer.add(group);
603
602
  }
604
603
  }
604
+ export function _GenerateArcVertices({
605
+ vertices,
606
+ center,
607
+ radius,
608
+ startAngle = null,
609
+ endAngle = null,
610
+ tessellationAngle = null,
611
+ yRadius = null,
612
+ transform = null,
613
+ rotation = null,
614
+ ccwAngleDir = true,
615
+ }) {
616
+ if (!center || !radius) {
617
+ return;
618
+ }
619
+
620
+ tessellationAngle = (10 / 180) * Math.PI;
621
+
622
+ if (yRadius === null) {
623
+ yRadius = radius;
624
+ }
625
+ /* Normalize angles - make them starting from +X in CCW direction. End angle should be
626
+ * greater than start angle.
627
+ */
628
+ if (startAngle === undefined || startAngle === null) {
629
+ startAngle = 0;
630
+ } else {
631
+ startAngle += 0;
632
+ }
633
+ let isClosed = false;
634
+ if (endAngle === undefined || endAngle === null) {
635
+ endAngle = startAngle + 2 * Math.PI;
636
+ isClosed = true;
637
+ } else {
638
+ endAngle += 0;
639
+ }
640
+
641
+ //XXX this.angDir - not clear, seem in practice it does not alter arcs rendering.
642
+ if (!ccwAngleDir) {
643
+ const tmp = startAngle;
644
+ startAngle = -endAngle;
645
+ endAngle = -tmp;
646
+ }
647
+
648
+ while (endAngle <= startAngle) {
649
+ endAngle += Math.PI * 2;
650
+ }
651
+
652
+ const arcAngle = endAngle - startAngle;
653
+
654
+ let numSegments = Math.floor(arcAngle / tessellationAngle);
655
+ if (numSegments === 0) {
656
+ numSegments = 1;
657
+ }
658
+ const step = arcAngle / numSegments;
659
+
660
+ let rotationTransform = null;
661
+ if (rotation) {
662
+ rotationTransform = new THREE.Matrix3().makeRotation(rotation);
663
+ }
664
+
665
+ for (let i = 0; i <= numSegments; i++) {
666
+ if (i === numSegments && isClosed) {
667
+ break;
668
+ }
669
+ let a;
670
+ if (ccwAngleDir) {
671
+ a = startAngle + i * step;
672
+ } else {
673
+ a = startAngle + (numSegments - i) * step;
674
+ }
675
+ const v = new THREE.Vector2(radius * Math.cos(a), yRadius * Math.sin(a));
676
+
677
+ if (rotationTransform) {
678
+ v.applyMatrix3(rotationTransform);
679
+ }
680
+ v.add(center);
681
+ if (transform) {
682
+ v.applyMatrix3(transform);
683
+ }
684
+ vertices.push(v);
685
+ }
686
+ return vertices
687
+ }
688
+ export function _GenerateBulgeVertices(vertices, startVtx, endVtx, bulge) {
689
+ let arcTessellationAngle = (10 / 180) * Math.PI;
690
+ const a = 4 * Math.atan(bulge);
691
+ const aAbs = Math.abs(a);
692
+ if (aAbs < arcTessellationAngle) {
693
+ vertices.push(new THREE.Vector2(endVtx.x, endVtx.y));
694
+ return;
695
+ }
696
+ const ha = a / 2;
697
+ const sha = Math.sin(ha);
698
+ const cha = Math.cos(ha);
699
+ const d = { x: endVtx.x - startVtx.x, y: endVtx.y - startVtx.y };
700
+ const dSq = d.x * d.x + d.y * d.y;
701
+ if (dSq < Number.MIN_VALUE * 2) {
702
+ /* No vertex is pushed since end vertex is duplicate of start vertex. */
703
+ return;
704
+ }
705
+ const D = Math.sqrt(dSq);
706
+ let R = D / 2 / sha;
707
+ d.x /= D;
708
+ d.y /= D;
709
+ const center = {
710
+ x: (d.x * sha - d.y * cha) * R + startVtx.x,
711
+ y: (d.x * cha + d.y * sha) * R + startVtx.y,
712
+ };
605
713
 
714
+ let numSegments = Math.floor(aAbs / arcTessellationAngle);
715
+ if (numSegments < 8) {
716
+ numSegments = 8;
717
+ }
718
+ if (numSegments > 1) {
719
+ const startAngle = Math.atan2(
720
+ startVtx.y - center.y,
721
+ startVtx.x - center.x
722
+ );
723
+ const step = a / numSegments;
724
+ if (a < 0) {
725
+ R = -R;
726
+ }
727
+ for (let i = 1; i < numSegments; i++) {
728
+ const a = startAngle + i * step;
729
+ const v = new THREE.Vector2(
730
+ center.x + R * Math.cos(a),
731
+ center.y + R * Math.sin(a)
732
+ );
733
+ vertices.push(v);
734
+ }
735
+ }
736
+ vertices.push(new THREE.Vector2(endVtx.x, endVtx.y));
737
+ return vertices
738
+ }
606
739
  let color = [
607
740
  '0,0,0', //1
608
741
  '255,0,0', //2