@vitrosoftware/common-ui-ts 1.1.121 → 1.1.123
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/css/std/controls/checkbox/checkbox.css +4 -0
- package/css/std/controls/checkbox/img/checkbox-indeterminate.svg +4 -0
- package/css/std/controls/date-picker/date-picker.css +1 -25
- package/css/std/controls/dxf-viewer/annotation.css +85 -0
- package/css/std/controls/dxf-viewer/common.css +24 -0
- package/css/std/controls/dxf-viewer/dxf-viewer-index.css +14081 -0
- package/css/std/controls/dxf-viewer/dxf-viewer.css +194 -0
- package/css/std/controls/dxf-viewer/img/cancel-dark-grey.svg +5 -0
- package/css/std/controls/dxf-viewer/img/collapse-bottom.svg +5 -0
- package/css/std/controls/dxf-viewer/img/collapse-up-blue.svg +5 -0
- package/css/std/controls/dxf-viewer/img/delete-active.svg +11 -0
- package/css/std/controls/dxf-viewer/img/delete.svg +11 -0
- package/css/std/controls/dxf-viewer/img/draw-annotation.svg +3 -0
- package/css/std/controls/dxf-viewer/img/invisible-eye.svg +4 -0
- package/css/std/controls/dxf-viewer/img/show-annotation.svg +3 -0
- package/css/std/controls/dxf-viewer/img/sidebar-layers-toggle.svg +6 -0
- package/css/std/controls/dxf-viewer/img/sidebar-notes-toggle.svg +5 -0
- package/css/std/controls/dxf-viewer/img/sidebar-resizer.svg +6 -0
- package/css/std/controls/dxf-viewer/img/sidebar-toggle.svg +7 -0
- package/css/std/controls/dxf-viewer/img/visible-eye.svg +4 -0
- package/css/std/controls/dxf-viewer/img/zoom-in.svg +6 -0
- package/css/std/controls/dxf-viewer/img/zoom-out.svg +5 -0
- package/css/std/controls/dxf-viewer/layer-list.css +104 -0
- package/css/std/controls/dxf-viewer/panel.css +34 -0
- package/css/std/controls/dxf-viewer/prop-inspector.css +102 -0
- package/css/std/controls/dxf-viewer/select.css +111 -0
- package/css/std/controls/dxf-viewer/sidebar.css +190 -0
- package/css/std/controls/dxf-viewer/thumbnail-list.css +65 -0
- package/css/std/controls/dxf-viewer/toolbar.css +117 -0
- package/css/std/controls/dxf-viewer/treeview.css +3 -0
- package/css/std/controls/dxf-viewer/treeview.panel.css +108 -0
- package/css/std/controls/error-message/error-message.css +22 -0
- package/css/std/controls/image-picker/image-picker.css +0 -26
- package/css/std/controls/input/input.css +1 -24
- package/css/std/controls/issue-tile/issue-tile-header.css +1 -0
- package/css/std/controls/login/ntlm-authentication-form.css +9 -12
- package/css/std/controls/lookup-picker/lookup-picker-value-list.css +38 -2
- package/css/std/controls/lookup-picker/lookup-picker.css +1 -25
- package/css/std/controls/table-view/treegrid-context-menu.css +44 -18
- package/css/std/controls/table-view/treegrid-message.css +4 -4
- package/css/std/controls/time-picker/time-picker.css +1 -25
- package/dist/index.css +81 -143
- package/dist/index.js +15137 -489
- package/dist/index.js.map +1 -1
- package/dist/src/controls/Checkbox/Checkbox.d.ts +1 -0
- package/dist/src/controls/DxfViewer/DxfViewer.d.ts +6 -0
- package/dist/src/controls/DxfViewer/DxfViewerContext.d.ts +31 -0
- package/dist/src/controls/DxfViewer/Layer.d.ts +9 -0
- package/dist/src/controls/DxfViewer/LayerList.d.ts +11 -0
- package/dist/src/controls/DxfViewer/Thumbnail.d.ts +7 -0
- package/dist/src/controls/DxfViewer/ThumbnailList.d.ts +6 -0
- package/dist/src/controls/DxfViewer/Viewer.d.ts +6 -0
- package/dist/src/controls/ErrorMessage/ErrorMessage.d.ts +6 -0
- package/dist/src/controls/Login/FormRef.d.ts +3 -0
- package/dist/src/controls/Login/LoginConstants.d.ts +2 -1
- package/dist/src/controls/Login/LoginFormRef.d.ts +2 -2
- package/dist/src/controls/Login/NTLMAuthenticationForm.d.ts +5 -2
- package/dist/src/controls/LookupPicker/LookupPicker.d.ts +2 -0
- package/dist/src/controls/LookupPicker/ValueList.d.ts +2 -0
- package/dist/src/controls/TableView/TableViewConstants.d.ts +11 -0
- package/dist/src/controls/TableView/TreeGridTableViewContextImpl.d.ts +1 -0
- package/dist/src/controls/TreeView/TreeView.d.ts +4 -0
- package/dist/src/controls/TreeView/TreeViewConfig.d.ts +3 -0
- package/dist/src/controls/TreeView/TreeViewConstants.d.ts +2 -1
- package/dist/src/index.d.ts +7 -1
- package/lib/dxf-viewer/BatchingKey.js +91 -0
- package/lib/dxf-viewer/DxfFetcher.js +39 -0
- package/lib/dxf-viewer/DxfScene.js +2695 -0
- package/lib/dxf-viewer/DxfViewer.js +1056 -0
- package/lib/dxf-viewer/DxfWorker.js +229 -0
- package/lib/dxf-viewer/DynamicBuffer.js +100 -0
- package/lib/dxf-viewer/HatchCalculator.js +345 -0
- package/lib/dxf-viewer/LinearDimension.js +323 -0
- package/lib/dxf-viewer/MTextFormatParser.js +211 -0
- package/lib/dxf-viewer/MaterialKey.js +37 -0
- package/lib/dxf-viewer/OrbitControls.js +1253 -0
- package/lib/dxf-viewer/Pattern.js +94 -0
- package/lib/dxf-viewer/RBTree.js +471 -0
- package/lib/dxf-viewer/TextRenderer.js +1038 -0
- package/lib/dxf-viewer/index.js +42 -0
- package/lib/dxf-viewer/math/Matrix2.js +77 -0
- package/lib/dxf-viewer/math/utils.js +59 -0
- package/lib/dxf-viewer/parser/AutoCadColorIndex.js +265 -0
- package/lib/dxf-viewer/parser/DimStyleCodes.js +33 -0
- package/lib/dxf-viewer/parser/DxfArrayScanner.js +143 -0
- package/lib/dxf-viewer/parser/DxfParser.js +980 -0
- package/lib/dxf-viewer/parser/ExtendedDataParse-My.js +91 -0
- package/lib/dxf-viewer/parser/ExtendedDataParser.js +123 -0
- package/lib/dxf-viewer/parser/ParseHelpers.js +142 -0
- package/lib/dxf-viewer/parser/entities/3dface.js +83 -0
- package/lib/dxf-viewer/parser/entities/arc.js +38 -0
- package/lib/dxf-viewer/parser/entities/attdef.js +89 -0
- package/lib/dxf-viewer/parser/entities/attrib.js +34 -0
- package/lib/dxf-viewer/parser/entities/attribute.js +109 -0
- package/lib/dxf-viewer/parser/entities/circle.js +43 -0
- package/lib/dxf-viewer/parser/entities/dimension.js +72 -0
- package/lib/dxf-viewer/parser/entities/ellipse.js +46 -0
- package/lib/dxf-viewer/parser/entities/hatch.js +343 -0
- package/lib/dxf-viewer/parser/entities/insert.js +62 -0
- package/lib/dxf-viewer/parser/entities/leader.js +84 -0
- package/lib/dxf-viewer/parser/entities/line.js +34 -0
- package/lib/dxf-viewer/parser/entities/lwpolyline.js +100 -0
- package/lib/dxf-viewer/parser/entities/mtext.js +54 -0
- package/lib/dxf-viewer/parser/entities/point.js +35 -0
- package/lib/dxf-viewer/parser/entities/polyline.js +92 -0
- package/lib/dxf-viewer/parser/entities/solid.js +40 -0
- package/lib/dxf-viewer/parser/entities/spline.js +70 -0
- package/lib/dxf-viewer/parser/entities/text.js +47 -0
- package/lib/dxf-viewer/parser/entities/vertex.js +62 -0
- package/lib/dxf-viewer/parser/entities/viewport.js +56 -0
- package/lib/dxf-viewer/parser/objects/dictionary.js +29 -0
- package/lib/dxf-viewer/parser/objects/layout.js +35 -0
- package/lib/dxf-viewer/parser/objects/xrecord.js +29 -0
- package/lib/opentype/opentype.module.js +14571 -0
- package/lib/three/CSS2DRenderer.js +235 -0
- package/lib/three/three.module.js +49912 -0
- package/lib/xeokit/xeokit-sdk-2.6.10.es.js +136629 -0
- package/lib/xeokit/xeokit-sdk-2.6.10.min.es.js +299 -0
- package/package.json +12 -10
- package/src/controls/BimViewer/js/bim-viewer-models.js +93 -0
- package/src/controls/BimViewer/js/bim-viewer.js +194 -5
- package/src/controls/DxfViewer/js/dxf-viewer.js +3541 -0
- package/src/controls/PdfViewer/js/pdf-viewer.js +1 -1
- package/css/std/controls/input/img/error-message.svg +0 -6
- package/css/std/controls/lookup-picker/img/error-message.svg +0 -6
- package/css/std/controls/time-picker/img/error-message.svg +0 -6
- package/dist/src/controls/ActionHandler/ActionInfo.d.ts +0 -12
- package/dist/src/controls/ActionHandler/ActionInfoItem.d.ts +0 -13
- package/dist/src/controls/ActionHandler/UpdatingPopover.d.ts +0 -2
- package/dist/src/controls/Dialog/DialogButton.d.ts +0 -8
- package/dist/src/controls/Dialog/DialogCloseButton.d.ts +0 -8
- package/dist/src/controls/Icon/Icon.d.ts +0 -11
- package/dist/src/controls/Search/Input.d.ts +0 -21
- package/dist/src/controls/Search/SearchConstants.d.ts +0 -4
- /package/css/std/controls/{date-picker → error-message}/img/error-message.svg +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
|
|
2
|
+
import * as helpers from '../ParseHelpers.js'
|
|
3
|
+
|
|
4
|
+
export default function EntityParser() {}
|
|
5
|
+
|
|
6
|
+
EntityParser.ForEntityName = 'LEADER';
|
|
7
|
+
|
|
8
|
+
EntityParser.prototype.parseEntity = function(scanner, curr) {
|
|
9
|
+
var entity = { type: curr.value, vertices: [] },
|
|
10
|
+
numberOfVertices = 0;
|
|
11
|
+
curr = scanner.next();
|
|
12
|
+
while(curr !== 'EOF') {
|
|
13
|
+
if(curr.code === 0) break;
|
|
14
|
+
|
|
15
|
+
switch(curr.code) {
|
|
16
|
+
case 76:
|
|
17
|
+
numberOfVertices = curr.value;
|
|
18
|
+
break;
|
|
19
|
+
case 10: // X coordinate of point
|
|
20
|
+
entity.vertices = parseLWPolylineVertices(numberOfVertices, scanner);
|
|
21
|
+
break;
|
|
22
|
+
default:
|
|
23
|
+
helpers.checkCommonEntityProperties(entity, curr, scanner);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
curr = scanner.next();
|
|
27
|
+
}
|
|
28
|
+
return entity;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
function parseLWPolylineVertices(n, scanner) {
|
|
32
|
+
if(!n || n <= 0) throw Error('n must be greater than 0 verticies');
|
|
33
|
+
var vertices = [], i;
|
|
34
|
+
var vertexIsStarted = false;
|
|
35
|
+
var vertexIsFinished = false;
|
|
36
|
+
var curr = scanner.lastReadGroup;
|
|
37
|
+
|
|
38
|
+
for(i = 0; i < n; i++) {
|
|
39
|
+
var vertex = {};
|
|
40
|
+
while(curr !== 'EOF') {
|
|
41
|
+
if(curr.code === 0 || vertexIsFinished) break;
|
|
42
|
+
|
|
43
|
+
switch(curr.code) {
|
|
44
|
+
case 10: // X
|
|
45
|
+
if(vertexIsStarted) {
|
|
46
|
+
vertexIsFinished = true;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
vertex.x = curr.value;
|
|
50
|
+
vertexIsStarted = true;
|
|
51
|
+
break;
|
|
52
|
+
case 20: // Y
|
|
53
|
+
vertex.y = curr.value;
|
|
54
|
+
break;
|
|
55
|
+
case 30: // Z
|
|
56
|
+
vertex.z = curr.value;
|
|
57
|
+
break;
|
|
58
|
+
case 40: // start width
|
|
59
|
+
vertex.startWidth = curr.value;
|
|
60
|
+
break;
|
|
61
|
+
case 41: // end width
|
|
62
|
+
vertex.endWidth = curr.value;
|
|
63
|
+
break;
|
|
64
|
+
case 42: // bulge
|
|
65
|
+
if(curr.value != 0) vertex.bulge = curr.value;
|
|
66
|
+
break;
|
|
67
|
+
default:
|
|
68
|
+
// if we do not hit known code return vertices. Code might belong to entity
|
|
69
|
+
if (vertexIsStarted) {
|
|
70
|
+
vertices.push(vertex);
|
|
71
|
+
}
|
|
72
|
+
scanner.rewind();
|
|
73
|
+
return vertices;
|
|
74
|
+
}
|
|
75
|
+
curr = scanner.next();
|
|
76
|
+
}
|
|
77
|
+
// See https://groups.google.com/forum/#!topic/comp.cad.autocad/9gn8s5O_w6E
|
|
78
|
+
vertices.push(vertex);
|
|
79
|
+
vertexIsStarted = false;
|
|
80
|
+
vertexIsFinished = false;
|
|
81
|
+
}
|
|
82
|
+
scanner.rewind();
|
|
83
|
+
return vertices;
|
|
84
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
import * as helpers from '../ParseHelpers.js'
|
|
3
|
+
|
|
4
|
+
export default function EntityParser() {}
|
|
5
|
+
|
|
6
|
+
EntityParser.ForEntityName = 'LINE';
|
|
7
|
+
|
|
8
|
+
EntityParser.prototype.parseEntity = function(scanner, curr) {
|
|
9
|
+
var entity = { type: curr.value, vertices: [] };
|
|
10
|
+
curr = scanner.next();
|
|
11
|
+
while(curr !== 'EOF') {
|
|
12
|
+
if(curr.code === 0) break;
|
|
13
|
+
|
|
14
|
+
switch(curr.code) {
|
|
15
|
+
case 10: // X coordinate of point
|
|
16
|
+
entity.vertices.unshift(helpers.parsePoint(scanner));
|
|
17
|
+
break;
|
|
18
|
+
case 11:
|
|
19
|
+
entity.vertices.push(helpers.parsePoint(scanner));
|
|
20
|
+
break;
|
|
21
|
+
case 210:
|
|
22
|
+
entity.extrusionDirection = helpers.parsePoint(scanner);
|
|
23
|
+
break;
|
|
24
|
+
case 100:
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
helpers.checkCommonEntityProperties(entity, curr, scanner);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
curr = scanner.next();
|
|
32
|
+
}
|
|
33
|
+
return entity;
|
|
34
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
|
|
2
|
+
import * as helpers from '../ParseHelpers.js'
|
|
3
|
+
|
|
4
|
+
export default function EntityParser() {}
|
|
5
|
+
|
|
6
|
+
EntityParser.ForEntityName = 'LWPOLYLINE';
|
|
7
|
+
|
|
8
|
+
EntityParser.prototype.parseEntity = function(scanner, curr) {
|
|
9
|
+
var entity = { type: curr.value, vertices: [] },
|
|
10
|
+
numberOfVertices = 0;
|
|
11
|
+
curr = scanner.next();
|
|
12
|
+
while(curr !== 'EOF') {
|
|
13
|
+
if(curr.code === 0) break;
|
|
14
|
+
|
|
15
|
+
switch(curr.code) {
|
|
16
|
+
case 38:
|
|
17
|
+
entity.elevation = curr.value;
|
|
18
|
+
break;
|
|
19
|
+
case 39:
|
|
20
|
+
entity.depth = curr.value;
|
|
21
|
+
break;
|
|
22
|
+
case 70: // 1 = Closed shape, 128 = plinegen?, 0 = default
|
|
23
|
+
entity.shape = ((curr.value & 1) === 1);
|
|
24
|
+
entity.hasContinuousLinetypePattern = ((curr.value & 128) === 128);
|
|
25
|
+
break;
|
|
26
|
+
case 90:
|
|
27
|
+
numberOfVertices = curr.value;
|
|
28
|
+
break;
|
|
29
|
+
case 10: // X coordinate of point
|
|
30
|
+
entity.vertices = parseLWPolylineVertices(numberOfVertices, scanner);
|
|
31
|
+
break;
|
|
32
|
+
case 43:
|
|
33
|
+
if(curr.value !== 0) entity.width = curr.value;
|
|
34
|
+
break;
|
|
35
|
+
case 210:
|
|
36
|
+
entity.extrusionDirection = helpers.parsePoint(scanner);
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
helpers.checkCommonEntityProperties(entity, curr, scanner);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
curr = scanner.next();
|
|
43
|
+
}
|
|
44
|
+
return entity;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
function parseLWPolylineVertices(n, scanner) {
|
|
48
|
+
if(!n || n <= 0) throw Error('n must be greater than 0 verticies');
|
|
49
|
+
var vertices = [], i;
|
|
50
|
+
var vertexIsStarted = false;
|
|
51
|
+
var vertexIsFinished = false;
|
|
52
|
+
var curr = scanner.lastReadGroup;
|
|
53
|
+
|
|
54
|
+
for(i = 0; i < n; i++) {
|
|
55
|
+
var vertex = {};
|
|
56
|
+
while(curr !== 'EOF') {
|
|
57
|
+
if(curr.code === 0 || vertexIsFinished) break;
|
|
58
|
+
|
|
59
|
+
switch(curr.code) {
|
|
60
|
+
case 10: // X
|
|
61
|
+
if(vertexIsStarted) {
|
|
62
|
+
vertexIsFinished = true;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
vertex.x = curr.value;
|
|
66
|
+
vertexIsStarted = true;
|
|
67
|
+
break;
|
|
68
|
+
case 20: // Y
|
|
69
|
+
vertex.y = curr.value;
|
|
70
|
+
break;
|
|
71
|
+
case 30: // Z
|
|
72
|
+
vertex.z = curr.value;
|
|
73
|
+
break;
|
|
74
|
+
case 40: // start width
|
|
75
|
+
vertex.startWidth = curr.value;
|
|
76
|
+
break;
|
|
77
|
+
case 41: // end width
|
|
78
|
+
vertex.endWidth = curr.value;
|
|
79
|
+
break;
|
|
80
|
+
case 42: // bulge
|
|
81
|
+
if(curr.value != 0) vertex.bulge = curr.value;
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
// if we do not hit known code return vertices. Code might belong to entity
|
|
85
|
+
if (vertexIsStarted) {
|
|
86
|
+
vertices.push(vertex);
|
|
87
|
+
}
|
|
88
|
+
scanner.rewind();
|
|
89
|
+
return vertices;
|
|
90
|
+
}
|
|
91
|
+
curr = scanner.next();
|
|
92
|
+
}
|
|
93
|
+
// See https://groups.google.com/forum/#!topic/comp.cad.autocad/9gn8s5O_w6E
|
|
94
|
+
vertices.push(vertex);
|
|
95
|
+
vertexIsStarted = false;
|
|
96
|
+
vertexIsFinished = false;
|
|
97
|
+
}
|
|
98
|
+
scanner.rewind();
|
|
99
|
+
return vertices;
|
|
100
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
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 71:
|
|
39
|
+
entity.attachmentPoint = curr.value;
|
|
40
|
+
break;
|
|
41
|
+
case 72:
|
|
42
|
+
entity.drawingDirection = curr.value;
|
|
43
|
+
break;
|
|
44
|
+
case 101:
|
|
45
|
+
helpers.skipEmbeddedObject(scanner);
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
helpers.checkCommonEntityProperties(entity, curr, scanner);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
curr = scanner.next();
|
|
52
|
+
}
|
|
53
|
+
return entity;
|
|
54
|
+
};
|
|
@@ -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,47 @@
|
|
|
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 1: // Text
|
|
31
|
+
entity.text = curr.value;
|
|
32
|
+
break;
|
|
33
|
+
// NOTE: 72 and 73 are meaningless without 11 (second alignment point)
|
|
34
|
+
case 72: // Horizontal alignment
|
|
35
|
+
entity.halign = curr.value;
|
|
36
|
+
break;
|
|
37
|
+
case 73: // Vertical alignment
|
|
38
|
+
entity.valign = curr.value;
|
|
39
|
+
break;
|
|
40
|
+
default: // check common entity attributes
|
|
41
|
+
helpers.checkCommonEntityProperties(entity, curr, scanner);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
curr = scanner.next();
|
|
45
|
+
}
|
|
46
|
+
return entity;
|
|
47
|
+
};
|
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
import * as helpers from '../ParseHelpers.js'
|
|
3
|
+
|
|
4
|
+
export default function EntityParser() {}
|
|
5
|
+
|
|
6
|
+
EntityParser.ForEntityName = 'VIEWPORT';
|
|
7
|
+
|
|
8
|
+
EntityParser.prototype.parseEntity = function(scanner, curr) {
|
|
9
|
+
var entity = { type: curr.value, vertices: [] },
|
|
10
|
+
curr = scanner.next();
|
|
11
|
+
while(curr !== 'EOF') {
|
|
12
|
+
if(curr.code === 0) break;
|
|
13
|
+
|
|
14
|
+
switch(curr.code) {
|
|
15
|
+
case 281:
|
|
16
|
+
entity.renderMode = curr.value;
|
|
17
|
+
break;
|
|
18
|
+
case 40:
|
|
19
|
+
entity.width = curr.value;
|
|
20
|
+
break;
|
|
21
|
+
case 41:
|
|
22
|
+
entity.height = curr.value;
|
|
23
|
+
break;
|
|
24
|
+
case 10: // X coordinate of center point
|
|
25
|
+
entity.center = helpers.parsePoint(scanner);
|
|
26
|
+
break;
|
|
27
|
+
case 12: // X coordinate of view center point
|
|
28
|
+
entity.viewCenter = helpers.parsePoint(scanner);
|
|
29
|
+
break;
|
|
30
|
+
case 17: // X coordinate of view target point (in WCS)
|
|
31
|
+
entity.viewTarget = helpers.parsePoint(scanner);
|
|
32
|
+
break;
|
|
33
|
+
case 45: // View height
|
|
34
|
+
entity.viewHeight = curr.value;
|
|
35
|
+
break;
|
|
36
|
+
case 51: // View twist angle
|
|
37
|
+
entity.twist = curr.value;
|
|
38
|
+
break;
|
|
39
|
+
case 340:
|
|
40
|
+
entity.boundaryHandle = curr.value;
|
|
41
|
+
break;
|
|
42
|
+
case 68:
|
|
43
|
+
entity.status = curr.value;
|
|
44
|
+
break;
|
|
45
|
+
case 69:
|
|
46
|
+
entity.id = curr.value;
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
helpers.checkCommonEntityProperties(entity, curr, scanner);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
curr = scanner.next();
|
|
53
|
+
}
|
|
54
|
+
return entity;
|
|
55
|
+
};
|
|
56
|
+
|