iflow-engine-base 3.1.3 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -33
- package/dist/bim-engine-sdk.es.js +9755 -7957
- package/dist/bim-engine-sdk.es.js.map +1 -1
- package/dist/bim-engine-sdk.umd.js +811 -583
- package/dist/bim-engine-sdk.umd.js.map +1 -1
- package/dist/fonts/simfang.ttf +0 -0
- package/dist/iflow-engine-base.css +1 -1
- package/dist/index.d.ts +328 -6
- package/dist/main-2Txx2Vau.mjs +175 -0
- package/dist/main-2Txx2Vau.mjs.map +1 -0
- package/dist/model00/info +0 -0
- package/dist/model00/lod0 +0 -0
- package/dist/model00/lod1 +0 -0
- package/dist/model00/lod2 +0 -0
- package/dist/model00/property +0 -0
- package/dist/step-CkmZYIvn.mjs +251 -0
- package/dist/step-CkmZYIvn.mjs.map +1 -0
- package/dist/textture/waternormals.jpg +0 -0
- package/package.json +53 -51
- package/dist/main-Bcaj0lBB.mjs +0 -175
- package/dist/main-Bcaj0lBB.mjs.map +0 -1
- package/dist/model0/info +0 -0
- package/dist/model0/lod0 +0 -0
- package/dist/model0/property +0 -0
- package/dist/model1/info +0 -0
- package/dist/model1/info~/info.json +0 -1
- package/dist/model1/lod0 +0 -0
- package/dist/model1/lod0~/instances.json +0 -1
- package/dist/model1/lod0~/nodes.json +0 -1
- package/dist/model1/lod0~/primitives/0.glb +0 -0
- package/dist/model1/lod0~/primitives/1.glb +0 -0
- package/dist/model1/lod0~/primitives/10.glb +0 -0
- package/dist/model1/lod0~/primitives/11.glb +0 -0
- package/dist/model1/lod0~/primitives/12.glb +0 -0
- package/dist/model1/lod0~/primitives/13.glb +0 -0
- package/dist/model1/lod0~/primitives/14.glb +0 -0
- package/dist/model1/lod0~/primitives/15.glb +0 -0
- package/dist/model1/lod0~/primitives/16.glb +0 -0
- package/dist/model1/lod0~/primitives/17.glb +0 -0
- package/dist/model1/lod0~/primitives/18.glb +0 -0
- package/dist/model1/lod0~/primitives/19.glb +0 -0
- package/dist/model1/lod0~/primitives/2.glb +0 -0
- package/dist/model1/lod0~/primitives/20.glb +0 -0
- package/dist/model1/lod0~/primitives/21.glb +0 -0
- package/dist/model1/lod0~/primitives/22.glb +0 -0
- package/dist/model1/lod0~/primitives/23.glb +0 -0
- package/dist/model1/lod0~/primitives/24.glb +0 -0
- package/dist/model1/lod0~/primitives/25.glb +0 -0
- package/dist/model1/lod0~/primitives/26.glb +0 -0
- package/dist/model1/lod0~/primitives/27.glb +0 -0
- package/dist/model1/lod0~/primitives/28.glb +0 -0
- package/dist/model1/lod0~/primitives/29.glb +0 -0
- package/dist/model1/lod0~/primitives/3.glb +0 -0
- package/dist/model1/lod0~/primitives/30.glb +0 -0
- package/dist/model1/lod0~/primitives/31.glb +0 -0
- package/dist/model1/lod0~/primitives/4.glb +0 -0
- package/dist/model1/lod0~/primitives/5.glb +0 -0
- package/dist/model1/lod0~/primitives/6.glb +0 -0
- package/dist/model1/lod0~/primitives/7.glb +0 -0
- package/dist/model1/lod0~/primitives/8.glb +0 -0
- package/dist/model1/lod0~/primitives/9.glb +0 -0
- package/dist/model1/property +0 -0
- package/dist/model2/info +0 -0
- package/dist/model2/lod0 +0 -0
- package/dist/model2/property +0 -0
- package/dist/model2d/cad.json +0 -1
- package/dist/model2d/info +0 -0
- package/dist/model4/info +0 -0
- package/dist/model4/lod0 +0 -0
- package/dist/model4/property +0 -0
- package/dist/model720/720.png +0 -0
- package/dist/step-Ci61eU9h.mjs +0 -251
- package/dist/step-Ci61eU9h.mjs.map +0 -1
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:0;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-image:url(/assets/viewcube/home.png);background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none}.measureBack{cursor:pointer;pointer-events:auto;fill:orange;top:-50px;rx:5;ry:5}.measureLabel{position:absolute;fill:#fff;font-size:14px;font-family:Arial,sans-serif;pointer-events:none}.measurePointer{fill:orange}.Hight{stroke:#fff;stroke-width:2}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}
|
|
1
|
+
.originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:0;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-image:url(/assets/viewcube/home.png);background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none}.measureBack{cursor:pointer;pointer-events:auto;fill:orange;padding:5px;top:-50px;rx:5;ry:5}.measureLabel{position:absolute;fill:#fff;font-size:14px;font-family:Arial,sans-serif;pointer-events:none}.measurePointer{fill:orange}.Hight{stroke:#fff;stroke-width:2}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}
|
package/dist/index.d.ts
CHANGED
|
@@ -270,11 +270,34 @@ declare class CameraModule {
|
|
|
270
270
|
constructor(engine: any);
|
|
271
271
|
switchCurrentCamera(): void;
|
|
272
272
|
private updateComposerCamera;
|
|
273
|
+
/**
|
|
274
|
+
* 将透视相机调成「效果接近正交」:通过缩小 FOV 减弱透视畸变。
|
|
275
|
+
* @param fov 垂直视野角(度),默认 60。设为 10~15 可得到近正交效果,越小越接近正交。
|
|
276
|
+
* @param options.adjustDistance 是否按 FOV 比例调整相机距离以保持取景一致,默认 true(缩小 FOV 时自动拉远)
|
|
277
|
+
*/
|
|
278
|
+
setPerspectiveFov(fov: number, options?: {
|
|
279
|
+
adjustDistance?: boolean;
|
|
280
|
+
}): void;
|
|
273
281
|
switchToPerspectiveCamera(): void;
|
|
274
282
|
switchToOrthographicCamera(): void;
|
|
275
283
|
getCameraType(): CameraType;
|
|
276
284
|
getCameraPose(): ICameraPose;
|
|
277
285
|
restoreCameraPose(pose: ICameraPose): void;
|
|
286
|
+
/**
|
|
287
|
+
* 根据视图原点与视线方向设置相机(用于打开剖面视图等)
|
|
288
|
+
* @param origin 目标点坐标 {x, y, z}
|
|
289
|
+
* @param direction 视线方向(相机看向的方向){x, y, z},会做归一化
|
|
290
|
+
* @param distance 相机到目标点的距离,不传则根据场景包围盒自动计算
|
|
291
|
+
*/
|
|
292
|
+
setViewFromOriginAndDirection(origin: {
|
|
293
|
+
x: number;
|
|
294
|
+
y: number;
|
|
295
|
+
z: number;
|
|
296
|
+
}, direction: {
|
|
297
|
+
x: number;
|
|
298
|
+
y: number;
|
|
299
|
+
z: number;
|
|
300
|
+
}, distance?: number): void;
|
|
278
301
|
}
|
|
279
302
|
|
|
280
303
|
declare class CameraModule2d {
|
|
@@ -291,15 +314,36 @@ declare class CameraModule2d {
|
|
|
291
314
|
* 创建正交相机
|
|
292
315
|
*/
|
|
293
316
|
private createOrthographicCamera;
|
|
317
|
+
private animationId;
|
|
318
|
+
private animationStartTime;
|
|
319
|
+
private animationDuration;
|
|
320
|
+
private animationStartState;
|
|
321
|
+
private animationTargetState;
|
|
294
322
|
/**
|
|
295
323
|
* 适配视图到模型边界
|
|
296
324
|
* @param extents 模型边界 { min: [x, y, z], max: [x, y, z] }
|
|
297
325
|
* @param padding 边距(默认 1.2 = 20% 边距)
|
|
326
|
+
* @param animated 是否使用动画(默认 true)
|
|
327
|
+
* @param duration 动画时长(毫秒,默认 800)
|
|
298
328
|
*/
|
|
299
329
|
fitToExtents(extents: {
|
|
300
330
|
min: number[];
|
|
301
331
|
max: number[];
|
|
302
|
-
}, padding?: number): void;
|
|
332
|
+
}, padding?: number, animated?: boolean, duration?: number): void;
|
|
333
|
+
/**
|
|
334
|
+
* 缓动函数 - easeOutCubic
|
|
335
|
+
* @param t 进度 0-1
|
|
336
|
+
* @returns 缓动后的值
|
|
337
|
+
*/
|
|
338
|
+
private easeOutCubic;
|
|
339
|
+
/**
|
|
340
|
+
* 执行 fitToExtents 动画
|
|
341
|
+
*/
|
|
342
|
+
private animateFitToExtents;
|
|
343
|
+
/**
|
|
344
|
+
* 线性插值
|
|
345
|
+
*/
|
|
346
|
+
private lerp;
|
|
303
347
|
/**
|
|
304
348
|
* 设置缩放级别
|
|
305
349
|
* @param zoom 缩放级别
|
|
@@ -464,6 +508,21 @@ declare class Clipping {
|
|
|
464
508
|
recover(): void;
|
|
465
509
|
reverse(): void;
|
|
466
510
|
disActive(): void;
|
|
511
|
+
/**
|
|
512
|
+
* 按视图原点与视线方向设置剖面(用于打开剖面视图)
|
|
513
|
+
* 剖切面过 origin,法向指向相机侧,并生成与场景包围盒同大的剖切面
|
|
514
|
+
* @param origin 剖面上的点 {x, y, z}(与视图 Origin 一致)
|
|
515
|
+
* @param viewDirection 视线方向 {x, y, z}(与视图 ViewDirection 一致)
|
|
516
|
+
*/
|
|
517
|
+
setSectionByView(origin: {
|
|
518
|
+
x: number;
|
|
519
|
+
y: number;
|
|
520
|
+
z: number;
|
|
521
|
+
}, viewDirection: {
|
|
522
|
+
x: number;
|
|
523
|
+
y: number;
|
|
524
|
+
z: number;
|
|
525
|
+
}): void;
|
|
467
526
|
}
|
|
468
527
|
|
|
469
528
|
declare class ComposerModule {
|
|
@@ -819,6 +878,8 @@ declare interface Engine2dOptions {
|
|
|
819
878
|
selectionColor?: number;
|
|
820
879
|
highlightColor?: number;
|
|
821
880
|
enablePerformanceMonitoring?: boolean;
|
|
881
|
+
/** 自定义字体 TTF 文件 URL,支持中文等完整 Unicode 字符 */
|
|
882
|
+
fontUrl?: string;
|
|
822
883
|
}
|
|
823
884
|
|
|
824
885
|
/**
|
|
@@ -877,6 +938,9 @@ declare class EngineKernel2d {
|
|
|
877
938
|
private fpsLastCheck;
|
|
878
939
|
private currentFps;
|
|
879
940
|
private enablePerformanceMonitoring;
|
|
941
|
+
modelToolModule2d: ModelToolModule2d;
|
|
942
|
+
engineStatus2d: EngineStatus2d;
|
|
943
|
+
octreeBox2d: OctreeBox2d;
|
|
880
944
|
events: EventModule2d;
|
|
881
945
|
handelBehaved2d: any;
|
|
882
946
|
interactionModule2d: InteractionModule2d;
|
|
@@ -890,6 +954,9 @@ declare class EngineKernel2d {
|
|
|
890
954
|
themeManager: ThemeManager;
|
|
891
955
|
private cadCursorUI;
|
|
892
956
|
private contextMenuUI;
|
|
957
|
+
private loadingUI;
|
|
958
|
+
private linkView2d3d;
|
|
959
|
+
private linkElement2d3d;
|
|
893
960
|
scene: THREE.Scene | null;
|
|
894
961
|
camera: THREE.OrthographicCamera | null;
|
|
895
962
|
renderer: THREE.WebGLRenderer | null;
|
|
@@ -985,6 +1052,42 @@ declare class EngineKernel2d {
|
|
|
985
1052
|
* 调整渲染器尺寸
|
|
986
1053
|
*/
|
|
987
1054
|
resize(): void;
|
|
1055
|
+
/**
|
|
1056
|
+
* 将主 canvas 转换成图片
|
|
1057
|
+
* @param options 图片导出选项
|
|
1058
|
+
* @returns 图片信息(包含 Data URL 和 Blob URL)
|
|
1059
|
+
*/
|
|
1060
|
+
captureImage(options?: {
|
|
1061
|
+
format?: 'png' | 'jpeg' | 'webp';
|
|
1062
|
+
quality?: number;
|
|
1063
|
+
filename?: string;
|
|
1064
|
+
download?: boolean;
|
|
1065
|
+
transparent?: boolean;
|
|
1066
|
+
hideGrid?: boolean;
|
|
1067
|
+
hideAxes?: boolean;
|
|
1068
|
+
}): {
|
|
1069
|
+
dataURL: string;
|
|
1070
|
+
blobURL?: string;
|
|
1071
|
+
blob?: Blob;
|
|
1072
|
+
} | null;
|
|
1073
|
+
/**
|
|
1074
|
+
* 将主 canvas 转换成图片(异步版本,返回 Blob)
|
|
1075
|
+
* @param options 图片导出选项
|
|
1076
|
+
* @returns Promise,包含图片信息(Data URL、Blob URL 和 Blob)
|
|
1077
|
+
*/
|
|
1078
|
+
captureImageAsync(options?: {
|
|
1079
|
+
format?: 'png' | 'jpeg' | 'webp';
|
|
1080
|
+
quality?: number;
|
|
1081
|
+
filename?: string;
|
|
1082
|
+
download?: boolean;
|
|
1083
|
+
transparent?: boolean;
|
|
1084
|
+
hideGrid?: boolean;
|
|
1085
|
+
hideAxes?: boolean;
|
|
1086
|
+
}): Promise<{
|
|
1087
|
+
dataURL: string;
|
|
1088
|
+
blobURL: string;
|
|
1089
|
+
blob: Blob;
|
|
1090
|
+
} | null>;
|
|
988
1091
|
/**
|
|
989
1092
|
* 销毁引擎
|
|
990
1093
|
*/
|
|
@@ -1168,6 +1271,8 @@ declare class EngineKernelV2 {
|
|
|
1168
1271
|
stats?: default_2;
|
|
1169
1272
|
catchSvg: SVGSVGElement;
|
|
1170
1273
|
engineModelModule: EngineModelModule;
|
|
1274
|
+
viewTree: ViewTree;
|
|
1275
|
+
merge2d: Merge2d;
|
|
1171
1276
|
viewCube: ViewCube;
|
|
1172
1277
|
rangeScale: RangeScale;
|
|
1173
1278
|
setting: Setting;
|
|
@@ -1187,6 +1292,10 @@ declare class EngineKernelV2 {
|
|
|
1187
1292
|
text: Text_2;
|
|
1188
1293
|
hdr: Hdr;
|
|
1189
1294
|
ground: Ground;
|
|
1295
|
+
skyManager: SkyManager;
|
|
1296
|
+
linkElement2d3d: LinkElement2d3d;
|
|
1297
|
+
linkView2d3d: LinkView2d3d;
|
|
1298
|
+
oneClickEncoding: OneClickEncoding;
|
|
1190
1299
|
models: any[];
|
|
1191
1300
|
reactBoundingClientRect: {
|
|
1192
1301
|
left: number;
|
|
@@ -1357,6 +1466,17 @@ declare class EngineStatus {
|
|
|
1357
1466
|
closeAllFunction: () => void;
|
|
1358
1467
|
}
|
|
1359
1468
|
|
|
1469
|
+
declare class EngineStatus2d {
|
|
1470
|
+
private engine;
|
|
1471
|
+
isFree: boolean;
|
|
1472
|
+
highlightModels: any[];
|
|
1473
|
+
highlightHoverModels: any[];
|
|
1474
|
+
hideModels: any[];
|
|
1475
|
+
translucentModels: any[];
|
|
1476
|
+
models: any[];
|
|
1477
|
+
constructor(engine: any);
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1360
1480
|
/**
|
|
1361
1481
|
* 实体类型枚举
|
|
1362
1482
|
*/
|
|
@@ -1544,6 +1664,7 @@ declare enum EventType {
|
|
|
1544
1664
|
*/
|
|
1545
1665
|
declare enum EventType2d {
|
|
1546
1666
|
ModelLoadStart = "model-load-start",
|
|
1667
|
+
ModelLoadProgress = "model-load-progress",
|
|
1547
1668
|
ModelLoaded = "model-loaded",
|
|
1548
1669
|
ModelLoadError = "model-load-error",
|
|
1549
1670
|
RenderStart = "render-start",
|
|
@@ -1635,9 +1756,12 @@ declare class Ground {
|
|
|
1635
1756
|
private currentId;
|
|
1636
1757
|
private readonly groundGroup;
|
|
1637
1758
|
private groundMesh;
|
|
1638
|
-
|
|
1759
|
+
/** 当前为官方 Water 水面时为 true,用于 update/dispose 分支 */
|
|
1760
|
+
private isWaterAddon;
|
|
1639
1761
|
private readonly clock;
|
|
1640
1762
|
private groundY;
|
|
1763
|
+
/** 默认水面法线贴图路径(项目内为 public/textture/waternormals.jpg) */
|
|
1764
|
+
private static readonly DEFAULT_WATER_NORMALS;
|
|
1641
1765
|
private groundList;
|
|
1642
1766
|
constructor(engine: any);
|
|
1643
1767
|
init(): void;
|
|
@@ -1653,8 +1777,7 @@ declare class Ground {
|
|
|
1653
1777
|
setHeight(y: number): void;
|
|
1654
1778
|
/** 获取当前地面高度 */
|
|
1655
1779
|
getHeight(): number;
|
|
1656
|
-
|
|
1657
|
-
/** 每帧调用,驱动水面动画 */
|
|
1780
|
+
/** 每帧调用,驱动水面动画并与场景阳光/相机同步 */
|
|
1658
1781
|
update(): void;
|
|
1659
1782
|
/** 获取地面列表(id + 名称) */
|
|
1660
1783
|
getGroundList(): Array<{
|
|
@@ -1678,6 +1801,12 @@ declare interface GroundConfig {
|
|
|
1678
1801
|
sunDirection?: THREE.Vector3;
|
|
1679
1802
|
/** 水面透明度(默认 0.82) */
|
|
1680
1803
|
opacity?: number;
|
|
1804
|
+
/** 水面法线贴图 URL(默认使用 public 下的 waternormals.jpg) */
|
|
1805
|
+
waterNormalsUrl?: string;
|
|
1806
|
+
/** 水面反射扭曲强度,覆盖预设 */
|
|
1807
|
+
distortionScale?: number;
|
|
1808
|
+
/** 水面波纹密度(size uniform),覆盖预设 */
|
|
1809
|
+
waterSize?: number;
|
|
1681
1810
|
}
|
|
1682
1811
|
|
|
1683
1812
|
declare type GroundId = "0" | "1" | "2" | "3" | "4" | "5";
|
|
@@ -1863,7 +1992,9 @@ declare class InteractionModule2d {
|
|
|
1863
1992
|
init(): void;
|
|
1864
1993
|
active(): void;
|
|
1865
1994
|
disActive(): void;
|
|
1995
|
+
private oldId;
|
|
1866
1996
|
handleMouseMove(event: any): void;
|
|
1997
|
+
handelKeyEscDown(event: any): void;
|
|
1867
1998
|
handleMouseClick(event: any): void;
|
|
1868
1999
|
dispose(): void;
|
|
1869
2000
|
}
|
|
@@ -1940,7 +2071,7 @@ declare class Level {
|
|
|
1940
2071
|
constructor(engine: any);
|
|
1941
2072
|
private _initSvg;
|
|
1942
2073
|
/** 传入标高数据并渲染 */
|
|
1943
|
-
setData(data: LevelData[]): void;
|
|
2074
|
+
setData(data: LevelData[], box: any): void;
|
|
1944
2075
|
/** 使用内置模拟数据(调试用) */
|
|
1945
2076
|
setMockData(): void;
|
|
1946
2077
|
/** 显示标高 */
|
|
@@ -1989,6 +2120,24 @@ declare interface LinkAnnotationConfig {
|
|
|
1989
2120
|
metadata?: any;
|
|
1990
2121
|
}
|
|
1991
2122
|
|
|
2123
|
+
declare class LinkElement2d3d {
|
|
2124
|
+
private engine;
|
|
2125
|
+
constructor(engine: any);
|
|
2126
|
+
private active;
|
|
2127
|
+
private disActive;
|
|
2128
|
+
private readonly listenElementClick;
|
|
2129
|
+
}
|
|
2130
|
+
|
|
2131
|
+
declare class LinkView2d3d {
|
|
2132
|
+
private engine;
|
|
2133
|
+
constructor(engine: any);
|
|
2134
|
+
private active;
|
|
2135
|
+
private disActive;
|
|
2136
|
+
private readonly listenViewUpdate;
|
|
2137
|
+
private applyPosition;
|
|
2138
|
+
private applyRotation;
|
|
2139
|
+
}
|
|
2140
|
+
|
|
1992
2141
|
declare class LoaderModule {
|
|
1993
2142
|
private engine;
|
|
1994
2143
|
constructor(engine: any);
|
|
@@ -2037,6 +2186,8 @@ declare class LoaderModule2d {
|
|
|
2037
2186
|
private totalBlock;
|
|
2038
2187
|
private font;
|
|
2039
2188
|
private loadFont;
|
|
2189
|
+
/** 发射加载进度事件,让 UI 可以感知阶段变化 */
|
|
2190
|
+
private _emitProgress;
|
|
2040
2191
|
private buildScene;
|
|
2041
2192
|
private loadBlock;
|
|
2042
2193
|
private getPoint_polyline;
|
|
@@ -2115,6 +2266,36 @@ declare class Measure {
|
|
|
2115
2266
|
update(): void;
|
|
2116
2267
|
}
|
|
2117
2268
|
|
|
2269
|
+
/**
|
|
2270
|
+
* 生成与 boundingBox 同大的剖切面并贴到剖面上(仅负责平面 mesh 的创建与展示,剖切逻辑在 Clipping 中)
|
|
2271
|
+
*/
|
|
2272
|
+
declare class Merge2d {
|
|
2273
|
+
private engine;
|
|
2274
|
+
private sectionPlaneGroup;
|
|
2275
|
+
private loaderModule2d;
|
|
2276
|
+
constructor(engine: any);
|
|
2277
|
+
/**
|
|
2278
|
+
* 根据剖切面原点与视线方向,生成与场景 boundingBox 同大的平面 mesh 并添加到场景(贴到剖面上)
|
|
2279
|
+
* @param origin 剖面上的点 {x, y, z}
|
|
2280
|
+
* @param viewDirection 视线方向 {x, y, z},剖切面法向取反后指向相机侧
|
|
2281
|
+
*/
|
|
2282
|
+
attachSectionPlane(url: string, viewId: string, origin: {
|
|
2283
|
+
x: number;
|
|
2284
|
+
y: number;
|
|
2285
|
+
z: number;
|
|
2286
|
+
}, viewDirection: {
|
|
2287
|
+
x: number;
|
|
2288
|
+
y: number;
|
|
2289
|
+
z: number;
|
|
2290
|
+
}): Promise<void>;
|
|
2291
|
+
/**
|
|
2292
|
+
* 移除由 attachSectionPlane 添加的剖切面平面
|
|
2293
|
+
*/
|
|
2294
|
+
removeSectionPlane(): void;
|
|
2295
|
+
private getMatrix;
|
|
2296
|
+
computeMatrixFromOriginAndDirection(origin: any, direction: any): THREE.Matrix4;
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2118
2299
|
/**
|
|
2119
2300
|
* 大模型API调用封装 - 简化版
|
|
2120
2301
|
* 使用浏览器原生 fetch API,支持 OpenAI 兼容格式
|
|
@@ -2214,6 +2395,7 @@ declare class ModelProperties {
|
|
|
2214
2395
|
private engine;
|
|
2215
2396
|
constructor(engine: any);
|
|
2216
2397
|
init(): void;
|
|
2398
|
+
getModelPropertiesWithName(url: string, id: string, names: [], callback: (properties: any) => void): void;
|
|
2217
2399
|
getModelProperties(url: string, id: string, callback: (properties: any) => void): void;
|
|
2218
2400
|
}
|
|
2219
2401
|
|
|
@@ -2225,6 +2407,7 @@ declare class ModelToolModule {
|
|
|
2225
2407
|
constructor(engine_: any);
|
|
2226
2408
|
split_merge_model(model: any): void;
|
|
2227
2409
|
un_split_merge_model(model: any): void;
|
|
2410
|
+
getSceneModel(index: number): any;
|
|
2228
2411
|
highlightModel(models: any): void;
|
|
2229
2412
|
unhighlightModel(models: any): void;
|
|
2230
2413
|
unhighlightAllModels(isClear?: boolean): void;
|
|
@@ -2243,6 +2426,28 @@ declare class ModelToolModule {
|
|
|
2243
2426
|
batchSelectSameTypeModel(models: any[]): void;
|
|
2244
2427
|
}
|
|
2245
2428
|
|
|
2429
|
+
declare class ModelToolModule2d {
|
|
2430
|
+
private engine;
|
|
2431
|
+
private highlightMaterial;
|
|
2432
|
+
private hideMaterial;
|
|
2433
|
+
private translucentMaterial;
|
|
2434
|
+
constructor(engine_: any);
|
|
2435
|
+
split_merge_model(model: any): void;
|
|
2436
|
+
un_split_merge_model(model: any): void;
|
|
2437
|
+
highlightModelHover(models: any[]): void;
|
|
2438
|
+
unHighlightModelHover(): void;
|
|
2439
|
+
highlightModel(models: any): void;
|
|
2440
|
+
unhighlightModel(models: any): void;
|
|
2441
|
+
unhighlightAllModels(isClear?: boolean): void;
|
|
2442
|
+
hideModel(models: any): void;
|
|
2443
|
+
showModel(models: any): void;
|
|
2444
|
+
showAllModels(): void;
|
|
2445
|
+
highLightRenderLine(ps: []): void;
|
|
2446
|
+
unhighLightRenderLine(): void;
|
|
2447
|
+
highLightRenderLineHover(ps: []): void;
|
|
2448
|
+
unhighLightRenderLineHover(): void;
|
|
2449
|
+
}
|
|
2450
|
+
|
|
2246
2451
|
declare class ModelTree {
|
|
2247
2452
|
private engine;
|
|
2248
2453
|
constructor(engine: any);
|
|
@@ -2251,6 +2456,26 @@ declare class ModelTree {
|
|
|
2251
2456
|
getMajorTreeData(): any[];
|
|
2252
2457
|
}
|
|
2253
2458
|
|
|
2459
|
+
declare class OctreeBox2d {
|
|
2460
|
+
private engine;
|
|
2461
|
+
private pickBoxElementIds;
|
|
2462
|
+
private worldToScreen;
|
|
2463
|
+
constructor(engine: any);
|
|
2464
|
+
init(): void;
|
|
2465
|
+
pick2d(rayCaster: any, event: any): any;
|
|
2466
|
+
RecurrentIteration(rayCaster: any, box: any): void;
|
|
2467
|
+
}
|
|
2468
|
+
|
|
2469
|
+
declare class OneClickEncoding {
|
|
2470
|
+
private engine;
|
|
2471
|
+
private readonly apiKey;
|
|
2472
|
+
private readonly baseURL;
|
|
2473
|
+
constructor(engine: any, apiKey?: string);
|
|
2474
|
+
private start;
|
|
2475
|
+
startChat(url: string, str: string): Promise<void>;
|
|
2476
|
+
chat(str: string): Promise<any>;
|
|
2477
|
+
}
|
|
2478
|
+
|
|
2254
2479
|
declare class Pan2dControls extends THREE.EventDispatcher {
|
|
2255
2480
|
object: THREE.OrthographicCamera;
|
|
2256
2481
|
domElement: HTMLElement;
|
|
@@ -3187,6 +3412,95 @@ declare class Setting {
|
|
|
3187
3412
|
setHDRBackground(hdrTexture: THREE.Texture | null): void;
|
|
3188
3413
|
}
|
|
3189
3414
|
|
|
3415
|
+
declare class SkyManager {
|
|
3416
|
+
private engine;
|
|
3417
|
+
private sky;
|
|
3418
|
+
private sun;
|
|
3419
|
+
private params;
|
|
3420
|
+
private readonly skyScale;
|
|
3421
|
+
private readonly skyName;
|
|
3422
|
+
/** 激活天空前相机的 far,关闭时恢复 */
|
|
3423
|
+
private savedCameraFar;
|
|
3424
|
+
constructor(engine: any);
|
|
3425
|
+
/**
|
|
3426
|
+
* 激活天空球:创建 Sky 并加入场景,应用当前参数
|
|
3427
|
+
*/
|
|
3428
|
+
activate(): void;
|
|
3429
|
+
/**
|
|
3430
|
+
* 关闭天空球:从场景移除并释放,或仅隐藏
|
|
3431
|
+
* @param remove - true 从场景移除并 dispose,false 仅隐藏
|
|
3432
|
+
*/
|
|
3433
|
+
close(remove?: boolean): void;
|
|
3434
|
+
/**
|
|
3435
|
+
* 是否已激活(天空对象存在且已加入场景)
|
|
3436
|
+
*/
|
|
3437
|
+
isActive(): boolean;
|
|
3438
|
+
/**
|
|
3439
|
+
* 获取当前参数(副本)
|
|
3440
|
+
*/
|
|
3441
|
+
getParams(): Readonly<Required<SkyParams>>;
|
|
3442
|
+
/**
|
|
3443
|
+
* 使用对象设置参数(支持部分字段),并立即应用到天空与渲染器
|
|
3444
|
+
*/
|
|
3445
|
+
setParams(params: SkyParams): void;
|
|
3446
|
+
/**
|
|
3447
|
+
* 应用预设
|
|
3448
|
+
*/
|
|
3449
|
+
setPreset(name: SkyPresetName): void;
|
|
3450
|
+
/**
|
|
3451
|
+
* 获取所有预设名称
|
|
3452
|
+
*/
|
|
3453
|
+
getPresetNames(): SkyPresetName[];
|
|
3454
|
+
/**
|
|
3455
|
+
* 更新云层动画时间(每帧调用一次,例如在渲染循环中)
|
|
3456
|
+
* 同时根据当前相机类型(透视/正交)同步曝光,保证切换相机后天空亮度正确。
|
|
3457
|
+
* @param time - 秒,不传则使用 performance.now() * 0.001
|
|
3458
|
+
*/
|
|
3459
|
+
update(time?: number): void;
|
|
3460
|
+
/** 当前相机是否为正交相机 */
|
|
3461
|
+
private _isOrthographicCamera;
|
|
3462
|
+
/** 获取当前相机有效曝光(正交相机使用 orthoExposureScale 补偿) */
|
|
3463
|
+
private _getEffectiveExposure;
|
|
3464
|
+
/** 扩大相机 far 以容纳天空盒,避免被裁剪成黑屏(支持透视与正交) */
|
|
3465
|
+
private _expandCameraFarForSky;
|
|
3466
|
+
/** 关闭天空时恢复相机 far(支持透视与正交) */
|
|
3467
|
+
private _restoreCameraFar;
|
|
3468
|
+
private _applyParamsToSky;
|
|
3469
|
+
/** Set shader uniform if it exists on current Sky material to avoid runtime errors with stock shader. */
|
|
3470
|
+
private _setUniformValue;
|
|
3471
|
+
}
|
|
3472
|
+
|
|
3473
|
+
/** 天空球参数(与 Three.js Sky 材质 uniform 及曝光对应) */
|
|
3474
|
+
declare interface SkyParams {
|
|
3475
|
+
/** 大气浑浊度,0~20,默认 10 */
|
|
3476
|
+
turbidity?: number;
|
|
3477
|
+
/** 瑞利散射,0~4,默认 3 */
|
|
3478
|
+
rayleigh?: number;
|
|
3479
|
+
/** Mie 系数,0~0.1,默认 0.005 */
|
|
3480
|
+
mieCoefficient?: number;
|
|
3481
|
+
/** Mie 方向性,0~1,默认 0.7 */
|
|
3482
|
+
mieDirectionalG?: number;
|
|
3483
|
+
/** 太阳仰角(度),0~90,默认 2 */
|
|
3484
|
+
elevation?: number;
|
|
3485
|
+
/** 太阳方位角(度),-180~180,默认 180 */
|
|
3486
|
+
azimuth?: number;
|
|
3487
|
+
/** 渲染器曝光,0~1,默认 0.5 */
|
|
3488
|
+
exposure?: number;
|
|
3489
|
+
/** 正交相机下的曝光倍数,用于补偿正交投影下天空偏暗,默认 1.5 */
|
|
3490
|
+
orthoExposureScale?: number;
|
|
3491
|
+
/** 云层覆盖,0~1,默认 0.4 */
|
|
3492
|
+
cloudCoverage?: number;
|
|
3493
|
+
/** 云层密度,0~1,默认 0.4 */
|
|
3494
|
+
cloudDensity?: number;
|
|
3495
|
+
/** 云层高度感,0~1,默认 0.5 */
|
|
3496
|
+
cloudElevation?: number;
|
|
3497
|
+
/** 是否显示日盘,默认 true */
|
|
3498
|
+
showSunDisc?: boolean;
|
|
3499
|
+
}
|
|
3500
|
+
|
|
3501
|
+
/** 预设名称 */
|
|
3502
|
+
declare type SkyPresetName = 'default' | 'sunset' | 'overcast' | 'clear' | 'night';
|
|
3503
|
+
|
|
3190
3504
|
/**
|
|
3191
3505
|
* 步骤接口
|
|
3192
3506
|
*/
|
|
@@ -3256,11 +3570,19 @@ declare class ViewCube {
|
|
|
3256
3570
|
cubeTool: any;
|
|
3257
3571
|
constructor(engine: any);
|
|
3258
3572
|
init(): void;
|
|
3259
|
-
CameraGoHome(): void;
|
|
3573
|
+
CameraGoHome(time: number): void;
|
|
3260
3574
|
zoomToModel(box: any): void;
|
|
3575
|
+
zoomToModels(m: any): void;
|
|
3261
3576
|
hide(): void;
|
|
3262
3577
|
}
|
|
3263
3578
|
|
|
3579
|
+
declare class ViewTree {
|
|
3580
|
+
private engine;
|
|
3581
|
+
constructor(engine: any);
|
|
3582
|
+
getViewTreeData(url: string): any;
|
|
3583
|
+
openView(url: string, viewId: string): void;
|
|
3584
|
+
}
|
|
3585
|
+
|
|
3264
3586
|
/**
|
|
3265
3587
|
* 世界坐标与屏幕坐标转换工具类
|
|
3266
3588
|
* 提供世界坐标(3D空间坐标)与屏幕坐标(2D像素坐标)之间的双向转换功能
|