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,117 +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 { TextHorizontalAlign, TextVerticalAlign } from './consts';
11
- import { TextEntity } from './types';
12
-
13
- export const DefaultTextEntity = {
14
- thickness: 0,
15
- rotation: 0,
16
- xScale: 1,
17
- obliqueAngle: 0,
18
- styleName: 'STANDARD',
19
- generationFlag: 0,
20
- halign: TextHorizontalAlign.LEFT,
21
- valign: TextVerticalAlign.BASELINE,
22
- extrusionDirection: { x: 0, y: 0, z: 1 },
23
- };
24
-
25
- export const TextEntityParserSnippets: DXFParserSnippet[] = [
26
- {
27
- code: 73,
28
- name: 'valign',
29
- parser: Identity,
30
- },
31
- {
32
- // skip for duplicated AcDbText
33
- code: 100,
34
- },
35
- {
36
- code: 210,
37
- name: 'extrusionDirection',
38
- parser: PointParser,
39
- },
40
- {
41
- code: 11,
42
- name: 'endPoint',
43
- parser: PointParser,
44
- },
45
- {
46
- code: 72,
47
- name: 'valign',
48
- parser: Identity,
49
- },
50
- {
51
- code: 72,
52
- name: 'halign',
53
- parser: Identity,
54
- },
55
- {
56
- code: 71,
57
- name: 'generationFlag',
58
- parser: Identity,
59
- },
60
- {
61
- code: 7,
62
- name: 'styleName',
63
- parser: Identity,
64
- },
65
- {
66
- code: 51,
67
- name: 'obliqueAngle',
68
- parser: Identity,
69
- },
70
- {
71
- code: 41,
72
- name: 'xScale',
73
- parser: Identity,
74
- },
75
- {
76
- code: 50,
77
- name: 'rotation',
78
- parser: Identity,
79
- },
80
- {
81
- code: 1,
82
- name: 'text',
83
- parser: Identity,
84
- },
85
- {
86
- code: 40,
87
- name: 'textHeight',
88
- parser: Identity,
89
- },
90
- {
91
- code: 10,
92
- name: 'startPoint',
93
- parser: PointParser,
94
- },
95
- {
96
- code: 39,
97
- name: 'thickness',
98
- parser: Identity,
99
- },
100
- {
101
- code: 100,
102
- name: 'subclassMarker',
103
- parser: Identity,
104
- },
105
- ...CommonEntitySnippets,
106
- ];
107
-
108
- export class TextEntityParser {
109
- static ForEntityName = 'TEXT';
110
- private parser = createParser(TextEntityParserSnippets, DefaultTextEntity);
111
-
112
- parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
113
- const entity = {} as any;
114
- this.parser(curr, scanner, entity);
115
- return entity as TextEntity;
116
- }
117
- }
@@ -1,21 +0,0 @@
1
- import type { Point3D } from '../../../types';
2
- import type { CommonDxfEntity } from '../shared';
3
- import { TextHorizontalAlign, TextVerticalAlign } from './consts';
4
-
5
- export interface TextEntity extends CommonDxfEntity {
6
- type: 'TEXT';
7
- subclassMarker: 'AcDbText';
8
- text: string;
9
- thickness: number;
10
- startPoint: Point3D;
11
- endPoint: Point3D;
12
- textHeight: number;
13
- rotation: number; // degree
14
- xScale: number;
15
- obliqueAngle: number;
16
- styleName: string;
17
- generationFlag: number;
18
- halign: TextHorizontalAlign;
19
- valign: TextVerticalAlign;
20
- extrusionDirection: Point3D;
21
- }
@@ -1,10 +0,0 @@
1
- export enum VertexFlag {
2
- CREATED_BY_CURVE_FIT = 1,
3
- TANGENT_DEFINED = 2,
4
- NOT_USED = 4,
5
- CREATED_BY_SPLINE_FIT = 8,
6
- SPLINE_CONTROL_POINT = 16,
7
- FOR_POLYLINE = 32,
8
- FOR_POLYGON = 64,
9
- POLYFACE = 128,
10
- }
@@ -1,3 +0,0 @@
1
- export * from './types';
2
- export * from './consts';
3
- export * from './parser';
@@ -1,90 +0,0 @@
1
- import { generateIntegers } from '../../../utils';
2
- import type DxfArrayScanner from '../../DxfArrayScanner';
3
- import type { ScannerGroup } from '../../DxfArrayScanner';
4
- import {
5
- createParser,
6
- DXFParserSnippet,
7
- Identity,
8
- } from '../../shared/parserGenerator';
9
- import { CommonEntitySnippets } from '../shared';
10
- import { VertexEntity } from './types';
11
-
12
- const DefaultVertexEntity = {
13
- startWidth: 0,
14
- endWidth: 0,
15
- bulge: 0,
16
- };
17
-
18
- const VertextParserSnippets: DXFParserSnippet[] = [
19
- {
20
- code: 91,
21
- name: 'id',
22
- parser: Identity,
23
- },
24
- {
25
- code: [...generateIntegers(71, 75)],
26
- name: 'faces',
27
- isMultiple: true, // isMultiple이 참이면 code가 달라도 동일한 곳에 넣어줌
28
- parser: Identity,
29
- },
30
- {
31
- code: 50,
32
- name: 'tangentDirection',
33
- parser: Identity,
34
- },
35
- {
36
- code: 70,
37
- name: 'flag',
38
- parser: Identity,
39
- },
40
- {
41
- code: 42,
42
- name: 'bulge',
43
- parser: Identity,
44
- },
45
- {
46
- code: 41,
47
- name: 'endWidth',
48
- parser: Identity,
49
- },
50
- {
51
- code: 40,
52
- name: 'startWidth',
53
- parser: Identity,
54
- },
55
- {
56
- code: 30,
57
- name: 'z',
58
- parser: Identity,
59
- },
60
- {
61
- code: 20,
62
- name: 'y',
63
- parser: Identity,
64
- },
65
- {
66
- code: 10,
67
- name: 'x',
68
- parser: Identity,
69
- },
70
- {
71
- code: 100,
72
- name: 'subclassMarker',
73
- parser: Identity,
74
- },
75
- {
76
- code: 100, // skip for AcDbVertex
77
- },
78
- ...CommonEntitySnippets,
79
- ];
80
-
81
- export class VertexParser {
82
- static ForEntityName = 'VERTEX';
83
- private parser = createParser(VertextParserSnippets, DefaultVertexEntity);
84
-
85
- parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
86
- const entity = {} as any;
87
- this.parser(curr, scanner, entity);
88
- return entity as VertexEntity;
89
- }
90
- }
@@ -1,17 +0,0 @@
1
- import { Point3D } from '../../../types';
2
- import { CommonDxfEntity } from '../shared';
3
- import { VertexFlag } from './consts';
4
-
5
- export interface VertexEntity extends CommonDxfEntity, Point3D {
6
- subclassMarker: 'AcDb2dVertex' | 'AcDb3dPolylineVertex';
7
- startWidth: number;
8
- endWidth: number;
9
- bulge: number;
10
- flag: VertexFlag;
11
- tangentDirection: number;
12
- polyfaceIndex0?: number;
13
- polyfaceIndex1?: number;
14
- polyfaceIndex2?: number;
15
- polyfaceIndex3?: number;
16
- id: number;
17
- }
@@ -1,178 +0,0 @@
1
- import type { ViewportEntity } from './types';
2
- import * as helpers from '../../ParseHelpers';
3
- import { parsePoint } from '../../shared/parsePoint';
4
- import {
5
- pointToVector2,
6
- pointToVector3,
7
- } from '../../../utils';
8
- import { CommonDxfEntity } from '../shared';
9
-
10
- export default class ViewportParser {
11
- static ForEntityName = 'VIEWPORT';
12
-
13
- parseEntity(scanner: any, curr: any) {
14
- const entity = {} as ViewportEntity;
15
-
16
- while (curr !== 'EOF') {
17
- if (curr.code === 0) {
18
- scanner.rewind();
19
- return entity;
20
- }
21
-
22
- if (!parseViewport(entity, scanner, curr)) {
23
- helpers.checkCommonEntityProperties(entity as CommonDxfEntity, curr, scanner);
24
- }
25
- curr = scanner.next();
26
- }
27
-
28
- return entity;
29
- }
30
- }
31
-
32
- function parseViewport(entity: ViewportEntity, scanner: any, curr: any) {
33
- if (curr === 'EOF') return false;
34
-
35
- switch (curr.code) {
36
- case 0:
37
- return false;
38
- case 100:
39
- entity.subclassMarker = curr.value;
40
- break;
41
- case 10:
42
- entity.viewportCenter = pointToVector3(parsePoint(scanner));
43
- break;
44
- case 40:
45
- entity.width = curr.value;
46
- break;
47
- case 41:
48
- entity.height = curr.value;
49
- break;
50
- case 68:
51
- entity.status = curr.value;
52
- break;
53
- case 69:
54
- entity.viewportId = curr.value;
55
- break;
56
- case 12:
57
- entity.displayCenter = pointToVector2(parsePoint(scanner));
58
- break;
59
- case 13:
60
- entity.snapBase = pointToVector2(parsePoint(scanner));
61
- break;
62
- case 14:
63
- entity.snapSpacing = pointToVector2(parsePoint(scanner));
64
- break;
65
- case 15:
66
- entity.gridSpacing = pointToVector2(parsePoint(scanner));
67
- break;
68
- case 16:
69
- entity.viewDirection = pointToVector3(parsePoint(scanner));
70
- break;
71
- case 17:
72
- entity.targetPoint = pointToVector3(parsePoint(scanner));
73
- break;
74
- case 42:
75
- entity.perspectiveLensLength = curr.value;
76
- break;
77
- case 43:
78
- entity.frontClipZ = curr.value;
79
- break;
80
- case 44:
81
- entity.backClipZ = curr.value;
82
- break;
83
- case 45:
84
- entity.viewHeight = curr.value;
85
- break;
86
- case 50:
87
- entity.snapAngle = curr.value;
88
- break;
89
- case 51:
90
- entity.viewTwistAngle = curr.value;
91
- break;
92
- case 72:
93
- entity.circleZoomPercent = curr.value;
94
- break;
95
- case 331:
96
- entity.frozenLayerIds ??= [];
97
- entity.frozenLayerIds.push(curr.value);
98
- break;
99
- case 90:
100
- entity.statusBitFlags = curr.value;
101
- break;
102
- case 340:
103
- entity.clippingBoundaryId = curr.value;
104
- break;
105
- case 1:
106
- entity.sheetName = curr.value;
107
- break;
108
- case 281:
109
- entity.renderMode = curr.value;
110
- break;
111
- case 71:
112
- entity.ucsPerViewport = curr.value;
113
- break;
114
- case 110:
115
- entity.ucsOrigin = pointToVector3(parsePoint(scanner));
116
- break;
117
- case 111:
118
- entity.ucsXAxis = pointToVector3(parsePoint(scanner));
119
- break;
120
- case 112:
121
- entity.ucsYAxis = pointToVector3(parsePoint(scanner));
122
- break;
123
- case 345:
124
- entity.ucsId = curr.value;
125
- break;
126
- case 346:
127
- entity.ucsBaseId = curr.value;
128
- break;
129
- case 79:
130
- entity.orthographicType = curr.value;
131
- break;
132
- case 146:
133
- entity.elevation = curr.value;
134
- break;
135
- case 170:
136
- entity.shadePlotMode = curr.value;
137
- break;
138
- case 61:
139
- entity.majorGridFrequency = curr.value;
140
- break;
141
- case 332:
142
- entity.backgroundId = curr.value;
143
- break;
144
- case 333:
145
- entity.shadePlotId = curr.value;
146
- break;
147
- case 348:
148
- entity.visualStyleId = curr.value;
149
- break;
150
- case 292:
151
- entity.isDefaultLighting = !!curr.value;
152
- break;
153
- case 282:
154
- entity.defaultLightingType = curr.value;
155
- break;
156
- case 141:
157
- entity.brightness = curr.value;
158
- break;
159
- case 142:
160
- entity.contrast = curr.value;
161
- break;
162
- case 63: // 타입이 조금씩 다름 셋 중 하나로 표현된다는 뜻인듯
163
- case 421:
164
- case 431:
165
- entity.ambientLightColor = curr.value;
166
- break;
167
- case 361:
168
- entity.sunId = curr.value;
169
- break;
170
- case 335:
171
- case 343:
172
- case 344:
173
- case 91:
174
- entity.softPointer = curr.value;
175
- break;
176
- }
177
- return true;
178
- }
@@ -1,58 +0,0 @@
1
- import {
2
- DefaultLightingType,
3
- OrthographicType,
4
- RenderMode,
5
- ShadePlotMode,
6
- UCSPerViewport,
7
- } from '../../../consts';
8
- import type { Vector2, Vector3 } from 'three';
9
-
10
- export interface ViewportEntity {
11
- type: 'VIEWPORT';
12
- subclassMarker: string;
13
- handle?: string;
14
- layer?: string;
15
- viewportCenter: Vector3; // WCS
16
- width: number; // paper space unit
17
- height: number; // paper space unit
18
- status: number; // -1: ON but off scren, 0: OFF, positive: ON and active
19
- viewportId: string;
20
- displayCenter: Vector2; // DCS, viewportCenter가 화면 상 displayCenter에 와야된다는 뜻
21
- snapBase: Vector2;
22
- snapSpacing: Vector2;
23
- gridSpacing: Vector2;
24
- viewDirection: Vector3; // WCS
25
- targetPoint: Vector3; // WCS
26
- perspectiveLensLength: number;
27
- frontClipZ: number;
28
- backClipZ: number;
29
- viewHeight: number; // model space unit
30
- snapAngle: number;
31
- viewTwistAngle: number;
32
- circleZoomPercent: number;
33
- frozenLayerIds?: string[];
34
- statusBitFlags: number;
35
- clippingBoundaryId?: string; // viewport가 직사각형 아닌 경우 경계선을 정의하는 entity id
36
- sheetName: string;
37
- renderMode: RenderMode;
38
- ucsPerViewport: UCSPerViewport;
39
- ucsOrigin?: Vector3;
40
- ucsXAxis?: Vector3;
41
- ucsYAxis?: Vector3;
42
- ucsId?: string; // ID/handle of AcDbUCSTableRecord if UCS is a named UCS. If not present, then UCS is unnamed
43
- ucsBaseId?: string; // ID/handle of AcDbUCSTableRecord of base UCS if UCS is orthographic. If it's not exists, taken to be WORLD
44
- orthographicType?: OrthographicType;
45
- elevation: number;
46
- shadePlotMode: ShadePlotMode;
47
- majorGridFrequency: number; // Frequency of major grid lines compared to minor grid lines
48
- backgroundId?: string;
49
- shadePlotId?: string;
50
- visualStyleId?: string;
51
- isDefaultLighting: boolean;
52
- defaultLightingType?: DefaultLightingType;
53
- brightness: number;
54
- contrast: number;
55
- ambientLightColor?: string;
56
- sunId?: string;
57
- softPointer?: string;
58
- }
@@ -1,49 +0,0 @@
1
- import { filter, map } from '@fxts/core';
2
- import type { ParsedDxf } from './types';
3
- import type { CommonDxfEntity } from './entities/shared';
4
- import type { DimensionEntity } from './entities/dimension/types';
5
- import type { InsertEntity } from './entities/insert';
6
- import { flooding } from '../utils';
7
-
8
- export function filterDummyBlocks(dxf: ParsedDxf): ParsedDxf {
9
- // INSERT/DIMENSION 엔티티가 포함된 블록으로 그래프를 만듦
10
- const namedBlocks = Object.entries(dxf.blocks);
11
- const graph: Record<string, string[]> = {};
12
- const insertBlocks = filter(
13
- ([_, block]) => block.entities?.some(filterInsertOrDimension),
14
- namedBlocks,
15
- );
16
-
17
- for (const [name, block] of insertBlocks) {
18
- for (const subEntity of block.entities ?? []) {
19
- if (!filterInsertOrDimension(subEntity)) continue;
20
-
21
- graph[name] ??= [];
22
- graph[name].push(subEntity.name);
23
- }
24
- }
25
-
26
- // 루트 INSERT/DIMENSION 엔티티에서 접근가능한 모든 블록 이름을 수집
27
- const insertEntities = filter(filterInsertOrDimension, dxf.entities);
28
- const reachableNames = flooding<string>({
29
- seeds: [...map(({ name }) => name, insertEntities)],
30
- serializer: (name) => name,
31
- spanner: (name) => graph[name] ?? [],
32
- }).flat();
33
-
34
- return {
35
- ...dxf,
36
- blocks: Object.fromEntries(
37
- reachableNames.map((name) => [name, dxf.blocks[name]]),
38
- ),
39
- };
40
- }
41
-
42
- function filterInsertOrDimension(
43
- entity: CommonDxfEntity,
44
- ): entity is InsertEntity | DimensionEntity {
45
- return (
46
- entity.type === 'INSERT' ||
47
- (entity.type === 'DIMENSION' && !!(entity as DimensionEntity).name)
48
- );
49
- }
@@ -1,30 +0,0 @@
1
- import type DxfArrayScanner from '../DxfArrayScanner';
2
- import type { ScannerGroup } from '../DxfArrayScanner';
3
- import { parsePoint } from '../shared/parsePoint';
4
- import { isMatched } from '../shared';
5
-
6
- // scanner 위치는 읽히기 전이어야 함
7
- export function parseHeader(curr: ScannerGroup, scanner: DxfArrayScanner) {
8
- // interesting variables:
9
- // $ACADVER, $VIEWDIR, $VIEWSIZE, $VIEWCTR, $TDCREATE, $TDUPDATE
10
- // http://www.autodesk.com/techpubs/autocad/acadr14/dxf/header_section_al_u05_c.htm
11
- // Also see VPORT table entries
12
- let currVarName = null;
13
- const header: any = {};
14
-
15
- while (!isMatched(curr, 0, 'EOF')) {
16
- if (isMatched(curr, 0, 'ENDSEC')) {
17
- break;
18
- }
19
-
20
- if (curr.code === 9) {
21
- currVarName = curr.value;
22
- } else if (curr.code === 10) {
23
- header[currVarName] = parsePoint(scanner);
24
- } else {
25
- header[currVarName] = curr.value;
26
- }
27
- curr = scanner.next();
28
- }
29
- return header;
30
- }
@@ -1,55 +0,0 @@
1
- import { DXFParserSnippet, Identity } from '../shared/parserGenerator';
2
-
3
- export const CommonObjectSnippets: DXFParserSnippet[] = [
4
- {
5
- code: 330,
6
- name: 'ownerObjectId',
7
- parser: Identity,
8
- },
9
- {
10
- code: 102,
11
- // end of ACAD_XDICTIONARY
12
- },
13
- {
14
- code: 360,
15
- name: 'ownerDictionaryIdHard',
16
- parser: Identity,
17
- },
18
- {
19
- code: 102,
20
- // start of ACAD_XDICTIONARY
21
- },
22
- {
23
- code: 102,
24
- // end of ACAD_REACTOR
25
- },
26
- {
27
- code: 330,
28
- name: 'ownerDictionaryIdSoft',
29
- parser: Identity,
30
- },
31
- {
32
- code: 102,
33
- // start of ACAD_REACTOR
34
- },
35
- {
36
- code: 102,
37
- // end of application defined
38
- },
39
- {
40
- code: 102,
41
- // start of application defined
42
- },
43
- {
44
- code: 5,
45
- name: 'handle',
46
- parser: Identity,
47
- },
48
- ];
49
-
50
- export interface CommonDXFObject {
51
- ownerObjectId: string;
52
- ownerDictionaryIdHard: string;
53
- ownerDictionaryIdSoft: string;
54
- handle: string;
55
- }
@@ -1,61 +0,0 @@
1
- import {
2
- DXFParserSnippet,
3
- Identity,
4
- ToBoolean,
5
- } from '../shared/parserGenerator';
6
- import type { CommonDXFObject } from './common';
7
-
8
- export const DictionarySnippets: DXFParserSnippet[] = [
9
- {
10
- code: 3,
11
- name: 'entries',
12
- parser: (curr, scanner) => {
13
- const entry = {
14
- name: curr.value,
15
- } as DictionaryDXFObject['entries'][0];
16
-
17
- curr = scanner.next();
18
-
19
- if (curr.code === 350) {
20
- entry.objectId = curr.value;
21
- } else {
22
- // 만약 본인 토큰 아니면 스트림에 되돌려놔야 함
23
- scanner.rewind();
24
- }
25
-
26
- return entry;
27
- },
28
- isMultiple: true,
29
- },
30
- {
31
- code: 281,
32
- name: 'recordCloneFlag',
33
- parser: Identity,
34
- },
35
- {
36
- code: 280,
37
- name: 'isHardOwned',
38
- parser: ToBoolean,
39
- },
40
- {
41
- code: 100,
42
- name: 'subclassMarker',
43
- parser: Identity,
44
- },
45
- ];
46
-
47
- export enum RecordCloneFlag {
48
- NOT_APPLICABLE = 0,
49
- KEEP_EXISTING = 1,
50
- USE_CLONE = 2,
51
- XREF_VALUE_NAME = 3,
52
- VALUE_NAME = 4,
53
- UNMANGLE_NAME = 5,
54
- }
55
-
56
- export interface DictionaryDXFObject extends CommonDXFObject {
57
- subclassMarker: 'AcDbDictionary';
58
- isHardOwned?: boolean;
59
- recordCloneFlag: RecordCloneFlag;
60
- entries: { name: string; objectId?: string }[];
61
- }