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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/fl-web-component.common.js +4417 -687
  2. package/dist/fl-web-component.common.js.map +1 -1
  3. package/dist/fl-web-component.css +1 -1
  4. package/package.json +1 -1
  5. package/packages/components/com-flcanvas/components/entityFormatting.js +134 -1
  6. package/packages/components/com-flcanvas/index.vue +335 -239
  7. package/packages/components/com-graphics/index.vue +333 -24
  8. package/src/utils/dxf-parser/AutoCadColorIndex.js +265 -0
  9. package/src/utils/dxf-parser/DimStyleCodes.js +33 -0
  10. package/src/utils/dxf-parser/DxfArrayScanner.js +151 -0
  11. package/src/utils/dxf-parser/DxfParser.js +918 -0
  12. package/src/utils/dxf-parser/ExtendedDataParser.js +117 -0
  13. package/src/utils/dxf-parser/LICENSE +21 -0
  14. package/src/utils/dxf-parser/ParseHelpers.js +140 -0
  15. package/src/utils/dxf-parser/README.md +8 -0
  16. package/src/utils/dxf-parser/entities/3dface.js +83 -0
  17. package/src/utils/dxf-parser/entities/arc.js +38 -0
  18. package/src/utils/dxf-parser/entities/attdef.js +89 -0
  19. package/src/utils/dxf-parser/entities/attribute.js +109 -0
  20. package/src/utils/dxf-parser/entities/circle.js +43 -0
  21. package/src/utils/dxf-parser/entities/dimension.js +71 -0
  22. package/src/utils/dxf-parser/entities/ellipse.js +48 -0
  23. package/src/utils/dxf-parser/entities/hatch.js +348 -0
  24. package/src/utils/dxf-parser/entities/insert.js +57 -0
  25. package/src/utils/dxf-parser/entities/line.js +34 -0
  26. package/src/utils/dxf-parser/entities/lwpolyline.js +103 -0
  27. package/src/utils/dxf-parser/entities/mtext.js +57 -0
  28. package/src/utils/dxf-parser/entities/point.js +35 -0
  29. package/src/utils/dxf-parser/entities/polyline.js +92 -0
  30. package/src/utils/dxf-parser/entities/solid.js +40 -0
  31. package/src/utils/dxf-parser/entities/spline.js +70 -0
  32. package/src/utils/dxf-parser/entities/text.js +50 -0
  33. package/src/utils/dxf-parser/entities/vertex.js +62 -0
  34. package/src/utils/threejs/measure-clear-distance.js +1 -1
