fl-web-component 1.3.5 → 1.3.6
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 +2 -1
- package/dist/fl-web-component.common.js +33 -33
- package/dist/fl-web-component.common.js.map +1 -1
- package/dist/fl-web-component.css +1 -1
- package/package.json +1 -1
- package/packages/components/com-graphics/index.vue +68 -66
- package/src/static/DXF.svg +530 -0
- package/src/utils/index.js +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";#fl-model[data-v-
|
|
1
|
+
@charset "UTF-8";#fl-model[data-v-2d99390c]{width:100%;height:100%;cursor:pointer}[data-v-2d99390c] .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-2d99390c] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-2d99390c] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-2d99390c] .measure-label-font{word-break:break-all}[data-v-2d99390c] .mark-label-img{padding-top:5px;width:20px;height:20px}#konva-container[data-v-32dc6e8c]{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:flex;flex-direction:column;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:flex;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}#svg-tigger[data-v-0ec35ee4]{cursor:pointer;height:100%;width:100%}
|
package/package.json
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
outlineComposer,
|
|
27
27
|
renderTarget,
|
|
28
28
|
sceneClock,
|
|
29
|
-
mat4
|
|
29
|
+
mat4,
|
|
30
30
|
] = (function* (v) {
|
|
31
31
|
while (true) yield v;
|
|
32
32
|
})(null);
|
|
@@ -166,10 +166,10 @@
|
|
|
166
166
|
renderer.outputEncoding = this.THREE.sRGBEncoding;
|
|
167
167
|
instructions.appendChild(renderer.domElement);
|
|
168
168
|
renderer.setClearAlpha(0);
|
|
169
|
-
|
|
169
|
+
|
|
170
170
|
// 与校审截图功能冲突,暂时先注释掉
|
|
171
171
|
// -----------
|
|
172
|
-
// renderer.autoClear = false;
|
|
172
|
+
// renderer.autoClear = false;
|
|
173
173
|
// renderer.autoClearColor = false;
|
|
174
174
|
// renderer.autoClearDepth = false;
|
|
175
175
|
// renderer.autoClearStencil = false;
|
|
@@ -226,7 +226,8 @@
|
|
|
226
226
|
}
|
|
227
227
|
const { instances, drawObjs } = parseData(data);
|
|
228
228
|
if (instances.length > 0) {
|
|
229
|
-
handleInstancedMeshModel(
|
|
229
|
+
handleInstancedMeshModel(
|
|
230
|
+
modelGroup,
|
|
230
231
|
instances,
|
|
231
232
|
drawObjs,
|
|
232
233
|
'',
|
|
@@ -278,8 +279,8 @@
|
|
|
278
279
|
});
|
|
279
280
|
// cameraControls.fitToSphere(scene, true); // TODO 待处理,先用 setModelCenter 进行定位
|
|
280
281
|
this.setModelCenter(modelGroup);
|
|
281
|
-
console.log(modelGroup)
|
|
282
|
-
this.$emit('modelLoaded')
|
|
282
|
+
console.log(modelGroup);
|
|
283
|
+
this.$emit('modelLoaded');
|
|
283
284
|
// cameraControls.saveState();
|
|
284
285
|
}
|
|
285
286
|
},
|
|
@@ -302,14 +303,15 @@
|
|
|
302
303
|
event,
|
|
303
304
|
firstTime,
|
|
304
305
|
};
|
|
305
|
-
intersects.length &&
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
306
|
+
intersects.length &&
|
|
307
|
+
(params.v3Position = {
|
|
308
|
+
x: intersects[0].point.x,
|
|
309
|
+
y: intersects[0].point.y,
|
|
310
|
+
z: intersects[0].point.z,
|
|
311
|
+
});
|
|
310
312
|
this.$emit('leftMouseDown', params);
|
|
311
313
|
},
|
|
312
|
-
getRaycasterObjects(event){
|
|
314
|
+
getRaycasterObjects(event) {
|
|
313
315
|
// 获取元素在页面中的偏移位置
|
|
314
316
|
const rect = renderer.domElement.getBoundingClientRect();
|
|
315
317
|
const x = event.clientX - rect.left;
|
|
@@ -548,7 +550,7 @@
|
|
|
548
550
|
} else if (obj.isMesh) {
|
|
549
551
|
let center = this.getCenter(obj);
|
|
550
552
|
let size = this.getSize(obj);
|
|
551
|
-
this.locateByCenterBox(center, size)
|
|
553
|
+
this.locateByCenterBox(center, size);
|
|
552
554
|
}
|
|
553
555
|
}
|
|
554
556
|
},
|
|
@@ -621,7 +623,7 @@
|
|
|
621
623
|
Math.abs((maxDim * 1.0) / Math.sin(fov / 2))
|
|
622
624
|
);
|
|
623
625
|
let direction = new this.THREE.Vector3(1, 1, 1).normalize();
|
|
624
|
-
let p =
|
|
626
|
+
let p = new this.THREE.Vector3().copy(center).add(direction.multiplyScalar(distance));
|
|
625
627
|
let cameraCenter = new this.THREE.Vector3(p.x, p.y, p.z).addScalar(
|
|
626
628
|
Math.max(size.x, size.y, size.z)
|
|
627
629
|
);
|
|
@@ -693,19 +695,19 @@
|
|
|
693
695
|
},
|
|
694
696
|
// 删除场景中所有的实体
|
|
695
697
|
removeAll() {
|
|
696
|
-
return new Promise(
|
|
698
|
+
return new Promise(resolve => {
|
|
697
699
|
if (scene) {
|
|
698
|
-
this.removeTraverse()
|
|
699
|
-
resolve()
|
|
700
|
+
this.removeTraverse();
|
|
701
|
+
resolve();
|
|
700
702
|
} else {
|
|
701
|
-
resolve()
|
|
703
|
+
resolve();
|
|
702
704
|
}
|
|
703
|
-
})
|
|
705
|
+
});
|
|
704
706
|
},
|
|
705
707
|
removeTraverse() {
|
|
706
|
-
let length = modelGroup.children.length
|
|
708
|
+
let length = modelGroup.children.length;
|
|
707
709
|
if (length > 0) {
|
|
708
|
-
let list = modelGroup.children[0]
|
|
710
|
+
let list = modelGroup.children[0];
|
|
709
711
|
list.traverse(item => {
|
|
710
712
|
if (item.isMesh) {
|
|
711
713
|
item.material.dispose();
|
|
@@ -1075,7 +1077,7 @@
|
|
|
1075
1077
|
});
|
|
1076
1078
|
},
|
|
1077
1079
|
// 开启第一视角
|
|
1078
|
-
startFirstPer({moveSpeed = 200, jumpSpeed = 200}) {
|
|
1080
|
+
startFirstPer({ moveSpeed = 200, jumpSpeed = 200 }) {
|
|
1079
1081
|
removeSpeed = moveSpeed;
|
|
1080
1082
|
upSpeed = jumpSpeed;
|
|
1081
1083
|
|
|
@@ -1478,7 +1480,7 @@
|
|
|
1478
1480
|
let center = new this.THREE.Vector3();
|
|
1479
1481
|
obj.boundingBox.getCenter(center);
|
|
1480
1482
|
if (obj.userData.is3D) {
|
|
1481
|
-
center.applyMatrix4(mat4)
|
|
1483
|
+
center.applyMatrix4(mat4);
|
|
1482
1484
|
}
|
|
1483
1485
|
return center;
|
|
1484
1486
|
},
|
|
@@ -1486,7 +1488,7 @@
|
|
|
1486
1488
|
let size = new this.THREE.Vector3();
|
|
1487
1489
|
obj.boundingBox.getSize(size);
|
|
1488
1490
|
if (obj.userData.is3D) {
|
|
1489
|
-
size.applyMatrix4(mat4)
|
|
1491
|
+
size.applyMatrix4(mat4);
|
|
1490
1492
|
}
|
|
1491
1493
|
return size;
|
|
1492
1494
|
},
|
|
@@ -1515,21 +1517,21 @@
|
|
|
1515
1517
|
},
|
|
1516
1518
|
// 暴露个别参数让业务自己做特殊业务。
|
|
1517
1519
|
// 后续若多个业务有相同使用场景,再抽象至公共组件中。
|
|
1518
|
-
exportParmas(){
|
|
1520
|
+
exportParmas() {
|
|
1519
1521
|
return {
|
|
1520
1522
|
renderer,
|
|
1521
1523
|
camera,
|
|
1522
1524
|
cameraControls,
|
|
1523
1525
|
scene,
|
|
1524
|
-
}
|
|
1526
|
+
};
|
|
1525
1527
|
},
|
|
1526
1528
|
setMouseAction(btn) {
|
|
1527
1529
|
const ACTION_ENUM = {
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
}
|
|
1532
|
-
const {left, right} = btn;
|
|
1530
|
+
none: 0,
|
|
1531
|
+
rotate: 1,
|
|
1532
|
+
drag: 2,
|
|
1533
|
+
};
|
|
1534
|
+
const { left, right } = btn;
|
|
1533
1535
|
|
|
1534
1536
|
left && (cameraControls.mouseButtons.left = ACTION_ENUM[left]);
|
|
1535
1537
|
right && (cameraControls.mouseButtons.right = ACTION_ENUM[right]);
|
|
@@ -1544,41 +1546,41 @@
|
|
|
1544
1546
|
cursor: pointer;
|
|
1545
1547
|
}
|
|
1546
1548
|
::v-deep .tips-label {
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
}
|
|
1549
|
+
width: 60px;
|
|
1550
|
+
color: #000;
|
|
1551
|
+
font: 12px Helvetica;
|
|
1552
|
+
margin-top: -3em;
|
|
1553
|
+
padding: 5px;
|
|
1554
|
+
text-align: center;
|
|
1555
|
+
vertical-align: middle;
|
|
1556
|
+
background-color: khaki;
|
|
1557
|
+
}
|
|
1556
1558
|
|
|
1557
|
-
::v-deep .measure-label {
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
}
|
|
1568
|
-
::v-deep .circle-tag {
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
}
|
|
1575
|
-
::v-deep .measure-label-font {
|
|
1576
|
-
|
|
1577
|
-
}
|
|
1559
|
+
::v-deep .measure-label {
|
|
1560
|
+
max-width: 100px;
|
|
1561
|
+
margin-top: -1em;
|
|
1562
|
+
border: 10px;
|
|
1563
|
+
border-radius: 5px;
|
|
1564
|
+
padding: 3px 10px;
|
|
1565
|
+
cursor: pointer;
|
|
1566
|
+
color: rgb(0, 155, 234);
|
|
1567
|
+
background-color: rgb(244, 244, 244);
|
|
1568
|
+
box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.25);
|
|
1569
|
+
}
|
|
1570
|
+
::v-deep .circle-tag {
|
|
1571
|
+
width: 10px;
|
|
1572
|
+
height: 10px;
|
|
1573
|
+
margin-top: 5px;
|
|
1574
|
+
border-radius: 50%;
|
|
1575
|
+
background-color: #ff5000;
|
|
1576
|
+
}
|
|
1577
|
+
::v-deep .measure-label-font {
|
|
1578
|
+
word-break: break-all;
|
|
1579
|
+
}
|
|
1578
1580
|
|
|
1579
|
-
::v-deep .mark-label-img {
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
}
|
|
1581
|
+
::v-deep .mark-label-img {
|
|
1582
|
+
padding-top: 5px;
|
|
1583
|
+
width: 20px;
|
|
1584
|
+
height: 20px;
|
|
1585
|
+
}
|
|
1584
1586
|
</style>
|