dxf-json 0.0.20 → 0.0.22

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 (165) hide show
  1. package/package.json +5 -2
  2. package/.github/FUNDING.yml +0 -1
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  4. package/.github/ISSUE_TEMPLATE/custom.md +0 -10
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  6. package/.github/pull_request_template.md +0 -23
  7. package/.github/workflows/npm-publish.yml +0 -55
  8. package/.swcrc +0 -8
  9. package/jest.config.js +0 -20
  10. package/src/consts/block.ts +0 -22
  11. package/src/consts/color.ts +0 -6
  12. package/src/consts/config.ts +0 -2
  13. package/src/consts/dimension.ts +0 -69
  14. package/src/consts/hatch.ts +0 -52
  15. package/src/consts/header.ts +0 -10
  16. package/src/consts/index.ts +0 -9
  17. package/src/consts/lineweight.ts +0 -5
  18. package/src/consts/measurement.ts +0 -4
  19. package/src/consts/obscuredLineTypes.ts +0 -21
  20. package/src/consts/scene.ts +0 -2
  21. package/src/consts/viewport.ts +0 -62
  22. package/src/index.ts +0 -3
  23. package/src/parser/AutoCadColorIndex.ts +0 -265
  24. package/src/parser/DxfArrayScanner.ts +0 -161
  25. package/src/parser/DxfParser.ts +0 -109
  26. package/src/parser/ParseHelpers.ts +0 -124
  27. package/src/parser/blocks/blocks.test.ts +0 -97
  28. package/src/parser/blocks/index.ts +0 -88
  29. package/src/parser/blocks/types.ts +0 -15
  30. package/src/parser/entities/arc/index.ts +0 -2
  31. package/src/parser/entities/arc/parser.ts +0 -67
  32. package/src/parser/entities/arc/types.ts +0 -13
  33. package/src/parser/entities/attdef/consts.ts +0 -12
  34. package/src/parser/entities/attdef/index.ts +0 -3
  35. package/src/parser/entities/attdef/parser.ts +0 -119
  36. package/src/parser/entities/attdef/types.ts +0 -19
  37. package/src/parser/entities/attribute/consts.ts +0 -6
  38. package/src/parser/entities/attribute/index.ts +0 -3
  39. package/src/parser/entities/attribute/parser.ts +0 -198
  40. package/src/parser/entities/attribute/types.ts +0 -31
  41. package/src/parser/entities/circle/index.ts +0 -2
  42. package/src/parser/entities/circle/parser.ts +0 -58
  43. package/src/parser/entities/circle/types.ts +0 -11
  44. package/src/parser/entities/dimension/common.ts +0 -98
  45. package/src/parser/entities/dimension/index.ts +0 -24
  46. package/src/parser/entities/dimension/types.ts +0 -65
  47. package/src/parser/entities/ellipse/index.ts +0 -2
  48. package/src/parser/entities/ellipse/parser.ts +0 -66
  49. package/src/parser/entities/ellipse/types.ts +0 -13
  50. package/src/parser/entities/entities.test.ts +0 -86
  51. package/src/parser/entities/hatch/boundaryPathData/edge.ts +0 -190
  52. package/src/parser/entities/hatch/boundaryPathData/index.ts +0 -27
  53. package/src/parser/entities/hatch/boundaryPathData/polyline.ts +0 -43
  54. package/src/parser/entities/hatch/boundaryPathData/shared.ts +0 -16
  55. package/src/parser/entities/hatch/index.ts +0 -189
  56. package/src/parser/entities/hatch/patternData.ts +0 -57
  57. package/src/parser/entities/hatch/types/boundaryPath.ts +0 -72
  58. package/src/parser/entities/hatch/types/definitionLine.ts +0 -14
  59. package/src/parser/entities/hatch/types/hatch.ts +0 -47
  60. package/src/parser/entities/hatch/types/index.ts +0 -3
  61. package/src/parser/entities/index.ts +0 -87
  62. package/src/parser/entities/insert/index.ts +0 -2
  63. package/src/parser/entities/insert/parser.ts +0 -106
  64. package/src/parser/entities/insert/types.ts +0 -19
  65. package/src/parser/entities/leader/consts.ts +0 -6
  66. package/src/parser/entities/leader/index.ts +0 -3
  67. package/src/parser/entities/leader/parser.ts +0 -119
  68. package/src/parser/entities/leader/types.ts +0 -24
  69. package/src/parser/entities/line/index.ts +0 -2
  70. package/src/parser/entities/line/parser.ts +0 -55
  71. package/src/parser/entities/line/types.ts +0 -11
  72. package/src/parser/entities/lwpolyline/consts.ts +0 -4
  73. package/src/parser/entities/lwpolyline/index.ts +0 -3
  74. package/src/parser/entities/lwpolyline/parser.ts +0 -122
  75. package/src/parser/entities/lwpolyline/types.ts +0 -21
  76. package/src/parser/entities/mtext/consts.ts +0 -5
  77. package/src/parser/entities/mtext/index.ts +0 -3
  78. package/src/parser/entities/mtext/parser.ts +0 -195
  79. package/src/parser/entities/mtext/types.ts +0 -34
  80. package/src/parser/entities/point/index.ts +0 -2
  81. package/src/parser/entities/point/parser.ts +0 -60
  82. package/src/parser/entities/point/types.ts +0 -10
  83. package/src/parser/entities/polyline/consts.ts +0 -17
  84. package/src/parser/entities/polyline/index.ts +0 -3
  85. package/src/parser/entities/polyline/parser.ts +0 -126
  86. package/src/parser/entities/polyline/types.ts +0 -20
  87. package/src/parser/entities/section/index.ts +0 -2
  88. package/src/parser/entities/section/parser.ts +0 -104
  89. package/src/parser/entities/section/types.ts +0 -20
  90. package/src/parser/entities/shared.ts +0 -166
  91. package/src/parser/entities/solid/index.ts +0 -2
  92. package/src/parser/entities/solid/parser.ts +0 -56
  93. package/src/parser/entities/solid/types.ts +0 -10
  94. package/src/parser/entities/spline/consts.ts +0 -8
  95. package/src/parser/entities/spline/index.ts +0 -3
  96. package/src/parser/entities/spline/parser.ts +0 -121
  97. package/src/parser/entities/spline/types.ts +0 -22
  98. package/src/parser/entities/text/consts.ts +0 -21
  99. package/src/parser/entities/text/index.ts +0 -3
  100. package/src/parser/entities/text/parser.ts +0 -117
  101. package/src/parser/entities/text/types.ts +0 -21
  102. package/src/parser/entities/vertex/consts.ts +0 -10
  103. package/src/parser/entities/vertex/index.ts +0 -3
  104. package/src/parser/entities/vertex/parser.ts +0 -90
  105. package/src/parser/entities/vertex/types.ts +0 -17
  106. package/src/parser/entities/viewport/index.ts +0 -178
  107. package/src/parser/entities/viewport/types.ts +0 -58
  108. package/src/parser/filterDummyBlocks.ts +0 -49
  109. package/src/parser/header/index.ts +0 -30
  110. package/src/parser/objects/common.ts +0 -55
  111. package/src/parser/objects/dictionary.ts +0 -61
  112. package/src/parser/objects/index.ts +0 -45
  113. package/src/parser/objects/layout.ts +0 -136
  114. package/src/parser/objects/plotSettings.ts +0 -231
  115. package/src/parser/objects/treefy.ts +0 -53
  116. package/src/parser/objects/types.ts +0 -17
  117. package/src/parser/shared/index.ts +0 -21
  118. package/src/parser/shared/parsePoint.ts +0 -37
  119. package/src/parser/shared/parserGenerator.test.ts +0 -164
  120. package/src/parser/shared/parserGenerator.ts +0 -180
  121. package/src/parser/shared/xdata/index.ts +0 -3
  122. package/src/parser/shared/xdata/interpreter.test.ts +0 -85
  123. package/src/parser/shared/xdata/interpreter.ts +0 -65
  124. package/src/parser/shared/xdata/parser.test.ts +0 -66
  125. package/src/parser/shared/xdata/parser.ts +0 -140
  126. package/src/parser/shared/xdata/types.ts +0 -22
  127. package/src/parser/tables/blockRecord/index.ts +0 -2
  128. package/src/parser/tables/blockRecord/parser.ts +0 -49
  129. package/src/parser/tables/blockRecord/types.ts +0 -11
  130. package/src/parser/tables/dimStyle/consts.ts +0 -428
  131. package/src/parser/tables/dimStyle/index.ts +0 -3
  132. package/src/parser/tables/dimStyle/parser.ts +0 -37
  133. package/src/parser/tables/dimStyle/types.ts +0 -164
  134. package/src/parser/tables/index.ts +0 -2
  135. package/src/parser/tables/layer/index.ts +0 -2
  136. package/src/parser/tables/layer/parser.ts +0 -58
  137. package/src/parser/tables/layer/types.ts +0 -14
  138. package/src/parser/tables/ltype/consts.ts +0 -6
  139. package/src/parser/tables/ltype/index.ts +0 -3
  140. package/src/parser/tables/ltype/parser.ts +0 -110
  141. package/src/parser/tables/ltype/types.ts +0 -23
  142. package/src/parser/tables/parser.ts +0 -100
  143. package/src/parser/tables/shared.ts +0 -32
  144. package/src/parser/tables/style/index.ts +0 -2
  145. package/src/parser/tables/style/parser.ts +0 -70
  146. package/src/parser/tables/style/types.ts +0 -15
  147. package/src/parser/tables/types.ts +0 -15
  148. package/src/parser/tables/vport/index.ts +0 -2
  149. package/src/parser/tables/vport/parser.ts +0 -205
  150. package/src/parser/tables/vport/types.ts +0 -48
  151. package/src/parser/types.ts +0 -30
  152. package/src/types/color.ts +0 -5
  153. package/src/types/dxfHeader.ts +0 -21
  154. package/src/types/entity.ts +0 -7
  155. package/src/types/index.ts +0 -30
  156. package/src/utils/binarySearch.ts +0 -20
  157. package/src/utils/disjointSet.ts +0 -52
  158. package/src/utils/flooding.ts +0 -37
  159. package/src/utils/functional.ts +0 -124
  160. package/src/utils/graph.ts +0 -53
  161. package/src/utils/index.ts +0 -102
  162. package/src/utils/queue.ts +0 -77
  163. package/src/utils/triangle.ts +0 -28
  164. package/tsconfig.json +0 -37
  165. package/webpack.config.js +0 -53
