@mlightcad/libredwg-converter 3.5.22 → 3.5.24
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/dist/libredwg-converter.js +178 -167
- package/dist/libredwg-converter.umd.cjs +1 -1
- package/dist/libredwg-parser-worker.js +4202 -4124
- package/lib/AcDbEntitiyConverter.d.ts.map +1 -1
- package/lib/AcDbEntitiyConverter.js +30 -4
- package/lib/AcDbEntitiyConverter.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AcDbFace as v, AcDbArc as O, AcGeVector3d as D, AcDbCircle as m, AcDbEllipse as k, AcDbLine as
|
|
1
|
+
import { AcDbFace as v, AcDbArc as O, AcGeVector3d as D, AcDbCircle as m, AcDbEllipse as k, AcDbLine as R, AcGePoint3d as w, AcDbSpline as T, AcDbPoint as F, AcDbTrace as V, AcDbPolyline as N, AcGePoint2d as b, AcDbPolygonMesh as B, AcDbPolyFaceMesh as z, AcDbPoly2dType as A, AcDb2dPolyline as j, AcDbPoly3dType as y, AcDb3dPolyline as W, AcDbHatch as H, AcGePolyline2d as X, AcGeLine2d as U, AcGeCircArc2d as G, AcGeVector2d as Y, AcGeEllipseArc2d as _, AcGeSpline3d as P, AcGeLoop2d as E, AcDbTable as Z, AcDbText as K, AcDbMText as q, AcDbLeader as J, AcDbAlignedDimension as Q, AcDbRotatedDimension as $, AcDb3PointAngularDimension as ee, AcDbOrdinateDimension as ne, AcDbRadialDimension as oe, AcDbDiametricDimension as te, AcDbRasterImage as se, AcDbWipeout as re, AcDbViewport as ie, AcDbRay as ce, AcDbXline as le, AcDbAttributeFlags as I, AcDbAttributeMTextFlag as M, AcDbAttribute as ae, AcDbAttributeDefinition as de, AcDbBlockReference as pe, AcCmTransparency as ue, AcDbDatabaseConverter as fe, createWorkerApi as he, AcDbLinetypeTableRecord as ge, AcDbTextStyleTableRecord as De, DEFAULT_TEXT_STYLE as L, AcDbDimStyleTableRecord as Ae, AcCmColor as Ie, AcDbLayerTableRecord as ye, AcDbViewportTableRecord as we, AcDbBlockTableRecord as Te, AcDbBatchProcessing as be, ByLayer as Pe, AcDbLayout as Ee, AcDbRasterImageDef as Me } from "@mlightcad/data-model";
|
|
2
2
|
class C {
|
|
3
3
|
convert(e) {
|
|
4
4
|
const n = this.createEntity(e);
|
|
@@ -28,22 +28,22 @@ class C {
|
|
|
28
28
|
);
|
|
29
29
|
}
|
|
30
30
|
convertEllipse(e) {
|
|
31
|
-
const n = new D(e.majorAxisEndPoint),
|
|
31
|
+
const n = new D(e.majorAxisEndPoint), t = n.length();
|
|
32
32
|
return new k(
|
|
33
33
|
e.center,
|
|
34
34
|
e.extrusionDirection ?? D.Z_AXIS,
|
|
35
35
|
n,
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
t,
|
|
37
|
+
t * e.axisRatio,
|
|
38
38
|
e.startAngle,
|
|
39
39
|
e.endAngle
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
convertLine(e) {
|
|
43
|
-
const n = e.startPoint,
|
|
44
|
-
return new
|
|
43
|
+
const n = e.startPoint, t = e.endPoint;
|
|
44
|
+
return new R(
|
|
45
45
|
new w(n.x, n.y, n.z),
|
|
46
|
-
new w(
|
|
46
|
+
new w(t.x, t.y, t.z)
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
49
|
convertSpline(e) {
|
|
@@ -68,7 +68,7 @@ class C {
|
|
|
68
68
|
return null;
|
|
69
69
|
}
|
|
70
70
|
convertPoint(e) {
|
|
71
|
-
const n = new
|
|
71
|
+
const n = new F();
|
|
72
72
|
return n.position = e.position, n;
|
|
73
73
|
}
|
|
74
74
|
convertSolid(e) {
|
|
@@ -81,19 +81,19 @@ class C {
|
|
|
81
81
|
convertLWPolyline(e) {
|
|
82
82
|
const n = new N();
|
|
83
83
|
n.closed = !!(e.flag & 512);
|
|
84
|
-
const
|
|
85
|
-
return e.vertices.forEach((o,
|
|
84
|
+
const t = e.constantWidth ?? -1;
|
|
85
|
+
return e.vertices.forEach((o, s) => {
|
|
86
86
|
n.addVertexAt(
|
|
87
|
-
|
|
87
|
+
s,
|
|
88
88
|
new b(o.x, o.y),
|
|
89
89
|
o.bulge,
|
|
90
|
-
o.startWidth ??
|
|
91
|
-
o.endWidth ??
|
|
90
|
+
o.startWidth ?? t,
|
|
91
|
+
o.endWidth ?? t
|
|
92
92
|
);
|
|
93
93
|
}), n;
|
|
94
94
|
}
|
|
95
95
|
convertPolyline2d(e) {
|
|
96
|
-
const n = !!(e.flag & 1),
|
|
96
|
+
const n = !!(e.flag & 1), t = !!(e.flag & 16), o = !!(e.flag & 64), s = !!(e.flag & 32), r = [], a = [], c = [];
|
|
97
97
|
if (e.vertices.map((i) => {
|
|
98
98
|
if (!(i.flag & 16))
|
|
99
99
|
if (o && i.flag & 128)
|
|
@@ -102,7 +102,7 @@ class C {
|
|
|
102
102
|
x: i.x,
|
|
103
103
|
y: i.y,
|
|
104
104
|
z: i.z
|
|
105
|
-
}),
|
|
105
|
+
}), a.push(i.bulge ?? 0);
|
|
106
106
|
else {
|
|
107
107
|
const d = [];
|
|
108
108
|
i.polyfaceIndex0 != null && i.polyfaceIndex0 != 0 && d.push(Math.abs(i.polyfaceIndex0) - 1), i.polyfaceIndex1 != null && i.polyfaceIndex1 != 0 && d.push(Math.abs(i.polyfaceIndex1) - 1), i.polyfaceIndex2 != null && i.polyfaceIndex2 != 0 && d.push(Math.abs(i.polyfaceIndex2) - 1), i.polyfaceIndex3 != null && i.polyfaceIndex3 != 0 && d.push(Math.abs(i.polyfaceIndex3) - 1), d.length >= 3 && c.push(d);
|
|
@@ -112,10 +112,10 @@ class C {
|
|
|
112
112
|
x: i.x,
|
|
113
113
|
y: i.y,
|
|
114
114
|
z: i.z
|
|
115
|
-
}),
|
|
116
|
-
}),
|
|
115
|
+
}), a.push(i.bulge ?? 0);
|
|
116
|
+
}), t) {
|
|
117
117
|
const i = e.meshMVertexCount ?? 2, d = e.meshNVertexCount ?? 2;
|
|
118
|
-
return new B(i, d, r, n,
|
|
118
|
+
return new B(i, d, r, n, s);
|
|
119
119
|
} else {
|
|
120
120
|
if (o)
|
|
121
121
|
return new z(r, c);
|
|
@@ -128,37 +128,37 @@ class C {
|
|
|
128
128
|
n,
|
|
129
129
|
e.startWidth,
|
|
130
130
|
e.endWidth,
|
|
131
|
-
|
|
131
|
+
a
|
|
132
132
|
);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
convertPolyline3d(e) {
|
|
137
|
-
const n = !!(e.flag & 1),
|
|
138
|
-
e.vertices.map((
|
|
139
|
-
|
|
140
|
-
x:
|
|
141
|
-
y:
|
|
142
|
-
z:
|
|
137
|
+
const n = !!(e.flag & 1), t = [];
|
|
138
|
+
e.vertices.map((s) => {
|
|
139
|
+
s.flag & 16 || t.push({
|
|
140
|
+
x: s.x,
|
|
141
|
+
y: s.y,
|
|
142
|
+
z: s.z
|
|
143
143
|
});
|
|
144
144
|
});
|
|
145
145
|
let o = y.SimplePoly;
|
|
146
|
-
return e.flag & 4 && (e.smoothType == 6 ? o = y.CubicSplinePoly : e.smoothType == 5 && (o = y.QuadSplinePoly)), new W(o,
|
|
146
|
+
return e.flag & 4 && (e.smoothType == 6 ? o = y.CubicSplinePoly : e.smoothType == 5 && (o = y.QuadSplinePoly)), new W(o, t, n);
|
|
147
147
|
}
|
|
148
148
|
convertHatch(e) {
|
|
149
149
|
var o;
|
|
150
150
|
const n = new H();
|
|
151
|
-
return (o = e.definitionLines) == null || o.forEach((
|
|
151
|
+
return (o = e.definitionLines) == null || o.forEach((s) => {
|
|
152
152
|
n.definitionLines.push({
|
|
153
|
-
angle:
|
|
154
|
-
base:
|
|
155
|
-
offset:
|
|
156
|
-
dashLengths:
|
|
153
|
+
angle: s.angle,
|
|
154
|
+
base: s.base,
|
|
155
|
+
offset: s.offset,
|
|
156
|
+
dashLengths: s.numberOfDashLengths > 0 ? s.dashLengths : []
|
|
157
157
|
});
|
|
158
|
-
}), n.isSolidFill = e.solidFill == 1, n.hatchStyle = e.hatchStyle, n.patternName = e.patternName, n.patternType = e.patternType, n.patternAngle = e.patternAngle == null ? 0 : e.patternAngle, n.patternScale = e.patternScale == null ? 0 : e.patternScale, e.boundaryPaths.forEach((
|
|
159
|
-
if (
|
|
160
|
-
const
|
|
161
|
-
c.closed =
|
|
158
|
+
}), n.isSolidFill = e.solidFill == 1, n.hatchStyle = e.hatchStyle, n.patternName = e.patternName, n.patternType = e.patternType, n.patternAngle = e.patternAngle == null ? 0 : e.patternAngle, n.patternScale = e.patternScale == null ? 0 : e.patternScale, e.boundaryPaths.forEach((s) => {
|
|
159
|
+
if (s.boundaryPathTypeFlag & 2) {
|
|
160
|
+
const a = s, c = new X();
|
|
161
|
+
c.closed = a.isClosed, a.vertices.forEach((i, d) => {
|
|
162
162
|
c.addVertexAt(d, {
|
|
163
163
|
x: i.x,
|
|
164
164
|
y: i.y,
|
|
@@ -166,46 +166,46 @@ class C {
|
|
|
166
166
|
});
|
|
167
167
|
}), n.add(c);
|
|
168
168
|
} else {
|
|
169
|
-
const
|
|
170
|
-
|
|
169
|
+
const a = s, c = [];
|
|
170
|
+
a.edges.forEach((d) => {
|
|
171
171
|
if (d != null) {
|
|
172
172
|
if (d.type == 1) {
|
|
173
|
-
const
|
|
174
|
-
c.push(new U(
|
|
173
|
+
const l = d;
|
|
174
|
+
c.push(new U(l.start, l.end));
|
|
175
175
|
} else if (d.type == 2) {
|
|
176
|
-
const
|
|
176
|
+
const l = d;
|
|
177
177
|
c.push(
|
|
178
178
|
new G(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
!
|
|
179
|
+
l.center,
|
|
180
|
+
l.radius,
|
|
181
|
+
l.startAngle,
|
|
182
|
+
l.endAngle,
|
|
183
|
+
!l.isCCW
|
|
184
184
|
)
|
|
185
185
|
);
|
|
186
186
|
} else if (d.type == 3) {
|
|
187
|
-
const
|
|
188
|
-
new Y().subVectors(
|
|
187
|
+
const l = d;
|
|
188
|
+
new Y().subVectors(l.end, l.center);
|
|
189
189
|
const p = Math.sqrt(
|
|
190
|
-
Math.pow(
|
|
191
|
-
), u = p *
|
|
192
|
-
let f =
|
|
193
|
-
const x = Math.atan2(
|
|
194
|
-
|
|
190
|
+
Math.pow(l.end.x, 2) + Math.pow(l.end.y, 2)
|
|
191
|
+
), u = p * l.lengthOfMinorAxis;
|
|
192
|
+
let f = l.startAngle, g = l.endAngle;
|
|
193
|
+
const x = Math.atan2(l.end.y, l.end.x);
|
|
194
|
+
l.isCCW || (f = Math.PI * 2 - f, g = Math.PI * 2 - g), c.push(
|
|
195
195
|
new _(
|
|
196
|
-
{ ...
|
|
196
|
+
{ ...l.center, z: 0 },
|
|
197
197
|
p,
|
|
198
198
|
u,
|
|
199
199
|
f,
|
|
200
200
|
g,
|
|
201
|
-
!
|
|
201
|
+
!l.isCCW,
|
|
202
202
|
x
|
|
203
203
|
)
|
|
204
204
|
);
|
|
205
205
|
} else if (d.type == 4) {
|
|
206
|
-
const
|
|
207
|
-
if (
|
|
208
|
-
const h =
|
|
206
|
+
const l = d;
|
|
207
|
+
if (l.numberOfControlPoints > 0 && l.numberOfKnots > 0) {
|
|
208
|
+
const h = l.controlPoints.map(
|
|
209
209
|
(f) => ({
|
|
210
210
|
x: f.x,
|
|
211
211
|
y: f.y,
|
|
@@ -213,16 +213,16 @@ class C {
|
|
|
213
213
|
})
|
|
214
214
|
);
|
|
215
215
|
let p = !0;
|
|
216
|
-
const u =
|
|
216
|
+
const u = l.controlPoints.map((f) => (f.weight == null && (p = !1), f.weight || 1));
|
|
217
217
|
c.push(
|
|
218
218
|
new P(
|
|
219
219
|
h,
|
|
220
|
-
|
|
220
|
+
l.knots,
|
|
221
221
|
p ? u : void 0
|
|
222
222
|
)
|
|
223
223
|
);
|
|
224
|
-
} else if (
|
|
225
|
-
const h =
|
|
224
|
+
} else if (l.numberOfFitData > 0) {
|
|
225
|
+
const h = l.fitDatum.map((p) => ({
|
|
226
226
|
x: p.x,
|
|
227
227
|
y: p.y,
|
|
228
228
|
z: 0
|
|
@@ -244,11 +244,11 @@ class C {
|
|
|
244
244
|
e.columnCount
|
|
245
245
|
);
|
|
246
246
|
return n.tableStyleId = e.tableStyleId, n.owningBlockRecordId = e.blockRecordHandle, e.directionVector && (n.horizontalDirection = new D(e.directionVector)), n.attachmentPoint = e.attachmentPoint, n.position.copy(e.startPoint), n.tableValueFlag = e.tableValue, n.tableOverrideFlag = e.overrideFlag, n.borderColorOverrideFlag = e.borderColorOverrideFlag, n.borderLineweightOverrideFlag = e.borderLineWeightOverrideFlag, n.borderVisibilityOverrideFlag = e.borderVisibilityOverrideFlag, e.columnWidthArr.forEach(
|
|
247
|
-
(
|
|
247
|
+
(t, o) => n.setColumnWidth(o, t)
|
|
248
248
|
), e.rowHeightArr.forEach(
|
|
249
|
-
(
|
|
250
|
-
), e.cells.forEach((
|
|
251
|
-
n.setCell(o,
|
|
249
|
+
(t, o) => n.setRowHeight(o, t)
|
|
250
|
+
), e.cells.forEach((t, o) => {
|
|
251
|
+
n.setCell(o, t);
|
|
252
252
|
}), n;
|
|
253
253
|
}
|
|
254
254
|
convertText(e) {
|
|
@@ -261,56 +261,67 @@ class C {
|
|
|
261
261
|
}
|
|
262
262
|
convertLeader(e) {
|
|
263
263
|
const n = new J();
|
|
264
|
-
return e.vertices.forEach((
|
|
265
|
-
n.appendVertex(
|
|
264
|
+
return e.vertices.forEach((t) => {
|
|
265
|
+
n.appendVertex(t);
|
|
266
266
|
}), n.hasArrowHead = e.isArrowheadEnabled, n.hasHookLine = e.isHooklineExists, n.isSplined = e.isSpline, n.dimensionStyle = e.styleName, n.annoType = e.leaderCreationFlag, n;
|
|
267
267
|
}
|
|
268
268
|
convertDimension(e) {
|
|
269
|
-
if (e.subclassMarker == "AcDbAlignedDimension"
|
|
270
|
-
const n = e,
|
|
269
|
+
if (e.subclassMarker == "AcDbAlignedDimension") {
|
|
270
|
+
const n = e, t = new Q(
|
|
271
271
|
n.subDefinitionPoint1,
|
|
272
272
|
n.subDefinitionPoint2,
|
|
273
273
|
n.definitionPoint
|
|
274
274
|
);
|
|
275
|
-
return n.insertionPoint && (
|
|
275
|
+
return n.insertionPoint && (t.dimBlockPosition = {
|
|
276
276
|
x: n.insertionPoint.x,
|
|
277
277
|
y: n.insertionPoint.y,
|
|
278
278
|
z: 0
|
|
279
|
-
}),
|
|
279
|
+
}), t.rotation = n.rotationAngle, this.processDimensionCommonAttrs(e, t), t;
|
|
280
|
+
} else if (e.subclassMarker == "AcDbRotatedDimension") {
|
|
281
|
+
const n = e, t = new $(
|
|
282
|
+
n.subDefinitionPoint1,
|
|
283
|
+
n.subDefinitionPoint2,
|
|
284
|
+
n.definitionPoint
|
|
285
|
+
);
|
|
286
|
+
return n.insertionPoint && (t.dimBlockPosition = {
|
|
287
|
+
x: n.insertionPoint.x,
|
|
288
|
+
y: n.insertionPoint.y,
|
|
289
|
+
z: 0
|
|
290
|
+
}), t.rotation = n.rotationAngle, this.processDimensionCommonAttrs(e, t), t;
|
|
280
291
|
} else if (e.subclassMarker == "AcDb3PointAngularDimension") {
|
|
281
|
-
const n = e,
|
|
292
|
+
const n = e, t = new ee(
|
|
282
293
|
n.centerPoint,
|
|
283
294
|
n.subDefinitionPoint1,
|
|
284
295
|
n.subDefinitionPoint2,
|
|
285
296
|
n.definitionPoint
|
|
286
297
|
);
|
|
287
|
-
return this.processDimensionCommonAttrs(e,
|
|
298
|
+
return this.processDimensionCommonAttrs(e, t), t;
|
|
288
299
|
} else if (e.subclassMarker == "AcDbOrdinateDimension") {
|
|
289
|
-
const n = e,
|
|
300
|
+
const n = e, t = new ne(
|
|
290
301
|
n.subDefinitionPoint1,
|
|
291
302
|
n.subDefinitionPoint2
|
|
292
303
|
);
|
|
293
|
-
return this.processDimensionCommonAttrs(e,
|
|
304
|
+
return this.processDimensionCommonAttrs(e, t), t;
|
|
294
305
|
} else if (e.subclassMarker == "AcDbRadialDimension") {
|
|
295
|
-
const n = e,
|
|
306
|
+
const n = e, t = new oe(
|
|
296
307
|
n.definitionPoint,
|
|
297
308
|
n.centerPoint,
|
|
298
309
|
n.leaderLength
|
|
299
310
|
);
|
|
300
|
-
return this.processDimensionCommonAttrs(e,
|
|
311
|
+
return this.processDimensionCommonAttrs(e, t), t;
|
|
301
312
|
} else if (e.subclassMarker == "AcDbDiametricDimension") {
|
|
302
|
-
const n = e,
|
|
313
|
+
const n = e, t = new te(
|
|
303
314
|
n.definitionPoint,
|
|
304
315
|
n.centerPoint,
|
|
305
316
|
n.leaderLength
|
|
306
317
|
);
|
|
307
|
-
return this.processDimensionCommonAttrs(e,
|
|
318
|
+
return this.processDimensionCommonAttrs(e, t), t;
|
|
308
319
|
}
|
|
309
320
|
return null;
|
|
310
321
|
}
|
|
311
322
|
processImage(e, n) {
|
|
312
|
-
n.position.copy(e.position), n.brightness = e.brightness, n.contrast = e.contrast, n.fade = e.fade, n.imageSize.copy(e.imageSize), n.imageDefId = e.imageDefHandle, n.isClipped = e.clipping > 0, n.isShownClipped = (e.flags | 4) > 0, n.isImageShown = (e.flags | 3) > 0, n.isImageTransparent = (e.flags | 8) > 0, e.clippingBoundaryPath.forEach((
|
|
313
|
-
n.clipBoundary.push(new b(
|
|
323
|
+
n.position.copy(e.position), n.brightness = e.brightness, n.contrast = e.contrast, n.fade = e.fade, n.imageSize.copy(e.imageSize), n.imageDefId = e.imageDefHandle, n.isClipped = e.clipping > 0, n.isShownClipped = (e.flags | 4) > 0, n.isImageShown = (e.flags | 3) > 0, n.isImageTransparent = (e.flags | 8) > 0, e.clippingBoundaryPath.forEach((t) => {
|
|
324
|
+
n.clipBoundary.push(new b(t));
|
|
314
325
|
}), n.clipBoundaryType = e.clippingBoundaryType, n.width = Math.sqrt(
|
|
315
326
|
e.uPixel.x ** 2 + e.uPixel.y ** 2 + e.uPixel.z ** 2
|
|
316
327
|
) * e.imageSize.x, n.height = Math.sqrt(
|
|
@@ -318,41 +329,41 @@ class C {
|
|
|
318
329
|
) * e.imageSize.y, n.rotation = Math.atan2(e.uPixel.y, e.uPixel.x);
|
|
319
330
|
}
|
|
320
331
|
convertImage(e) {
|
|
321
|
-
const n = new
|
|
332
|
+
const n = new se();
|
|
322
333
|
return this.processImage(e, n), n;
|
|
323
334
|
}
|
|
324
335
|
convertWipeout(e) {
|
|
325
|
-
const n = new
|
|
336
|
+
const n = new re();
|
|
326
337
|
return this.processImage(e, n), n;
|
|
327
338
|
}
|
|
328
339
|
convertViewport(e) {
|
|
329
|
-
const n = new
|
|
340
|
+
const n = new ie();
|
|
330
341
|
return n.number = e.viewportId, n.centerPoint.copy(e.viewportCenter), n.height = e.height, n.width = e.width, n.viewCenter.copy(e.displayCenter), n.viewHeight = e.viewHeight, n;
|
|
331
342
|
}
|
|
332
343
|
convertRay(e) {
|
|
333
|
-
const n = new
|
|
344
|
+
const n = new ce();
|
|
334
345
|
return n.basePoint.copy(e.firstPoint), n.unitDir.copy(e.unitDirection), n;
|
|
335
346
|
}
|
|
336
347
|
convertXline(e) {
|
|
337
|
-
const n = new
|
|
348
|
+
const n = new le();
|
|
338
349
|
return n.basePoint.copy(e.firstPoint), n.unitDir.copy(e.unitDirection), n;
|
|
339
350
|
}
|
|
340
351
|
convertAttributeCommon(e, n) {
|
|
341
|
-
const
|
|
342
|
-
n.textString =
|
|
352
|
+
const t = e.text;
|
|
353
|
+
n.textString = t.text, n.styleName = t.styleName, n.height = t.textHeight, n.position.copy(t.startPoint), n.rotation = t.rotation, n.oblique = t.obliqueAngle ?? 0, n.thickness = t.thickness, n.horizontalMode = t.halign, n.verticalMode = t.valign, n.widthFactor = t.xScale ?? 1, n.tag = e.tag, n.fieldLength = e.fieldLength, n.isInvisible = (e.flags & I.Invisible) !== 0, n.isConst = (e.flags & I.Const) !== 0, n.isVerifiable = (e.flags & I.Verifiable) !== 0, n.isPreset = (e.flags & I.Preset) !== 0, n.lockPositionInBlock = e.lockPositionFlag, n.isReallyLocked = e.isReallyLocked, n.isMTextAttribute = (e.mtextFlag & M.MultiLine) !== 0, n.isConstMTextAttribute = (e.mtextFlag & M.ConstMultiLine) !== 0;
|
|
343
354
|
}
|
|
344
355
|
convertAttribute(e) {
|
|
345
356
|
const n = new ae();
|
|
346
357
|
return this.convertAttributeCommon(e, n), n;
|
|
347
358
|
}
|
|
348
359
|
convertAttributeDefinition(e) {
|
|
349
|
-
const n = new
|
|
360
|
+
const n = new de();
|
|
350
361
|
return this.convertAttributeCommon(e, n), n.prompt = e.prompt, n;
|
|
351
362
|
}
|
|
352
363
|
convertBlockReference(e) {
|
|
353
|
-
const n = new
|
|
354
|
-
return e.insertionPoint && n.position.copy(e.insertionPoint), n.scaleFactors.x = e.xScale, n.scaleFactors.y = e.yScale, n.scaleFactors.z = e.zScale, n.rotation = e.rotation, n.normal.copy(e.extrusionDirection), e.attribs && e.attribs.forEach((
|
|
355
|
-
const o = this.convertAttribute(
|
|
364
|
+
const n = new pe(e.name);
|
|
365
|
+
return e.insertionPoint && n.position.copy(e.insertionPoint), n.scaleFactors.x = e.xScale, n.scaleFactors.y = e.yScale, n.scaleFactors.z = e.zScale, n.rotation = e.rotation, n.normal.copy(e.extrusionDirection), e.attribs && e.attribs.forEach((t) => {
|
|
366
|
+
const o = this.convertAttribute(t);
|
|
356
367
|
n.appendAttributes(o);
|
|
357
368
|
}), n;
|
|
358
369
|
}
|
|
@@ -360,26 +371,26 @@ class C {
|
|
|
360
371
|
n.dimBlockId = e.name, n.textPosition.copy(e.textPoint), n.textRotation = e.textRotation || 0, e.textLineSpacingFactor && (n.textLineSpacingFactor = e.textLineSpacingFactor), e.textLineSpacingStyle && (n.textLineSpacingStyle = e.textLineSpacingStyle), n.dimensionStyleName = e.styleName, n.dimensionText = e.text || "", n.measurement = e.measurement;
|
|
361
372
|
}
|
|
362
373
|
processCommonAttrs(e, n) {
|
|
363
|
-
if (n.layer = e.layer || "0", n.objectId = e.handle, n.ownerId = e.ownerBlockRecordSoftId, e.lineType != null && (n.lineType = e.lineType), e.lineweight != null && (n.lineWeight = e.lineweight), e.lineTypeScale != null && (n.linetypeScale = e.lineTypeScale), e.color != null && n.color.setRGBValue(e.color), e.colorIndex != null && (n.color.colorIndex = e.colorIndex), e.colorName && (n.color.colorName = e.colorName), e.isVisible != null && (n.visibility = e.isVisible), e.transparency != null) {
|
|
364
|
-
const
|
|
365
|
-
|
|
374
|
+
if (n.layer = e.layer || "0", n.objectId = e.handle, n.ownerId = e.ownerBlockRecordSoftId, e.lineType != null && (n.lineType = e.lineType), e.lineweight != null && (n.lineWeight = e.lineweight), e.lineTypeScale != null && (n.linetypeScale = e.lineTypeScale), e.color != null && n.color.setRGBValue(e.color), e.colorIndex != null && (e.color == null || e.colorIndex === 7) && (n.color.colorIndex = e.colorIndex), e.colorName && (n.color.colorName = e.colorName), e.isVisible != null && (n.visibility = e.isVisible), e.transparency != null) {
|
|
375
|
+
const t = new ue();
|
|
376
|
+
t.method = e.transparencyType, (t.isByBlock || t.isByBlock) && (t.alpha = e.transparency), n.transparency = t;
|
|
366
377
|
}
|
|
367
378
|
}
|
|
368
379
|
}
|
|
369
|
-
const
|
|
370
|
-
class
|
|
380
|
+
const Le = "*MODEL_SPACE";
|
|
381
|
+
class Se extends fe {
|
|
371
382
|
constructor(e = {}) {
|
|
372
383
|
super(e), e.useWorker = !0, e.parserWorkerUrl || (e.parserWorkerUrl = "/assets/libredwg-parser-worker.js");
|
|
373
384
|
}
|
|
374
385
|
async parse(e, n) {
|
|
375
|
-
const
|
|
376
|
-
if (
|
|
377
|
-
const
|
|
378
|
-
workerUrl:
|
|
386
|
+
const t = this.config, o = this.getParserWorkerTimeout(e, n);
|
|
387
|
+
if (t.useWorker && t.parserWorkerUrl) {
|
|
388
|
+
const s = he({
|
|
389
|
+
workerUrl: t.parserWorkerUrl,
|
|
379
390
|
timeout: o,
|
|
380
391
|
maxConcurrentWorkers: 1
|
|
381
|
-
}), r = await
|
|
382
|
-
if (
|
|
392
|
+
}), r = await s.execute(e);
|
|
393
|
+
if (s.destroy(), r.success)
|
|
383
394
|
return r.data;
|
|
384
395
|
throw new Error(
|
|
385
396
|
`Failed to parse drawing due to error: '${r.error}'`
|
|
@@ -392,60 +403,60 @@ class Ce extends ue {
|
|
|
392
403
|
e.tables.BLOCK_RECORD.entries.forEach((r) => {
|
|
393
404
|
n.set(r.name, r);
|
|
394
405
|
});
|
|
395
|
-
const
|
|
406
|
+
const t = /* @__PURE__ */ new Map(), o = (r) => {
|
|
396
407
|
if (r) {
|
|
397
|
-
const
|
|
398
|
-
return
|
|
408
|
+
const a = r.lastIndexOf(".");
|
|
409
|
+
return a >= 0 ? r.substring(0, a).toLowerCase() : r.toLowerCase();
|
|
399
410
|
}
|
|
400
411
|
};
|
|
401
412
|
e.tables.STYLE.entries.forEach((r) => {
|
|
402
|
-
const
|
|
413
|
+
const a = [];
|
|
403
414
|
let c = o(r.font);
|
|
404
|
-
c &&
|
|
415
|
+
c && a.push(c), c = o(r.bigFont), c && a.push(c), t.set(r.name, a);
|
|
405
416
|
});
|
|
406
|
-
const
|
|
407
|
-
return this.getFontsInBlock(e.entities, n,
|
|
417
|
+
const s = /* @__PURE__ */ new Set();
|
|
418
|
+
return this.getFontsInBlock(e.entities, n, t, s), Array.from(s);
|
|
408
419
|
}
|
|
409
|
-
getFontsInBlock(e, n,
|
|
410
|
-
const
|
|
420
|
+
getFontsInBlock(e, n, t, o) {
|
|
421
|
+
const s = /\\f(.*?)\|/g;
|
|
411
422
|
e.forEach((r) => {
|
|
412
423
|
if (r.type == "MTEXT") {
|
|
413
|
-
const
|
|
414
|
-
[...
|
|
424
|
+
const a = r;
|
|
425
|
+
[...a.text.matchAll(s)].forEach((i) => {
|
|
415
426
|
o.add(i[1].toLowerCase());
|
|
416
427
|
});
|
|
417
|
-
const c =
|
|
428
|
+
const c = t.get(a.styleName);
|
|
418
429
|
c == null || c.forEach((i) => o.add(i));
|
|
419
430
|
} else if (r.type == "TEXT") {
|
|
420
|
-
const
|
|
431
|
+
const a = r, c = t.get(a.styleName);
|
|
421
432
|
c == null || c.forEach((i) => o.add(i));
|
|
422
433
|
} else if (r.type == "INSERT") {
|
|
423
|
-
const
|
|
424
|
-
c && this.getFontsInBlock(c.entities, n,
|
|
434
|
+
const a = r, c = n.get(a.name);
|
|
435
|
+
c && this.getFontsInBlock(c.entities, n, t, o);
|
|
425
436
|
}
|
|
426
437
|
});
|
|
427
438
|
}
|
|
428
439
|
processLineTypes(e, n) {
|
|
429
440
|
e.tables.LTYPE.entries.forEach((o) => {
|
|
430
|
-
const
|
|
441
|
+
const s = {
|
|
431
442
|
name: o.name,
|
|
432
443
|
description: o.description,
|
|
433
444
|
standardFlag: o.standardFlag,
|
|
434
445
|
totalPatternLength: o.totalPatternLength,
|
|
435
446
|
pattern: o.pattern
|
|
436
|
-
}, r = new
|
|
447
|
+
}, r = new ge(s);
|
|
437
448
|
this.processCommonTableEntryAttrs(o, r), r.name = o.name, n.tables.linetypeTable.add(r);
|
|
438
449
|
});
|
|
439
450
|
}
|
|
440
451
|
processTextStyles(e, n) {
|
|
441
452
|
e.tables.STYLE.entries.forEach((o) => {
|
|
442
|
-
const
|
|
443
|
-
this.processCommonTableEntryAttrs(o,
|
|
453
|
+
const s = new De(o);
|
|
454
|
+
this.processCommonTableEntryAttrs(o, s), n.tables.textStyleTable.add(s);
|
|
444
455
|
});
|
|
445
456
|
}
|
|
446
457
|
processDimStyles(e, n) {
|
|
447
458
|
e.tables.DIMSTYLE.entries.forEach((o) => {
|
|
448
|
-
const
|
|
459
|
+
const s = {
|
|
449
460
|
name: o.name,
|
|
450
461
|
ownerId: o.ownerHandle,
|
|
451
462
|
dimpost: o.DIMPOST || "",
|
|
@@ -514,21 +525,21 @@ class Ce extends ue {
|
|
|
514
525
|
dimblk2: o.DIMBLK2 || "",
|
|
515
526
|
dimlwd: o.DIMLWD,
|
|
516
527
|
dimlwe: o.DIMLWE
|
|
517
|
-
}, r = new
|
|
528
|
+
}, r = new Ae(s);
|
|
518
529
|
this.processCommonTableEntryAttrs(o, r), n.tables.dimStyleTable.add(r);
|
|
519
530
|
});
|
|
520
531
|
}
|
|
521
532
|
processLayers(e, n) {
|
|
522
533
|
e.tables.LAYER.entries.forEach((o) => {
|
|
523
|
-
const
|
|
524
|
-
|
|
525
|
-
const r = new
|
|
534
|
+
const s = new Ie();
|
|
535
|
+
s.colorIndex = o.colorIndex;
|
|
536
|
+
const r = new ye({
|
|
526
537
|
name: o.name,
|
|
527
538
|
standardFlags: o.standardFlag,
|
|
528
539
|
linetype: o.lineType,
|
|
529
540
|
lineWeight: o.lineweight,
|
|
530
541
|
isOff: o.off,
|
|
531
|
-
color:
|
|
542
|
+
color: s,
|
|
532
543
|
isPlottable: o.plotFlag != 0
|
|
533
544
|
});
|
|
534
545
|
this.processCommonTableEntryAttrs(o, r), n.tables.layerTable.add(r);
|
|
@@ -536,54 +547,54 @@ class Ce extends ue {
|
|
|
536
547
|
}
|
|
537
548
|
processViewports(e, n) {
|
|
538
549
|
e.tables.VPORT.entries.forEach((o) => {
|
|
539
|
-
const
|
|
540
|
-
this.processCommonTableEntryAttrs(o,
|
|
550
|
+
const s = new we();
|
|
551
|
+
this.processCommonTableEntryAttrs(o, s), o.circleSides && (s.circleSides = o.circleSides), s.standardFlag = o.standardFlag, s.center.copy(o.center), s.lowerLeftCorner.copy(o.lowerLeftCorner), s.upperRightCorner.copy(o.upperRightCorner), o.snapBasePoint && s.snapBase.copy(o.snapBasePoint), o.snapRotationAngle && (s.snapAngle = o.snapRotationAngle), o.snapSpacing && s.snapIncrements.copy(o.snapSpacing), o.majorGridLines && (s.gridMajor = o.majorGridLines), o.gridSpacing && s.gridIncrements.copy(o.gridSpacing), o.backgroundObjectId && (s.backgroundObjectId = o.backgroundObjectId), s.gsView.center.copy(o.center), s.gsView.viewDirectionFromTarget.copy(o.viewDirectionFromTarget), s.gsView.viewTarget.copy(o.viewTarget), o.lensLength && (s.gsView.lensLength = o.lensLength), o.frontClippingPlane && (s.gsView.frontClippingPlane = o.frontClippingPlane), o.backClippingPlane && (s.gsView.backClippingPlane = o.backClippingPlane), o.viewHeight && (s.gsView.viewHeight = o.viewHeight), o.viewTwistAngle && (s.gsView.viewTwistAngle = o.viewTwistAngle), o.frozenLayers && (s.gsView.frozenLayers = o.frozenLayers), o.styleSheet && (s.gsView.styleSheet = o.styleSheet), o.renderMode && (s.gsView.renderMode = o.renderMode), o.viewMode && (s.gsView.viewMode = o.viewMode), o.ucsIconSetting && (s.gsView.ucsIconSetting = o.ucsIconSetting), o.ucsOrigin && s.gsView.ucsOrigin.copy(o.ucsOrigin), o.ucsXAxis && s.gsView.ucsXAxis.copy(o.ucsXAxis), o.ucsYAxis && s.gsView.ucsYAxis.copy(o.ucsYAxis), o.orthographicType && (s.gsView.orthographicType = o.orthographicType), o.shadePlotSetting && (s.gsView.shadePlotSetting = o.shadePlotSetting), o.shadePlotObjectId && (s.gsView.shadePlotObjectId = o.shadePlotObjectId), o.visualStyleObjectId && (s.gsView.visualStyleObjectId = o.visualStyleObjectId), o.isDefaultLightingOn && (s.gsView.isDefaultLightingOn = o.isDefaultLightingOn), o.defaultLightingType && (s.gsView.defaultLightingType = o.defaultLightingType), o.brightness && (s.gsView.brightness = o.brightness), o.contrast && (s.gsView.contrast = o.contrast), o.ambientColor && (s.gsView.ambientColor = o.ambientColor), n.tables.viewportTable.add(s);
|
|
541
552
|
});
|
|
542
553
|
}
|
|
543
554
|
processBlockTables(e, n) {
|
|
544
555
|
e.tables.BLOCK_RECORD.entries.forEach((o) => {
|
|
545
|
-
let
|
|
546
|
-
|
|
556
|
+
let s = n.tables.blockTable.getAt(o.name);
|
|
557
|
+
s || (s = new Te(), s.objectId = o.handle, s.name = o.name, s.ownerId = o.ownerHandle, s.origin.copy(o.basePoint), s.layoutId = o.layout, s.blockInsertUnits = o.insertionUnits, s.explodability = o.explodability, s.blockScaling = o.scalability, o.bmpPreview && (s.bmpPreview = o.bmpPreview), n.tables.blockTable.add(s)), !s.isModelSapce && o.entities && o.entities.length > 0 && this.processEntitiesInBlock(o.entities, s);
|
|
547
558
|
});
|
|
548
559
|
}
|
|
549
560
|
processBlocks(e, n) {
|
|
550
561
|
}
|
|
551
562
|
async processEntitiesInBlock(e, n) {
|
|
552
|
-
const
|
|
563
|
+
const t = new C(), o = e.length, s = [];
|
|
553
564
|
for (let r = 0; r < o; r++) {
|
|
554
|
-
const
|
|
555
|
-
c &&
|
|
565
|
+
const a = e[r], c = t.convert(a);
|
|
566
|
+
c && s.push(c);
|
|
556
567
|
}
|
|
557
|
-
n.appendEntity(
|
|
568
|
+
n.appendEntity(s);
|
|
558
569
|
}
|
|
559
|
-
async processEntities(e, n,
|
|
570
|
+
async processEntities(e, n, t, o, s) {
|
|
560
571
|
const r = new C();
|
|
561
|
-
let
|
|
562
|
-
e.tables.BLOCK_RECORD.entries.forEach((
|
|
563
|
-
this.isModelSpace(
|
|
572
|
+
let a = [];
|
|
573
|
+
e.tables.BLOCK_RECORD.entries.forEach((l) => {
|
|
574
|
+
this.isModelSpace(l.name) && (a = l.entities);
|
|
564
575
|
});
|
|
565
|
-
const c =
|
|
576
|
+
const c = a.length, i = new be(
|
|
566
577
|
c,
|
|
567
578
|
100 - o.value,
|
|
568
|
-
|
|
579
|
+
t
|
|
569
580
|
);
|
|
570
|
-
this.config.convertByEntityType && (
|
|
581
|
+
this.config.convertByEntityType && (a = this.groupAndFlattenByType(a));
|
|
571
582
|
const d = n.tables.blockTable.modelSpace;
|
|
572
|
-
await i.processChunk(async (
|
|
583
|
+
await i.processChunk(async (l, h) => {
|
|
573
584
|
const p = [];
|
|
574
|
-
for (let u =
|
|
575
|
-
const f =
|
|
585
|
+
for (let u = l; u < h; u++) {
|
|
586
|
+
const f = a[u], g = r.convert(f);
|
|
576
587
|
g && p.push(g);
|
|
577
588
|
}
|
|
578
|
-
if (d.appendEntity(p),
|
|
589
|
+
if (d.appendEntity(p), s) {
|
|
579
590
|
let u = o.value + h / c * (100 - o.value);
|
|
580
|
-
u > 100 && (u = 100), await
|
|
591
|
+
u > 100 && (u = 100), await s(u, "ENTITY", "IN-PROGRESS");
|
|
581
592
|
}
|
|
582
593
|
});
|
|
583
594
|
}
|
|
584
595
|
processHeader(e, n) {
|
|
585
|
-
const
|
|
586
|
-
|
|
596
|
+
const t = e.header;
|
|
597
|
+
t.CECOLOR && (t.CECOLOR.index >= 0 && t.CECOLOR.index <= 256 ? n.cecolor.colorIndex = t.CECOLOR.index : n.cecolor.setRGBValue(t.CECOLOR.rgb)), n.angBase = t.ANGBASE ?? 0, n.angDir = t.ANGDIR ?? 0, n.aunits = t.AUNITS ?? 0, n.celtype = t.CELTYPE ?? Pe, n.celtscale = t.CELTSCALE ?? 1, n.ltscale = t.LTSCALE ?? 1, t.EXTMAX && (n.extmax = t.EXTMAX), t.EXTMIN && (n.extmin = t.EXTMIN), n.insunits = t.INSUNITS ?? 1, n.pdmode = t.PDMODE ?? 0, n.pdsize = t.PDSIZE ?? 0, n.textstyle = t.TEXTSTYLE ?? L;
|
|
587
598
|
}
|
|
588
599
|
processCommonTableEntryAttrs(e, n) {
|
|
589
600
|
n.name = e.name, n.objectId = e.handle, n.ownerId = e.ownerHandle;
|
|
@@ -592,40 +603,40 @@ class Ce extends ue {
|
|
|
592
603
|
this.processLayouts(e, n), this.processImageDefs(e, n);
|
|
593
604
|
}
|
|
594
605
|
processLayouts(e, n) {
|
|
595
|
-
const
|
|
596
|
-
e.objects.LAYOUT.forEach((
|
|
597
|
-
const r = new
|
|
598
|
-
r.layoutName =
|
|
599
|
-
const
|
|
600
|
-
r.objectId =
|
|
601
|
-
for (const c of
|
|
606
|
+
const t = n.objects.layout;
|
|
607
|
+
e.objects.LAYOUT.forEach((s) => {
|
|
608
|
+
const r = new Ee();
|
|
609
|
+
r.layoutName = s.layoutName, r.tabOrder = s.tabOrder;
|
|
610
|
+
const a = n.tables.blockTable.newIterator();
|
|
611
|
+
r.objectId = s.handle;
|
|
612
|
+
for (const c of a)
|
|
602
613
|
if (c.layoutId === r.objectId) {
|
|
603
614
|
r.blockTableRecordId = c.objectId;
|
|
604
615
|
break;
|
|
605
616
|
}
|
|
606
|
-
r.blockTableRecordId ||
|
|
617
|
+
r.blockTableRecordId || s.layoutName === "Model" && (r.blockTableRecordId = n.tables.blockTable.modelSpace.objectId), r.limits.min.copy(s.minLimit), r.limits.max.copy(s.maxLimit), r.extents.min.copy(s.minExtent), r.extents.max.copy(s.maxExtent), s.viewportId && r.viewportArray.push(s.viewportId), this.processCommonObjectAttrs(s, r), t.setAt(r.layoutName, r);
|
|
607
618
|
});
|
|
608
619
|
}
|
|
609
620
|
processImageDefs(e, n) {
|
|
610
|
-
const
|
|
611
|
-
e.objects.IMAGEDEF.forEach((
|
|
612
|
-
const r = new
|
|
613
|
-
r.sourceFileName =
|
|
621
|
+
const t = n.objects.imageDefinition;
|
|
622
|
+
e.objects.IMAGEDEF.forEach((s) => {
|
|
623
|
+
const r = new Me();
|
|
624
|
+
r.sourceFileName = s.fileName, this.processCommonObjectAttrs(s, r), t.setAt(r.objectId, r);
|
|
614
625
|
});
|
|
615
626
|
}
|
|
616
627
|
processCommonObjectAttrs(e, n) {
|
|
617
628
|
n.objectId = e.handle, n.ownerId = e.ownerHandle;
|
|
618
629
|
}
|
|
619
630
|
groupAndFlattenByType(e) {
|
|
620
|
-
const n = {},
|
|
631
|
+
const n = {}, t = [];
|
|
621
632
|
for (const o of e)
|
|
622
|
-
n[o.type] || (n[o.type] = [],
|
|
623
|
-
return
|
|
633
|
+
n[o.type] || (n[o.type] = [], t.push(o.type)), n[o.type].push(o);
|
|
634
|
+
return t.flatMap((o) => n[o]);
|
|
624
635
|
}
|
|
625
636
|
isModelSpace(e) {
|
|
626
|
-
return e && e.toUpperCase() ==
|
|
637
|
+
return e && e.toUpperCase() == Le;
|
|
627
638
|
}
|
|
628
639
|
}
|
|
629
640
|
export {
|
|
630
|
-
|
|
641
|
+
Se as AcDbLibreDwgConverter
|
|
631
642
|
};
|