fl-web-component 2.0.0-beta.7 → 2.0.0-beta.8

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[data-v-268ad8af]{width:100%;height:100%;cursor:pointer}[data-v-268ad8af] .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-268ad8af] .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-268ad8af] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-268ad8af] .measure-label-font{word-break:break-all}[data-v-268ad8af] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-268ad8af]{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-268ad8af]{opacity:1;visibility:visible}.loading-content[data-v-268ad8af]{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-268ad8af]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-268ad8af 1s linear infinite;animation:spin-268ad8af 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-268ad8af{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-268ad8af{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-268ad8af]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-progress-bar[data-v-268ad8af]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-progress-fill[data-v-268ad8af]{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-268ad8af]{font-size:12px;color:#666;line-height:1.5}.lil-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-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-gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-gui .controller:last-child{border-bottom:none!important}.lil-gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-gui .controller .widget:focus,.lil-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-gui .controller .widget:focus{outline:none!important}.lil-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-gui .controller.number .fill{border-right:solid #008de9}.lil-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-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-gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-gui .controller .option:hover{background:#f8f9fa!important}.lil-gui .controller .option:last-child{border-bottom:none!important}.lil-gui input:active{background:#e6eff4}.lil-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-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-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-gui .controller.number .slider,.lil-gui .controller.number .slider:hover{background-color:#e6eff4}.lil-gui input,.lil-gui input:hover,.lil-gui input[type=number]:focus,.lil-gui input[type=text]:focus{background:#e6eff4}.lil-gui .controller>.name{min-width:25px}.lil-gui .controller.number input{color:#2e3136}.lil-gui .controller.number .slider:active{background-color:#e6eff4}.lil-gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-gui .folder>.title:before{color:#6c757d!important}.lil-gui .folder.closed>.children{display:none!important}#konva-container[data-v-459d4d3b]{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-5f081c10]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-5f081c10]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-5f081c10]{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-5f081c10],.text_toolbar[data-v-5f081c10]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-5f081c10],.icon_toolbar[data-v-5f081c10]:hover,.text_toolbar[data-v-5f081c10]:hover{background-color:#eee}[data-v-5f081c10].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-5f081c10].el-color-picker--medium,[data-v-5f081c10].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-5f081c10]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-5f081c10]{position:absolute;left:0}.canvas_container #ctx_front[data-v-5f081c10]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-5f081c10]{z-index:3}.canvas_container #ctx_base[data-v-5f081c10]{z-index:1}#text[data-v-5f081c10]{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-5f081c10]:hover{border:1px dashed #53a8ff}#svg-component[data-v-6e1600cc],#svg-tigger[data-v-6e1600cc]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-6e1600cc]{z-index:20;position:absolute;top:0;left:0;background:#fff}#three-box[data-v-5504c19e],#toolbar-show[data-v-6e1600cc]{width:100%;height:100%;overflow:hidden}
1
+ @charset "UTF-8";#fl-model[data-v-5e18bf7c]{width:100%;height:100%;cursor:pointer}[data-v-5e18bf7c] .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-5e18bf7c] .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-5e18bf7c] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-5e18bf7c] .measure-label-font{word-break:break-all}[data-v-5e18bf7c] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-5e18bf7c]{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-5e18bf7c]{opacity:1;visibility:visible}.loading-content[data-v-5e18bf7c]{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-5e18bf7c]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-5e18bf7c 1s linear infinite;animation:spin-5e18bf7c 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-5e18bf7c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-5e18bf7c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-5e18bf7c]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-progress-bar[data-v-5e18bf7c]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-progress-fill[data-v-5e18bf7c]{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-5e18bf7c]{font-size:12px;color:#666;line-height:1.5}.lil-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-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-gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-gui .controller:last-child{border-bottom:none!important}.lil-gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-gui .controller .widget:focus,.lil-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-gui .controller .widget:focus{outline:none!important}.lil-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-gui .controller.number .fill{border-right:solid #008de9}.lil-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-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-gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-gui .controller .option:hover{background:#f8f9fa!important}.lil-gui .controller .option:last-child{border-bottom:none!important}.lil-gui input:active{background:#e6eff4}.lil-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-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-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-gui .controller.number .slider,.lil-gui .controller.number .slider:hover{background-color:#e6eff4}.lil-gui input,.lil-gui input:hover,.lil-gui input[type=number]:focus,.lil-gui input[type=text]:focus{background:#e6eff4}.lil-gui .controller>.name{min-width:25px}.lil-gui .controller.number input{color:#2e3136}.lil-gui .controller.number .slider:active{background-color:#e6eff4}.lil-gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-gui .folder>.title:before{color:#6c757d!important}.lil-gui .folder.closed>.children{display:none!important}#konva-container[data-v-459d4d3b]{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-5f081c10]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-5f081c10]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-5f081c10]{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-5f081c10],.text_toolbar[data-v-5f081c10]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-5f081c10],.icon_toolbar[data-v-5f081c10]:hover,.text_toolbar[data-v-5f081c10]:hover{background-color:#eee}[data-v-5f081c10].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-5f081c10].el-color-picker--medium,[data-v-5f081c10].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-5f081c10]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-5f081c10]{position:absolute;left:0}.canvas_container #ctx_front[data-v-5f081c10]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-5f081c10]{z-index:3}.canvas_container #ctx_base[data-v-5f081c10]{z-index:1}#text[data-v-5f081c10]{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-5f081c10]:hover{border:1px dashed #53a8ff}#svg-component[data-v-6e1600cc],#svg-tigger[data-v-6e1600cc]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-6e1600cc]{z-index:20;position:absolute;top:0;left:0;background:#fff}#three-box[data-v-5504c19e],#toolbar-show[data-v-6e1600cc]{width:100%;height:100%;overflow:hidden}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fl-web-component",
3
- "version": "2.0.0-beta.7",
3
+ "version": "2.0.0-beta.8",
4
4
  "scripts": {
5
5
  "postinstall": "patch-package",
6
6
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
@@ -365,7 +365,6 @@ function drawLine(recordDxf, entity, group, key, configParams) {
365
365
  // group.add(line);
366
366
  }
367
367
  function drawText(recordDxf, entity, group, key, configParams) {
368
-
369
368
  let color=entity.color;
370
369
  let rgb=decimalToRGBHex(color);
371
370
  console.log(rgb);
@@ -400,6 +399,17 @@ function drawText(recordDxf, entity, group, key, configParams) {
400
399
  stroke: hex,
401
400
  strokeWidth:0.1,
402
401
  });
402
+ let width=dim.getTextWidth()
403
+ //let clientRect=dim.getClientRect()
404
+ //let clientWidth=clientRect.width;
405
+
406
+ if(entity.halign){
407
+ if(entity.halign==1){
408
+ dim.attrs.x= dim.attrs.x-(width/2);
409
+ }
410
+ }
411
+
412
+
403
413
  if (entity.rotation) {
404
414
  if(entity.rotation==90||parseInt(entity.rotation)==90||parseInt(entity.rotation)==89||parseInt(entity.rotation)==450) {
405
415
  dim.attrs.x = parseFloat(x) - fontSize;
@@ -414,8 +424,59 @@ function drawText(recordDxf, entity, group, key, configParams) {
414
424
  if(entity.rotation==360||parseFloat(entity.rotation)==360){
415
425
  dim.attrs.y= -parseFloat(y) - fontSize;
416
426
  }
427
+ if(parseInt(entity.rotation)==30||parseInt(entity.rotation)==29) {
428
+ //dim.attrs.x= parseFloat(x) -200;
429
+
430
+ //console.log("rect");
431
+ //console.log(rect);
432
+ dim.attrs.y= -parseFloat(y) - fontSize*0.85;
433
+ dim.attrs.x = parseFloat(x) - fontSize*0.85;
434
+ if(text.length>9){
435
+ let width=dim.getTextWidth()
436
+ //let clientRect=dim.getClientRect()
437
+ //let clientWidth=clientRect.width;
438
+ dim.attrs.y= -parseFloat(y) +fontSize;
439
+ if(entity.halign){
440
+ if(entity.halign==1){
441
+ dim.attrs.x= dim.attrs.x-(width/2);
442
+ }
443
+
444
+ }
445
+ if (entity.valign === 3) { // Middle
446
+ dim.attrs.x= dim.attrs.x+1;
447
+ dim.attrs.y = -parseFloat(y) +fontSize*1.8 ;
448
+ }
449
+ }else{
450
+ if (entity.valign === 3) { // Middle
451
+ dim.attrs.x= dim.attrs.x+1;
452
+ dim.attrs.y = -parseFloat(y) ;
453
+ }
454
+ }
455
+ }
456
+ if(parseInt(entity.rotation)==330||parseInt(entity.rotation)==329) {
457
+ //dim.attrs.x= parseFloat(x) -200;
458
+
459
+ //console.log("rect");
460
+ //console.log(rect);
461
+ dim.attrs.y= -parseFloat(y) -fontSize;
462
+ dim.attrs.x = parseFloat(x) +0.5;
463
+ }
464
+ if(parseInt(entity.rotation)==60||parseInt(entity.rotation)==60) {
465
+ //dim.attrs.x= parseFloat(x) -200;
466
+
467
+ //console.log("rect");
468
+ //console.log(rect);
469
+ dim.attrs.y= -parseFloat(y) ;
470
+ dim.attrs.x = parseFloat(x) -fontSize;
471
+ }
472
+
473
+
474
+ // dim.attrs.y= -parseFloat(y)+ fontSize*0.8;
475
+
417
476
  dim.attrs.rotation = 360-entity.rotation ;
477
+
418
478
  }else{
479
+
419
480
  // 支持 DXF 垂直对齐(valign),仅在未旋转时按插入点对齐
420
481
  if (entity.valign === 2) { // Middle
421
482
  dim.attrs.y = -parseFloat(y) - fontSize / 2;
@@ -429,16 +490,7 @@ function drawText(recordDxf, entity, group, key, configParams) {
429
490
  dim.attrs.fontSize =(fontSize+0.35)* entity.xScale;
430
491
  }
431
492
 
432
- let width=dim.getTextWidth()
433
- //let clientRect=dim.getClientRect()
434
- //let clientWidth=clientRect.width;
435
493
 
436
- if(entity.halign){
437
- if(entity.halign==1){
438
- dim.attrs.x= dim.attrs.x-(width*1.15/2);
439
-
440
- }
441
- }
442
494
 
443
495
  //dim.attrs.x= dim.attrs.x-parseFloat(2);
444
496
  group.push({
@@ -2294,7 +2294,9 @@ export default {
2294
2294
 
2295
2295
  /**
2296
2296
  * 初始化流式加载器(别名 init)
2297
- * @param {Object} config - 其他配置
2297
+ * @param {Object} config - 配置项
2298
+ * @param {Object} config.modelApi - 模型API接口
2299
+ * @param {string} [config.projectId] - 项目ID
2298
2300
  */
2299
2301
  init(config = {}) {
2300
2302
  this.initStreamLoader(config.modelApi, config);
@@ -2304,6 +2306,7 @@ export default {
2304
2306
  * 初始化流式加载器
2305
2307
  * @param {Object} modelApi - 模型API接口
2306
2308
  * @param {Object} config - 其他配置
2309
+ * @param {string} [config.projectId] - 项目ID
2307
2310
  */
2308
2311
  initStreamLoader(modelApi, config = {}) {
2309
2312
  const { projectId, ...restConfig } = config || {};
@@ -1,245 +1,245 @@
1
- import * as THREE from 'three';
2
-
3
- const NODE_TYPES = {
4
- pbsGrp: 1,
5
- major: 2,
6
- model: 3,
7
- };
8
-
9
- // 处理mesh数据,生成drawObjs
10
- function processMeshData(input, options) {
11
- const drawObjMap = new Map();
12
-
13
- if (!input.mesh) {
14
- return [];
15
- }
16
-
17
- input.mesh.forEach(meshItem => {
18
- const geomList = [];
19
- meshItem.primitives.forEach(primitive => {
20
- const primitiveData = input.primitive.find(g => g.id === primitive.prmid);
21
- if (primitiveData) {
22
- const material = input.material?.find(m => m.id === primitiveData.material);
23
- const prop = {
24
- color: material?.color || [255, 255, 255, 1],
25
- fontsize: material?.fontsize !== undefined ? material?.fontsize : 20,
26
- frontname: material?.frontname !== undefined ? material?.frontname : '',
27
- italic: material?.italic,
28
- linepacing: 1, // 默认值
29
- linewidth: material?.linewidth !== undefined ? material?.linewidth : 1, // 默认值
30
- visible: material?.visible === false ? false : true,
31
- transparent: material?.transp !== undefined ? material?.transp : 0,
32
- };
33
-
34
- const identity = new THREE.Matrix4().identity();
35
-
36
- geomList.push({
37
- matrix: {
38
- val: primitive.matrix?.length ? primitive.matrix : identity.elements,
39
- // val: identity.elements,
40
- },
41
- // originMatrix: meshItem.id == primitive.prmid ? [] : identity.elements,
42
- prmid: primitive.prmid,
43
- geomId: primitiveData.id,
44
- type: primitiveData.geomType,
45
- text: primitiveData.geomText,
46
- points: primitiveData.position,
47
- alignType: primitiveData.alignType,
48
- normals: primitiveData.normal,
49
- triangles: primitiveData.indices || [],
50
- max: primitiveData.max,
51
- min: primitiveData.min,
52
- prop: prop,
53
- });
54
- }
55
- });
56
-
57
- drawObjMap.set(meshItem.id, {
58
- drawObjId: meshItem.id,
59
- geoms: geomList,
60
- // lodLevel: meshItem.type || 2,
61
- });
62
- });
63
-
64
- return Array.from(drawObjMap.values());
65
- }
66
-
67
- // 处理node数据,生成instances
68
- function processNodeData(input, options) {
69
- const flatNode = options?.flatNode;
70
-
71
- function flattenAndComputeWorldMatrices(
72
- nodes,
73
- result = [],
74
- // parentWorldMatrix = null,
75
- fatherId = ''
76
- ) {
77
- for (const node of nodes) {
78
- const { category, instanceId, matrix, children, drawObject, groupId, nodeType } = node;
79
-
80
- // 构造本地矩阵
81
- let localMatrix;
82
- if (matrix && matrix.val) {
83
- localMatrix = new THREE.Matrix4().fromArray(matrix.val);
84
- } else {
85
- localMatrix = new THREE.Matrix4().identity(); // 默认为单位矩阵
86
- }
87
-
88
- // 计算世界矩阵
89
- // const worldMatrix = parentWorldMatrix
90
- // ? parentWorldMatrix.clone().multiply(localMatrix)
91
- // : localMatrix.clone();
92
- const worldMatrix = localMatrix.clone();
93
-
94
- // 构造输出节点
95
- result.push({
96
- drawObject,
97
- category,
98
- instanceId,
99
- // matrix,
100
- matrix: {
101
- val: Array.from(worldMatrix.toArray()),
102
- },
103
- fatherId,
104
- groupId,
105
- nodeType,
106
- });
107
-
108
- // 递归处理子节点,传递当前世界矩阵
109
- if (children) {
110
- flattenAndComputeWorldMatrices(children, result, instanceId);
111
- }
112
- }
113
-
114
- return result;
115
- }
116
-
117
- if(!flatNode){
118
- const formatInstances = [];
119
- const preNode = input.node ? input.node : generateNode(input.mesh);
120
- const rootInstances = parseNode(preNode);
121
- flattenAndComputeWorldMatrices(rootInstances, formatInstances);
122
-
123
- return formatInstances
124
- }else{
125
- return parseNode(input.node, flatNode);
126
- }
127
- }
128
-
129
- // 处理一个primitive,生成多个drawObj
130
- function processOnePrimtiveToMultiMesh(primitive){
131
- return {
132
- instanceId: primitive.drawObjId, // 实例与drawObj一对多关系
133
- drawObject: primitive.geoms[0]?.prmid || '',
134
- matrix: primitive.geoms[0]?.matrix || [],
135
- }
136
- }
137
-
138
- // 主解析函数,整合两个独立模块的结果
139
- function parseData(input, options) {
140
- const drawObjs = processMeshData(input, options);
141
- const instances = drawObjs.map((item) => {
142
- return processOnePrimtiveToMultiMesh(item); // 实例与drawObj一对多关系
143
- })
144
- // const instances = drawObjs.map((item) => {
145
- // return {
146
- // instanceId: item.drawObjId, // 实例与drawObj一对一关系
147
- // drawObject: item.drawObjId,
148
- // }
149
- // })
150
- // const instances = processNodeData(input);
151
-
152
- const map = {
153
- drawObjs,
154
- instances,
155
- };
156
- // console.log('parseData', map);
157
- return map;
158
- }
159
-
160
- // 递归处理节点实例
161
- function parseNode(node, isFlatNode) {
162
- function processInstance(instance, parentInstanceId, instanceMap, groupId, isFlatNode) {
163
- const newInstance = {
164
- category: instance.category || instance.name,
165
- drawObject: instance.drawObject || instance.mesh,
166
- fatherId: parentInstanceId || '',
167
- instanceId: instance.id || instance.batchId,
168
- matrix: instance.matrix,
169
- children: [],
170
- nodeType: instance.nodeType,
171
- groupId: instance.nodeType === NODE_TYPES.pbsGrp ? instance._batchId : groupId,
172
- };
173
-
174
- if(!isFlatNode){
175
- // 处理子实例
176
- if (instance.children && instance.children.length > 0) {
177
- instance.children.forEach(childId => {
178
- const childInstance = instanceMap.get(childId);
179
- if (childInstance) {
180
- const processedChild = processInstance(
181
- childInstance,
182
- instance._batchId,
183
- instanceMap,
184
- newInstance.groupId
185
- );
186
- newInstance.children.push(processedChild);
187
- }
188
- });
189
- }
190
- }
191
-
192
- return newInstance;
193
- }
194
-
195
- const rootInstances = [];
196
- // 创建实例映射
197
- if(!isFlatNode){
198
- const instanceMap = new Map();
199
- node.forEach(instance => {
200
- instanceMap.set(instance.id, instance);
201
- });
202
-
203
- // 处理根实例
204
- instanceMap.forEach(instance => {
205
- let isRoot = true;
206
- instanceMap.forEach(otherInstance => {
207
- if (otherInstance.children && otherInstance.children.includes(instance.id)) {
208
- isRoot = false;
209
- }
210
- });
211
- if (isRoot) {
212
- const processed = processInstance(instance, instance._batchId, instanceMap);
213
- rootInstances.push(processed);
214
- }
215
- });
216
- }else{
217
- // 处理根实例
218
- node.forEach(instance => {
219
- const processed = processInstance(instance, instance._batchId, {}, 0, isFlatNode);
220
- rootInstances.push(processed);
221
- });
222
- }
223
- return rootInstances
224
- }
225
- // 生成默认node节点
226
- function generateNode(mesh) {
227
- let nodes = [];
228
- mesh.forEach(item => {
229
- if (item.primitives.length) {
230
- let tempNode = {
231
- id: item.id,
232
- _batchId: item.id,
233
- name: item.id,
234
- mesh: item.id,
235
- matrix: {},
236
- nodeType: 3,
237
- };
238
- nodes.push(tempNode);
239
- }
240
- });
241
-
242
- return nodes;
243
- }
244
-
245
- export { parseData, parseNode, processMeshData, processNodeData };
1
+ import * as THREE from 'three';
2
+
3
+ const NODE_TYPES = {
4
+ pbsGrp: 1,
5
+ major: 2,
6
+ model: 3,
7
+ };
8
+
9
+ // 处理mesh数据,生成drawObjs
10
+ function processMeshData(input, options) {
11
+ const drawObjMap = new Map();
12
+
13
+ if (!input.mesh) {
14
+ return [];
15
+ }
16
+
17
+ input.mesh.forEach(meshItem => {
18
+ const geomList = [];
19
+ meshItem.primitives.forEach(primitive => {
20
+ const primitiveData = input.primitive.find(g => g.id === primitive.prmid);
21
+ if (primitiveData) {
22
+ const material = input.material?.find(m => m.id === primitiveData.material);
23
+ const prop = {
24
+ color: material?.color || [255, 255, 255, 1],
25
+ fontsize: material?.fontsize !== undefined ? material?.fontsize : 20,
26
+ frontname: material?.frontname !== undefined ? material?.frontname : '',
27
+ italic: material?.italic,
28
+ linepacing: 1, // 默认值
29
+ linewidth: material?.linewidth !== undefined ? material?.linewidth : 1, // 默认值
30
+ visible: material?.visible === false ? false : true,
31
+ transparent: material?.transp !== undefined ? material?.transp : 0,
32
+ };
33
+
34
+ const identity = new THREE.Matrix4().identity();
35
+
36
+ geomList.push({
37
+ matrix: {
38
+ val: primitive.matrix?.length ? primitive.matrix : identity.elements,
39
+ // val: identity.elements,
40
+ },
41
+ // originMatrix: meshItem.id == primitive.prmid ? [] : identity.elements,
42
+ prmid: primitive.prmid,
43
+ geomId: primitiveData.id,
44
+ type: primitiveData.geomType,
45
+ text: primitiveData.geomText,
46
+ points: primitiveData.position,
47
+ alignType: primitiveData.alignType,
48
+ normals: primitiveData.normal,
49
+ triangles: primitiveData.indices || [],
50
+ max: primitiveData.max,
51
+ min: primitiveData.min,
52
+ prop: prop,
53
+ });
54
+ }
55
+ });
56
+
57
+ drawObjMap.set(meshItem.id, {
58
+ drawObjId: meshItem.id,
59
+ geoms: geomList,
60
+ // lodLevel: meshItem.type || 2,
61
+ });
62
+ });
63
+
64
+ return Array.from(drawObjMap.values());
65
+ }
66
+
67
+ // 处理node数据,生成instances
68
+ function processNodeData(input, options) {
69
+ const flatNode = options?.flatNode;
70
+
71
+ function flattenAndComputeWorldMatrices(
72
+ nodes,
73
+ result = [],
74
+ // parentWorldMatrix = null,
75
+ fatherId = ''
76
+ ) {
77
+ for (const node of nodes) {
78
+ const { category, instanceId, matrix, children, drawObject, groupId, nodeType } = node;
79
+
80
+ // 构造本地矩阵
81
+ let localMatrix;
82
+ if (matrix && matrix.val) {
83
+ localMatrix = new THREE.Matrix4().fromArray(matrix.val);
84
+ } else {
85
+ localMatrix = new THREE.Matrix4().identity(); // 默认为单位矩阵
86
+ }
87
+
88
+ // 计算世界矩阵
89
+ // const worldMatrix = parentWorldMatrix
90
+ // ? parentWorldMatrix.clone().multiply(localMatrix)
91
+ // : localMatrix.clone();
92
+ const worldMatrix = localMatrix.clone();
93
+
94
+ // 构造输出节点
95
+ result.push({
96
+ drawObject,
97
+ category,
98
+ instanceId,
99
+ // matrix,
100
+ matrix: {
101
+ val: Array.from(worldMatrix.toArray()),
102
+ },
103
+ fatherId,
104
+ groupId,
105
+ nodeType,
106
+ });
107
+
108
+ // 递归处理子节点,传递当前世界矩阵
109
+ if (children) {
110
+ flattenAndComputeWorldMatrices(children, result, instanceId);
111
+ }
112
+ }
113
+
114
+ return result;
115
+ }
116
+
117
+ if(!flatNode){
118
+ const formatInstances = [];
119
+ const preNode = input.node ? input.node : generateNode(input.mesh);
120
+ const rootInstances = parseNode(preNode);
121
+ flattenAndComputeWorldMatrices(rootInstances, formatInstances);
122
+
123
+ return formatInstances
124
+ }else{
125
+ return parseNode(input.node, flatNode);
126
+ }
127
+ }
128
+
129
+ // 处理一个primitive,生成多个drawObj
130
+ function processOnePrimtiveToMultiMesh(primitive){
131
+ return {
132
+ instanceId: primitive.drawObjId, // 实例与drawObj一对多关系
133
+ drawObject: primitive.geoms[0]?.prmid || '',
134
+ matrix: primitive.geoms[0]?.matrix || [],
135
+ }
136
+ }
137
+
138
+ // 主解析函数,整合两个独立模块的结果
139
+ function parseData(input, options) {
140
+ const drawObjs = processMeshData(input, options);
141
+ const instances = drawObjs.map((item) => {
142
+ return processOnePrimtiveToMultiMesh(item); // 实例与drawObj一对多关系
143
+ })
144
+ // const instances = drawObjs.map((item) => {
145
+ // return {
146
+ // instanceId: item.drawObjId, // 实例与drawObj一对一关系
147
+ // drawObject: item.drawObjId,
148
+ // }
149
+ // })
150
+ // const instances = processNodeData(input);
151
+
152
+ const map = {
153
+ drawObjs,
154
+ instances,
155
+ };
156
+ // console.log('parseData', map);
157
+ return map;
158
+ }
159
+
160
+ // 递归处理节点实例
161
+ function parseNode(node, isFlatNode) {
162
+ function processInstance(instance, parentInstanceId, instanceMap, groupId, isFlatNode) {
163
+ const newInstance = {
164
+ category: instance.category || instance.name,
165
+ drawObject: instance.drawObject || instance.mesh,
166
+ fatherId: parentInstanceId || '',
167
+ instanceId: instance.id || instance.batchId,
168
+ matrix: instance.matrix,
169
+ children: [],
170
+ nodeType: instance.nodeType,
171
+ groupId: instance.nodeType === NODE_TYPES.pbsGrp ? instance._batchId : groupId,
172
+ };
173
+
174
+ if(!isFlatNode){
175
+ // 处理子实例
176
+ if (instance.children && instance.children.length > 0) {
177
+ instance.children.forEach(childId => {
178
+ const childInstance = instanceMap.get(childId);
179
+ if (childInstance) {
180
+ const processedChild = processInstance(
181
+ childInstance,
182
+ instance._batchId,
183
+ instanceMap,
184
+ newInstance.groupId
185
+ );
186
+ newInstance.children.push(processedChild);
187
+ }
188
+ });
189
+ }
190
+ }
191
+
192
+ return newInstance;
193
+ }
194
+
195
+ const rootInstances = [];
196
+ // 创建实例映射
197
+ if(!isFlatNode){
198
+ const instanceMap = new Map();
199
+ node.forEach(instance => {
200
+ instanceMap.set(instance.id, instance);
201
+ });
202
+
203
+ // 处理根实例
204
+ instanceMap.forEach(instance => {
205
+ let isRoot = true;
206
+ instanceMap.forEach(otherInstance => {
207
+ if (otherInstance.children && otherInstance.children.includes(instance.id)) {
208
+ isRoot = false;
209
+ }
210
+ });
211
+ if (isRoot) {
212
+ const processed = processInstance(instance, instance._batchId, instanceMap);
213
+ rootInstances.push(processed);
214
+ }
215
+ });
216
+ }else{
217
+ // 处理根实例
218
+ node.forEach(instance => {
219
+ const processed = processInstance(instance, instance._batchId, {}, 0, isFlatNode);
220
+ rootInstances.push(processed);
221
+ });
222
+ }
223
+ return rootInstances
224
+ }
225
+ // 生成默认node节点
226
+ function generateNode(mesh) {
227
+ let nodes = [];
228
+ mesh.forEach(item => {
229
+ if (item.primitives.length) {
230
+ let tempNode = {
231
+ id: item.id,
232
+ _batchId: item.id,
233
+ name: item.id,
234
+ mesh: item.id,
235
+ matrix: {},
236
+ nodeType: 3,
237
+ };
238
+ nodes.push(tempNode);
239
+ }
240
+ });
241
+
242
+ return nodes;
243
+ }
244
+
245
+ export { parseData, parseNode, processMeshData, processNodeData };