@@ -1,58 +0,0 @@
1
- import type DxfArrayScanner from '../../DxfArrayScanner';
2
- import type { ScannerGroup } from '../../DxfArrayScanner';
3
- import {
4
- createParser,
5
- DXFParserSnippet,
6
- Identity,
7
- PointParser,
8
- } from '../../shared/parserGenerator';
9
- import { CommonEntitySnippets } from '../shared';
10
- import type { CircleEntity } from './types';
11
-
12
- const DefaultCircleEntity = {
13
- thickness: 0,
14
- extrusionDirection: { x: 0, y: 0, z: 1 },
15
- };
16
-
17
- const CircleEntityParserSnippets: DXFParserSnippet[] = [
18
- {
19
- code: 210,
20
- name: 'extrusionDirection',
21
- parser: PointParser,
22
- },
23
- {
24
- code: 40,
25
- name: 'radius',
26
- parser: Identity,
27
- },
28
- {
29
- code: 10,
30
- name: 'center',
31
- parser: PointParser,
32
- },
33
- {
34
- code: 39,
35
- name: 'thickness',
36
- parser: Identity,
37
- },
38
- {
39
- code: 100,
40
- name: 'subclassMarker',
41
- parser: Identity,
42
- },
43
- ...CommonEntitySnippets,
44
- ];
45
-
46
- export class CircleEntityParser {
47
- static ForEntityName = 'CIRCLE';
48
- private parser = createParser(
49
- CircleEntityParserSnippets,
50
- DefaultCircleEntity,
51
- );
52
-
53
- parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
54
- const entity = {} as any;
55
- this.parser(curr, scanner, entity);
56
- return entity as CircleEntity;
57
- }
58
- }
@@ -1,11 +0,0 @@
1
- import type { Point3D } from '../../../types';
2
- import type { CommonDxfEntity } from '../shared';
3
-
4
- export interface CircleEntity extends CommonDxfEntity {
5
- type: 'CIRCLE';
6
- subclassMarker: 'AcDbCircle';
7
- thickness: number;
8
- center: Point3D;
9
- radius: number;
10
- extrusionDirection: Point3D;
11
- }
@@ -1,98 +0,0 @@
1
- import DxfArrayScanner, { ScannerGroup } from 'parser/DxfArrayScanner';
2
- import { Point3D } from 'types';
3
- import * as helpers from '../../ParseHelpers';
4
- import { parsePoint } from '../../shared/parsePoint';
5
- import { AlignedDimensionEntity, AngularDimensionEntity, DimensionEntity, DimensionEntityCommon, OrdinateDimensionEntity, RadialDiameterDimensionEntity } from './types';
6
-
7
- /**
8
- * @returns Return `false` if curr is not related to common dimension group
9
- */
10
- export function parseDimension(entity: DimensionEntity, curr: ScannerGroup, scanner: DxfArrayScanner) {
11
- switch (curr.code) {
12
- case 100:
13
- entity.subclassMarker = curr.value;
14
- break;
15
- case 280:
16
- entity.version = curr.value;
17
- break;
18
- case 2:
19
- entity.name = curr.value;
20
- break;
21
- case 10:
22
- entity.definitionPoint = parsePoint(scanner) as Point3D;
23
- break;
24
- case 11:
25
- entity.textPoint = parsePoint(scanner) as Point3D;
26
- break;
27
- case 12:
28
- // for aligned
29
- (entity as AlignedDimensionEntity).insertionPoint = parsePoint(scanner) as Point3D;
30
- break;
31
- case 13:
32
- // group 13 and 14 are subclass specific definition point
33
- // for further information, look dxf dimension specification
34
- (entity as AlignedDimensionEntity | AngularDimensionEntity | OrdinateDimensionEntity).subDefinitionPoint1 = parsePoint(scanner) as Point3D;
35
- break;
36
- case 14:
37
- (entity as AlignedDimensionEntity | AngularDimensionEntity | OrdinateDimensionEntity).subDefinitionPoint2 = parsePoint(scanner) as Point3D;
38
- break;
39
- case 15:
40
- // for angular, radial, diameter
41
- (entity as AngularDimensionEntity | RadialDiameterDimensionEntity).centerPoint = parsePoint(scanner) as Point3D;
42
- break;
43
- case 16:
44
- // for angular
45
- (entity as AngularDimensionEntity).arcPoint = parsePoint(scanner) as Point3D;
46
- break;
47
- case 70:
48
- entity.dimensionType = curr.value;
49
- break;
50
- case 71:
51
- entity.attachmentPoint = curr.value;
52
- break;
53
- case 72:
54
- entity.textLineSpacingStyle = curr.value;
55
- break;
56
- case 40:
57
- // for radial, diameter
58
- (entity as RadialDiameterDimensionEntity).leaderLength = curr.value;
59
- break;
60
- case 41:
61
- entity.textLineSpacingFactor = curr.value;
62
- break;
63
- case 42:
64
- entity.measurement = curr.value;
65
- break;
66
- case 1:
67
- // if value === null or "<>", measurement should be drawn as text instead
68
- // if value === "", text is suppressed.
69
- // otherwise text should be drawn as is.
70
- entity.text = curr.value;
71
- break;
72
- case 50:
73
- // for aligned
74
- (entity as AlignedDimensionEntity).rotationAngle = curr.value;
75
- break;
76
- case 52:
77
- // for aligned
78
- (entity as AlignedDimensionEntity).obliqueAngle = curr.value;
79
- break;
80
- case 53:
81
- entity.textRotation = curr.value;
82
- break;
83
- case 51:
84
- // This group value is the negative of the angle between the OCS X axis
85
- // and the UCS X axis. It is always in the XY plane of the OCS
86
- entity.ocsRotation = curr.value;
87
- break;
88
- case 210:
89
- entity.extrusionDirection = parsePoint(scanner) as Point3D;
90
- break;
91
- case 3:
92
- entity.styleName = curr.value;
93
- break;
94
- default:
95
- helpers.checkCommonEntityProperties(entity, curr, scanner);
96
- break;
97
- }
98
- }
@@ -1,24 +0,0 @@
1
- import DxfArrayScanner, { ScannerGroup } from 'parser/DxfArrayScanner';
2
- import { isMatched } from '../../shared';
3
- import { parseDimension } from './common';
4
- import { DimensionEntity } from './types';
5
-
6
- export default class DimensionParser {
7
- static ForEntityName = 'DIMENSION';
8
-
9
- parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
10
- const entity = {} as DimensionEntity;
11
-
12
- while (!isMatched(curr, 0, 'EOF')) {
13
- if (curr.code === 0) {
14
- scanner.rewind();
15
- return entity;
16
- }
17
-
18
- parseDimension(entity, curr, scanner);
19
- curr = scanner.next();
20
- }
21
-
22
- return entity;
23
- }
24
- }
@@ -1,65 +0,0 @@
1
- import {
2
- AttachmentPoint,
3
- DimensionTextLineSpacing,
4
- DimensionType,
5
- } from '../../../consts';
6
- import type { Point3D } from '../../../types';
7
- import type { CommonDxfEntity } from '../shared';
8
-
9
- export interface DimensionEntityCommon extends CommonDxfEntity {
10
- type: 'DIMENSION';
11
- subclassMarker: string;
12
- handle: string;
13
- version: string;
14
- // Name of the block that contains the entities that make up the dimension picture
15
- name: string;
16
- definitionPoint: Point3D;
17
- textPoint: Point3D;
18
- dimensionType: DimensionType;
19
- attachmentPoint: AttachmentPoint;
20
- textLineSpacingStyle?: DimensionTextLineSpacing;
21
- textLineSpacingFactor?: number;
22
- measurement?: number;
23
- text?: string;
24
- textRotation?: number;
25
- ocsRotation?: number;
26
- extrusionDirection?: Point3D;
27
- styleName: string;
28
- }
29
-
30
- export interface AlignedDimensionEntity extends DimensionEntityCommon {
31
- subclassMarker: 'AcDbAlignedDimension' | 'AcDbRotatedDimension';
32
- insertionPoint?: Point3D;
33
- subDefinitionPoint1: Point3D;
34
- subDefinitionPoint2: Point3D;
35
- rotationAngle: number;
36
- obliqueAngle: number;
37
- }
38
-
39
- export interface AngularDimensionEntity extends DimensionEntityCommon {
40
- subclassMarker: 'AcDb3PointAngularDimension';
41
- subDefinitionPoint1: Point3D;
42
- subDefinitionPoint2: Point3D;
43
- centerPoint: Point3D;
44
- arcPoint: Point3D;
45
- }
46
-
47
- export interface OrdinateDimensionEntity extends DimensionEntityCommon {
48
- subclassMarker: 'AcDbOrdinateDimension';
49
- subDefinitionPoint1: Point3D;
50
- subDefinitionPoint2: Point3D;
51
- }
52
-
53
- export interface RadialDiameterDimensionEntity extends DimensionEntityCommon {
54
- subclassMarker: 'AcDbRadialDimension' | 'AcDbDiametricDimension';
55
- centerPoint: Point3D;
56
- leaderLength: number;
57
- }
58
-
59
- export type DimensionEntity = DimensionEntityCommon &
60
- (
61
- | Partial<AlignedDimensionEntity>
62
- | Partial<AngularDimensionEntity>
63
- | Partial<OrdinateDimensionEntity>
64
- | Partial<RadialDiameterDimensionEntity>
65
- );
@@ -1,2 +0,0 @@
1
- export * from './types';
2
- export * from './parser';
@@ -1,66 +0,0 @@
1
- import DxfArrayScanner, { ScannerGroup } from '../../DxfArrayScanner';
2
- import {
3
- createParser,
4
- DXFParserSnippet,
5
- Identity,
6
- PointParser,
7
- } from '../../shared/parserGenerator';
8
- import { CommonEntitySnippets } from '../shared';
9
- import { EllipseEntity } from './types';
10
-
11
- const DefaultEllipseEnitty = {
12
- extrusionDirection: { x: 0, y: 0, z: 1 },
13
- };
14
-
15
- const EllipseEntityParserSnippets: DXFParserSnippet[] = [
16
- {
17
- code: 42,
18
- name: 'endAngle',
19
- parser: Identity,
20
- },
21
- {
22
- code: 41,
23
- name: 'startAngle',
24
- parser: Identity,
25
- },
26
- {
27
- code: 40,
28
- name: 'axisRatio',
29
- parser: Identity,
30
- },
31
- {
32
- code: 210,
33
- name: 'extrusionDirection',
34
- parser: PointParser,
35
- },
36
- {
37
- code: 11,
38
- name: 'majorAxisEndPoint',
39
- parser: PointParser,
40
- },
41
- {
42
- code: 10,
43
- name: 'center',
44
- parser: PointParser,
45
- },
46
- {
47
- code: 100,
48
- name: 'subclassMarker',
49
- parser: Identity,
50
- },
51
- ...CommonEntitySnippets,
52
- ];
53
-
54
- export class EllipseEntityParser {
55
- static ForEntityName = 'ELLIPSE';
56
- private parser = createParser(
57
- EllipseEntityParserSnippets,
58
- DefaultEllipseEnitty,
59
- );
60
-
61
- parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
62
- const entity = {} as any;
63
- this.parser(curr, scanner, entity);
64
- return entity as EllipseEntity;
65
- }
66
- }
@@ -1,13 +0,0 @@
1
- import type { Point3D } from '../../../types';
2
- import type { CommonDxfEntity } from '../shared';
3
-
4
- export interface EllipseEntity extends CommonDxfEntity {
5
- type: 'ELLIPSE';
6
- subclassMarker: 'AcDbEllipse';
7
- center: Point3D;
8
- majorAxisEndPoint: Point3D;
9
- extrusionDirection: Point3D;
10
- axisRatio: number;
11
- startAngle: number; // radian
12
- endAngle: number; // radian
13
- }
@@ -1,86 +0,0 @@
1
- import { parseEntities } from '.';
2
- import DxfArrayScanner from '../DxfArrayScanner';
3
-
4
- describe('ENTITIES section', () => {
5
- describe('parseEntities', () => {
6
- it('BLOCKS 섹션 안에서 parseEntities를 실행하면 scanner.next()가 <0, ENDBLK>이어야 한다.', () => {
7
- const content = ` 0
8
- LINE
9
- 5
10
- entity-0
11
- 100
12
- AcDbLine
13
- 100
14
- AcDbEntity
15
- 0
16
- ENDBLK
17
- 0
18
- EOF
19
- `.split('\n');
20
- const scanner = new DxfArrayScanner(content);
21
- let curr = scanner.next();
22
-
23
- parseEntities(curr, scanner);
24
-
25
- curr = scanner.next();
26
-
27
- expect(curr.code).toBe(0);
28
- expect(curr.value).toBe('ENDBLK');
29
- });
30
-
31
- it('ENTITIES 섹션 안에서 parseEntities를 실행하면 scanner.next()가 <0, ENDSEC>이어야 한다.', () => {
32
- const content = ` 0
33
- LINE
34
- 5
35
- entity-0
36
- 100
37
- AcDbLine
38
- 100
39
- AcDbEntity
40
- 0
41
- ENDSEC
42
- 0
43
- EOF
44
- `.split('\n');
45
- const scanner = new DxfArrayScanner(content);
46
- let curr = scanner.next();
47
-
48
- parseEntities(curr, scanner);
49
-
50
- curr = scanner.next();
51
-
52
- expect(curr.code).toBe(0);
53
- expect(curr.value).toBe('ENDSEC');
54
- });
55
-
56
- it('parseEntities는 모든 ENTITY를 소모하여야 한다.', () => {
57
- const content = ` 0
58
- LINE
59
- 5
60
- entity-0
61
- 100
62
- AcDbLine
63
- 0
64
- LINE
65
- 5
66
- entity-1
67
- 100
68
- AcDbLine
69
- 100
70
- AcDbEntity
71
- 0
72
- ENDBLK
73
- 0
74
- EOF
75
- `.split('\n');
76
- const scanner = new DxfArrayScanner(content);
77
- let curr = scanner.next();
78
-
79
- const entities = parseEntities(curr, scanner);
80
-
81
- expect(entities.length).toBe(2);
82
- expect(entities[0].handle).toBe('entity-0');
83
- expect(entities[1].handle).toBe('entity-1');
84
- });
85
- });
86
- });
@@ -1,190 +0,0 @@
1
- import { BoundaryPathEdgeType } from '../../../../consts';
2
- import { parsePoint } from '../../../shared/parsePoint';
3
- import {
4
- createParser,
5
- DXFParserSnippet,
6
- Identity,
7
- PointParser,
8
- ToBoolean,
9
- } from '../../../shared/parserGenerator';
10
- import { CommonBoundaryPathDataSnippets } from './shared';
11
-
12
- export const LineEdgeSnippets: DXFParserSnippet[] = [
13
- {
14
- code: 11,
15
- name: 'end',
16
- parser: PointParser,
17
- },
18
- {
19
- code: 10,
20
- name: 'start',
21
- parser: PointParser,
22
- },
23
- ];
24
-
25
- export const CircularEdgeSnippets: DXFParserSnippet[] = [
26
- {
27
- code: 73,
28
- name: 'isCCW',
29
- parser: ToBoolean,
30
- },
31
- {
32
- code: 51,
33
- name: 'endAngle',
34
- parser: Identity,
35
- },
36
- {
37
- code: 50,
38
- name: 'startAngle',
39
- parser: Identity,
40
- },
41
- {
42
- code: 40,
43
- name: 'radius',
44
- parser: Identity,
45
- },
46
- {
47
- code: 10,
48
- name: 'center',
49
- parser: PointParser,
50
- },
51
- ];
52
-
53
- export const EllipseEdgeSnippets: DXFParserSnippet[] = [
54
- {
55
- code: 73,
56
- name: 'isCCW',
57
- parser: ToBoolean,
58
- },
59
- {
60
- code: 51,
61
- name: 'endAngle',
62
- parser: Identity,
63
- },
64
- {
65
- code: 50,
66
- name: 'startAngle',
67
- parser: Identity,
68
- },
69
- {
70
- code: 40,
71
- name: 'lengthOfMinorAxis',
72
- parser: Identity,
73
- },
74
- {
75
- code: 11,
76
- name: 'end',
77
- parser: PointParser,
78
- },
79
- {
80
- code: 10,
81
- name: 'center',
82
- parser: PointParser,
83
- },
84
- ];
85
-
86
- export const SplineEdgeSnippets: DXFParserSnippet[] = [
87
- {
88
- code: 13,
89
- name: 'endTangent',
90
- parser: PointParser,
91
- },
92
- {
93
- code: 12,
94
- name: 'startTangent',
95
- parser: PointParser,
96
- },
97
- {
98
- code: 11,
99
- name: 'fitDatum',
100
- isMultiple: true,
101
- parser: PointParser,
102
- },
103
- {
104
- code: 97,
105
- name: 'numberOfFitData',
106
- parser: Identity,
107
- },
108
- {
109
- code: 10,
110
- name: 'controlPoints',
111
- isMultiple: true,
112
- parser(curr, scanner) {
113
- const controlPoint = { ...parsePoint(scanner), weight: 1 };
114
- curr = scanner.next();
115
-
116
- if (curr.code === 42) {
117
- controlPoint.weight = curr.value;
118
- } else {
119
- scanner.rewind();
120
- }
121
-
122
- return controlPoint;
123
- },
124
- },
125
- {
126
- code: 40,
127
- name: 'knots',
128
- isMultiple: true,
129
- parser: Identity,
130
- },
131
- {
132
- code: 96,
133
- name: 'numberOfControlPoints',
134
- parser: Identity,
135
- },
136
- {
137
- code: 95,
138
- name: 'numberOfKnots',
139
- parser: Identity,
140
- },
141
- {
142
- code: 74,
143
- name: 'isPeriodic',
144
- parser: ToBoolean,
145
- },
146
- {
147
- code: 73,
148
- name: 'splineFlag',
149
- parser: Identity,
150
- },
151
- {
152
- code: 94,
153
- name: 'degree',
154
- parser: Identity,
155
- },
156
- ];
157
-
158
- const EdgeSnippetMap = {
159
- [BoundaryPathEdgeType.Line]: LineEdgeSnippets,
160
- [BoundaryPathEdgeType.Circular]: CircularEdgeSnippets,
161
- [BoundaryPathEdgeType.Elliptic]: EllipseEdgeSnippets,
162
- [BoundaryPathEdgeType.Spline]: SplineEdgeSnippets,
163
- };
164
-
165
- export const EdgeBoundaryPathDataSnippets: DXFParserSnippet[] = [
166
- ...CommonBoundaryPathDataSnippets,
167
- {
168
- code: 72,
169
- name: 'edges',
170
- parser(curr, scanner) {
171
- const edge = { type: curr.value };
172
- const parser = createParser(
173
- EdgeSnippetMap[edge.type as BoundaryPathEdgeType],
174
- );
175
-
176
- if (!parser) {
177
- throw new Error(`Invalid edge type ${edge.type}`);
178
- }
179
- curr = scanner.next();
180
- parser(curr, scanner, edge);
181
- return edge;
182
- },
183
- isMultiple: true,
184
- },
185
- {
186
- code: 93,
187
- name: 'numberOfEdges',
188
- parser: Identity,
189
- },
190
- ];
@@ -1,27 +0,0 @@
1
- import { BoundaryPathTypeFlag } from '../../../../consts';
2
- import type DxfArrayScanner from '../../../DxfArrayScanner';
3
- import type { ScannerGroup } from '../../../DxfArrayScanner';
4
- import { createParser } from '../../../shared/parserGenerator';
5
- import { EdgeBoundaryPathDataSnippets } from './edge';
6
- import { PolylineSnippets } from './polyline';
7
-
8
- export function parseBoundaryPathData(
9
- curr: ScannerGroup,
10
- scanner: DxfArrayScanner,
11
- ) {
12
- // assume start with 92
13
- const boundaryPathData = {
14
- boundaryPathTypeFlag: curr.value,
15
- };
16
- const isPolyline =
17
- boundaryPathData.boundaryPathTypeFlag & BoundaryPathTypeFlag.Polyline;
18
-
19
- curr = scanner.next();
20
-
21
- if (isPolyline) {
22
- createParser(PolylineSnippets)(curr, scanner, boundaryPathData);
23
- return boundaryPathData;
24
- }
25
- createParser(EdgeBoundaryPathDataSnippets)(curr, scanner, boundaryPathData);
26
- return boundaryPathData;
27
- }
@@ -1,43 +0,0 @@
1
- import { parsePoint } from '../../../shared/parsePoint';
2
- import {
3
- DXFParserSnippet,
4
- Identity,
5
- ToBoolean,
6
- } from '../../../shared/parserGenerator';
7
- import { CommonBoundaryPathDataSnippets } from './shared';
8
-
9
- export const PolylineSnippets: DXFParserSnippet[] = [
10
- ...CommonBoundaryPathDataSnippets,
11
- {
12
- code: 10,
13
- name: 'vertices',
14
- parser(curr, scanner) {
15
- const vertex = { ...parsePoint(scanner), bulge: 0 };
16
-
17
- curr = scanner.next();
18
- if (curr.code === 42) {
19
- vertex.bulge = curr.value;
20
- } else {
21
- scanner.rewind();
22
- }
23
-
24
- return vertex;
25
- },
26
- isMultiple: true,
27
- },
28
- {
29
- code: 93,
30
- name: 'numberOfVertices',
31
- parser: Identity,
32
- },
33
- {
34
- code: 73,
35
- name: 'isClosed',
36
- parser: ToBoolean,
37
- },
38
- {
39
- code: 72,
40
- name: 'hasBulge',
41
- parser: ToBoolean,
42
- },
43
- ];