@@ -0,0 +1,57 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+
4
+ export default function EntityParser() {}
5
+
6
+ EntityParser.ForEntityName = 'MTEXT';
7
+
8
+ EntityParser.prototype.parseEntity = function(scanner, curr) {
9
+ var entity = { type: curr.value };
10
+ curr = scanner.next();
11
+ while(curr !== 'EOF') {
12
+ if(curr.code === 0) break;
13
+
14
+ switch(curr.code) {
15
+ case 3:
16
+ case 1:
17
+ entity.text ? entity.text += curr.value : entity.text = curr.value;
18
+ break;
19
+ case 10:
20
+ entity.position = helpers.parsePoint(scanner);
21
+ break;
22
+ case 11:
23
+ entity.direction = helpers.parsePoint(scanner);
24
+ break;
25
+ case 40:
26
+ //Note: this is the text height
27
+ entity.height = curr.value;
28
+ break;
29
+ case 41:
30
+ entity.width = curr.value;
31
+ break;
32
+ case 44:
33
+ entity.lineSpacing = curr.value;
34
+ break;
35
+ case 50:
36
+ entity.rotation = curr.value;
37
+ break;
38
+ case 7: // Text style name
39
+ entity.styleName = curr.value;
40
+ break;
41
+ case 71:
42
+ entity.attachmentPoint = curr.value;
43
+ break;
44
+ case 72:
45
+ entity.drawingDirection = curr.value;
46
+ break;
47
+ case 101:
48
+ helpers.skipEmbeddedObject(scanner);
49
+ break;
50
+ default:
51
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
52
+ break;
53
+ }
54
+ curr = scanner.next();
55
+ }
56
+ return entity;
57
+ };
@@ -0,0 +1,35 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+
4
+ export default function EntityParser() {}
5
+
6
+ EntityParser.ForEntityName = 'POINT';
7
+
8
+ EntityParser.prototype.parseEntity = function(scanner, curr) {
9
+ var entity;
10
+ entity = { type: curr.value };
11
+ curr = scanner.next();
12
+ while(curr !== 'EOF') {
13
+ if(curr.code === 0) break;
14
+
15
+ switch(curr.code) {
16
+ case 10:
17
+ entity.position = helpers.parsePoint(scanner);
18
+ break;
19
+ case 39:
20
+ entity.thickness = curr.value;
21
+ break;
22
+ case 210:
23
+ entity.extrusionDirection = helpers.parsePoint(scanner);
24
+ break;
25
+ case 100:
26
+ break;
27
+ default: // check common entity attributes
28
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
29
+ break;
30
+ }
31
+ curr = scanner.next();
32
+ }
33
+
34
+ return entity;
35
+ };
@@ -0,0 +1,92 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+ import VertexParser from "./vertex.js";
4
+
5
+ export default function EntityParser() {}
6
+
7
+ EntityParser.ForEntityName = 'POLYLINE';
8
+
9
+ EntityParser.prototype.parseEntity = function(scanner, curr) {
10
+ var entity = { type: curr.value, vertices: [] };
11
+ curr = scanner.next();
12
+ while(curr !== 'EOF') {
13
+ if(curr.code === 0) break;
14
+
15
+ switch(curr.code) {
16
+ case 10: // always 0
17
+ break;
18
+ case 20: // always 0
19
+ break;
20
+ case 30: // elevation
21
+ break;
22
+ case 39: // thickness
23
+ entity.thickness = curr.value;
24
+ break;
25
+ case 40: // start width
26
+ break;
27
+ case 41: // end width
28
+ break;
29
+ case 70:
30
+ entity.shape = (curr.value & 1) !== 0;
31
+ entity.includesCurveFitVertices = (curr.value & 2) !== 0;
32
+ entity.includesSplineFitVertices = (curr.value & 4) !== 0;
33
+ entity.is3dPolyline = (curr.value & 8) !== 0;
34
+ entity.is3dPolygonMesh = (curr.value & 16) !== 0;
35
+ entity.is3dPolygonMeshClosed = (curr.value & 32) !== 0; // 32 = The polygon mesh is closed in the N direction
36
+ entity.isPolyfaceMesh = (curr.value & 64) !== 0;
37
+ entity.hasContinuousLinetypePattern = (curr.value & 128) !== 0;
38
+ break;
39
+ case 71: // Polygon mesh M vertex count
40
+ break;
41
+ case 72: // Polygon mesh N vertex count
42
+ break;
43
+ case 73: // Smooth surface M density
44
+ break;
45
+ case 74: // Smooth surface N density
46
+ break;
47
+ case 75: // Curves and smooth surface type
48
+ break;
49
+ case 210:
50
+ entity.extrusionDirection = helpers.parsePoint(scanner);
51
+ break;
52
+ default:
53
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
54
+ break;
55
+ }
56
+ curr = scanner.next();
57
+ }
58
+
59
+ entity.vertices = parsePolylineVertices(scanner, curr);
60
+
61
+ return entity;
62
+ };
63
+
64
+ function parsePolylineVertices(scanner, curr) {
65
+ var vertexParser = new VertexParser();
66
+
67
+ var vertices = [];
68
+ while (!scanner.isEOF()) {
69
+ if (curr.code === 0) {
70
+ if (curr.value === 'VERTEX') {
71
+ vertices.push(vertexParser.parseEntity(scanner, curr));
72
+ curr = scanner.lastReadGroup;
73
+ } else if (curr.value === 'SEQEND') {
74
+ parseSeqEnd(scanner, curr);
75
+ break;
76
+ }
77
+ }
78
+ }
79
+ return vertices;
80
+ };
81
+
82
+ function parseSeqEnd(scanner, curr) {
83
+ var entity = { type: curr.value };
84
+ curr = scanner.next();
85
+ while(curr != 'EOF') {
86
+ if (curr.code == 0) break;
87
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
88
+ curr = scanner.next();
89
+ }
90
+
91
+ return entity;
92
+ };
@@ -0,0 +1,40 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+
4
+ export default function EntityParser() {}
5
+
6
+ EntityParser.ForEntityName = 'SOLID';
7
+
8
+ EntityParser.prototype.parseEntity = function(scanner, currentGroup) {
9
+ var entity;
10
+ entity = { type: currentGroup.value };
11
+ entity.points = [];
12
+ currentGroup = scanner.next();
13
+ while(currentGroup !== 'EOF') {
14
+ if(currentGroup.code === 0) break;
15
+
16
+ switch(currentGroup.code) {
17
+ case 10:
18
+ entity.points[0] = helpers.parsePoint(scanner);
19
+ break;
20
+ case 11:
21
+ entity.points[1] = helpers.parsePoint(scanner);
22
+ break;
23
+ case 12:
24
+ entity.points[2] = helpers.parsePoint(scanner);
25
+ break;
26
+ case 13:
27
+ entity.points[3] = helpers.parsePoint(scanner);
28
+ break;
29
+ case 210:
30
+ entity.extrusionDirection = helpers.parsePoint(scanner);
31
+ break;
32
+ default: // check common entity attributes
33
+ helpers.checkCommonEntityProperties(entity, currentGroup, scanner);
34
+ break;
35
+ }
36
+ currentGroup = scanner.next();
37
+ }
38
+
39
+ return entity;
40
+ };
@@ -0,0 +1,70 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+
4
+ export default function EntityParser() {}
5
+
6
+ EntityParser.ForEntityName = 'SPLINE';
7
+
8
+ EntityParser.prototype.parseEntity = function(scanner, curr) {
9
+ var entity;
10
+ entity = { type: curr.value };
11
+ curr = scanner.next();
12
+ while(curr !== 'EOF')
13
+ {
14
+ if(curr.code === 0) break;
15
+
16
+ switch(curr.code) {
17
+ case 10:
18
+ if (!entity.controlPoints) entity.controlPoints = [];
19
+ entity.controlPoints.push(helpers.parsePoint(scanner));
20
+ break;
21
+ case 11:
22
+ if (!entity.fitPoints) entity.fitPoints = [];
23
+ entity.fitPoints.push(helpers.parsePoint(scanner));
24
+ break;
25
+ case 12:
26
+ entity.startTangent = helpers.parsePoint(scanner);
27
+ break;
28
+ case 13:
29
+ entity.endTangent = helpers.parsePoint(scanner);
30
+ break;
31
+ case 40:
32
+ if (!entity.knotValues) entity.knotValues = [];
33
+ entity.knotValues.push(curr.value);
34
+ break;
35
+ case 70:
36
+ if ((curr.value & 1) != 0) entity.closed = true;
37
+ if ((curr.value & 2) != 0) entity.periodic = true;
38
+ if ((curr.value & 4) != 0) entity.rational = true;
39
+ if ((curr.value & 8) != 0) entity.planar = true;
40
+ if ((curr.value & 16) != 0)
41
+ {
42
+ entity.planar = true;
43
+ entity.linear = true;
44
+ }
45
+ break;
46
+
47
+ case 71:
48
+ entity.degreeOfSplineCurve = curr.value;
49
+ break;
50
+ case 72:
51
+ entity.numberOfKnots = curr.value;
52
+ break;
53
+ case 73:
54
+ entity.numberOfControlPoints = curr.value;
55
+ break;
56
+ case 74:
57
+ entity.numberOfFitPoints = curr.value;
58
+ break;
59
+ case 210:
60
+ entity.extrusionDirection = helpers.parsePoint(scanner);
61
+ break;
62
+ default:
63
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
64
+ break;
65
+ }
66
+ curr = scanner.next();
67
+ }
68
+
69
+ return entity;
70
+ };
@@ -0,0 +1,50 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+
4
+ export default function EntityParser() {}
5
+
6
+ EntityParser.ForEntityName = 'TEXT';
7
+
8
+ EntityParser.prototype.parseEntity = function(scanner, curr) {
9
+ var entity;
10
+ entity = { type: curr.value };
11
+ curr = scanner.next();
12
+ while(curr !== 'EOF') {
13
+ if(curr.code === 0) break;
14
+ switch(curr.code) {
15
+ case 10: // X coordinate of 'first alignment point'
16
+ entity.startPoint = helpers.parsePoint(scanner);
17
+ break;
18
+ case 11: // X coordinate of 'second alignment point'
19
+ entity.endPoint = helpers.parsePoint(scanner);
20
+ break;
21
+ case 40: // Text height
22
+ entity.textHeight = curr.value;
23
+ break;
24
+ case 41:
25
+ entity.xScale = curr.value;
26
+ break;
27
+ case 50: // Rotation in degrees
28
+ entity.rotation = curr.value;
29
+ break;
30
+ case 7: // Text style name
31
+ entity.styleName = curr.value;
32
+ break;
33
+ case 1: // Text
34
+ entity.text = curr.value;
35
+ break;
36
+ // NOTE: 72 and 73 are meaningless without 11 (second alignment point)
37
+ case 72: // Horizontal alignment
38
+ entity.halign = curr.value;
39
+ break;
40
+ case 73: // Vertical alignment
41
+ entity.valign = curr.value;
42
+ break;
43
+ default: // check common entity attributes
44
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
45
+ break;
46
+ }
47
+ curr = scanner.next();
48
+ }
49
+ return entity;
50
+ };
@@ -0,0 +1,62 @@
1
+
2
+ import * as helpers from "../ParseHelpers.js"
3
+
4
+ export default function EntityParser() {}
5
+
6
+ EntityParser.ForEntityName = 'VERTEX';
7
+
8
+ EntityParser.prototype.parseEntity = function(scanner, curr) {
9
+ var entity = { type: curr.value };
10
+ curr = scanner.next();
11
+ while(curr !== 'EOF') {
12
+ if(curr.code === 0) break;
13
+
14
+ switch(curr.code) {
15
+ case 10: // X
16
+ entity.x = curr.value;
17
+ break;
18
+ case 20: // Y
19
+ entity.y = curr.value;
20
+ break;
21
+ case 30: // Z
22
+ entity.z = curr.value;
23
+ break;
24
+ case 40: // start width
25
+ break;
26
+ case 41: // end width
27
+ break;
28
+ case 42: // bulge
29
+ if(curr.value != 0) entity.bulge = curr.value;
30
+ break;
31
+ case 70: // flags
32
+ entity.curveFittingVertex = (curr.value & 1) !== 0;
33
+ entity.curveFitTangent = (curr.value & 2) !== 0;
34
+ entity.splineVertex = (curr.value & 8) !== 0;
35
+ entity.splineControlPoint = (curr.value & 16) !== 0;
36
+ entity.threeDPolylineVertex = (curr.value & 32) !== 0;
37
+ entity.threeDPolylineMesh = (curr.value & 64) !== 0;
38
+ entity.polyfaceMeshVertex = (curr.value & 128) !== 0;
39
+ break;
40
+ case 50: // curve fit tangent direction
41
+ break;
42
+ case 71: // polyface mesh vertex index
43
+ entity.faces = [curr.value];
44
+ break;
45
+ case 72: // polyface mesh vertex index
46
+ entity.faces[1] = curr.value;
47
+ break;
48
+ case 73: // polyface mesh vertex index
49
+ entity.faces[2] = curr.value;
50
+ break;
51
+ case 74: // polyface mesh vertex index
52
+ entity.faces[3] = curr.value;
53
+ break;
54
+ default:
55
+ helpers.checkCommonEntityProperties(entity, curr, scanner);
56
+ break;
57
+ }
58
+
59
+ curr = scanner.next();
60
+ }
61
+ return entity;
62
+ };
@@ -135,7 +135,7 @@ MeasureClearDistance.prototype = {
135
135
  const worldPts2 = localPts2.map(p => p.clone().applyMatrix4(wm2));
136
136
  let closestPair = this.findClosestPair(worldPts1, worldPts2);
137
137
  // 局部精细搜索
138
- const radius = closestPair.distance * 2 + 0.1;
138
+ const radius = closestPair.distance * 4;
139
139
  const localPts1Fine = this.sampleLocal(obj1.object, obj1.instanceId, closestPair.point1, radius, 1000);
140
140
  const localPts2Fine = this.sampleLocal(obj2.object, obj2.instanceId, closestPair.point2, radius, 1000);
141
141
  const combined1 = worldPts1.filter(p => p.distanceTo(closestPair.point1) < radius).concat(localPts1Fine);