@mlightcad/libredwg-converter 3.1.3 → 3.1.5

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.
@@ -0,0 +1,37 @@
1
+ import { AcDbEntity } from '@mlightcad/data-model';
2
+ import { DwgEntity } from '@mlightcad/libredwg-web';
3
+ export declare class AcDbEntityConverter {
4
+ convert(entity: DwgEntity): AcDbEntity | null;
5
+ /**
6
+ * Create the corresponding drawing database entity from data in dxf format
7
+ * @param entity Input entity data in dxf format
8
+ * @returns Return the converted drawing database entity
9
+ */
10
+ private createEntity;
11
+ private convertFace;
12
+ private convertArc;
13
+ private convertCirle;
14
+ private convertEllipse;
15
+ private convertLine;
16
+ private convertSpline;
17
+ private convertPoint;
18
+ private convertSolid;
19
+ private convertLWPolyline;
20
+ private convertPolyline;
21
+ private convertHatch;
22
+ private convertTable;
23
+ private convertText;
24
+ private convertMText;
25
+ private convertLeader;
26
+ private convertDimension;
27
+ private processImage;
28
+ private convertImage;
29
+ private convertWipeout;
30
+ private convertViewport;
31
+ private convertRay;
32
+ private convertXline;
33
+ private convertBlockReference;
34
+ private processDimensionCommonAttrs;
35
+ private processCommonAttrs;
36
+ }
37
+ //# sourceMappingURL=AcDbEntitiyConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbEntitiyConverter.d.ts","sourceRoot":"","sources":["../src/AcDbEntitiyConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,UAAU,EA0CX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAYL,SAAS,EAwBV,MAAM,yBAAyB,CAAA;AAEhC,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;IAQ7C;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAiDpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,eAAe;IAsDvB,OAAO,CAAC,YAAY;IA4HpB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,kBAAkB;CA6B3B"}
@@ -0,0 +1,541 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { AcDb2dPolyline, AcDb3dPolyline, AcDb3PointAngularDimension, AcDbAlignedDimension, AcDbArc, AcDbBlockReference, AcDbCircle, AcDbDiametricDimension, AcDbEllipse, AcDbFace, AcDbHatch, AcDbLeader, AcDbLine, AcDbMText, AcDbOrdinateDimension, AcDbPoint, AcDbPoly2dType, AcDbPoly3dType, AcDbPolyline, AcDbRadialDimension, AcDbRasterImage, AcDbRay, AcDbSpline, AcDbTable, AcDbText, AcDbTrace, AcDbViewport, AcDbWipeout, AcDbXline, AcGeCircArc2d, AcGeEllipseArc2d, AcGeLine2d, AcGeLoop2d, AcGePoint2d, AcGePoint3d, AcGePolyline2d, AcGeSpline3d, AcGeVector2d, AcGeVector3d } from '@mlightcad/data-model';
13
+ import { DwgSmoothType } from '@mlightcad/libredwg-web';
14
+ var AcDbEntityConverter = /** @class */ (function () {
15
+ function AcDbEntityConverter() {
16
+ }
17
+ AcDbEntityConverter.prototype.convert = function (entity) {
18
+ var dbEntity = this.createEntity(entity);
19
+ if (dbEntity) {
20
+ this.processCommonAttrs(entity, dbEntity);
21
+ }
22
+ return dbEntity;
23
+ };
24
+ /**
25
+ * Create the corresponding drawing database entity from data in dxf format
26
+ * @param entity Input entity data in dxf format
27
+ * @returns Return the converted drawing database entity
28
+ */
29
+ AcDbEntityConverter.prototype.createEntity = function (entity) {
30
+ if (entity.type == '3DFACE') {
31
+ return this.convertFace(entity);
32
+ }
33
+ else if (entity.type == 'ARC') {
34
+ return this.convertArc(entity);
35
+ }
36
+ else if (entity.type == 'CIRCLE') {
37
+ return this.convertCirle(entity);
38
+ }
39
+ else if (entity.type == 'DIMENSION') {
40
+ return this.convertDimension(entity);
41
+ }
42
+ else if (entity.type == 'ELLIPSE') {
43
+ return this.convertEllipse(entity);
44
+ }
45
+ else if (entity.type == 'HATCH') {
46
+ return this.convertHatch(entity);
47
+ }
48
+ else if (entity.type == 'IMAGE') {
49
+ return this.convertImage(entity);
50
+ }
51
+ else if (entity.type == 'LEADER') {
52
+ return this.convertLeader(entity);
53
+ }
54
+ else if (entity.type == 'LINE') {
55
+ return this.convertLine(entity);
56
+ }
57
+ else if (entity.type == 'LWPOLYLINE') {
58
+ return this.convertLWPolyline(entity);
59
+ }
60
+ else if (entity.type == 'MTEXT') {
61
+ return this.convertMText(entity);
62
+ }
63
+ else if (entity.type == 'POINT') {
64
+ return this.convertPoint(entity);
65
+ }
66
+ else if (entity.type == 'POLYLINE') {
67
+ return this.convertPolyline(entity);
68
+ }
69
+ else if (entity.type == 'RAY') {
70
+ return this.convertRay(entity);
71
+ }
72
+ else if (entity.type == 'SPLINE') {
73
+ return this.convertSpline(entity);
74
+ }
75
+ else if (entity.type == 'ACAD_TABLE') {
76
+ return this.convertTable(entity);
77
+ }
78
+ else if (entity.type == 'TEXT') {
79
+ return this.convertText(entity);
80
+ }
81
+ else if (entity.type == 'SOLID') {
82
+ return this.convertSolid(entity);
83
+ }
84
+ else if (entity.type == 'VIEWPORT') {
85
+ return this.convertViewport(entity);
86
+ }
87
+ else if (entity.type == 'WIPEOUT') {
88
+ return this.convertWipeout(entity);
89
+ }
90
+ else if (entity.type == 'XLINE') {
91
+ return this.convertXline(entity);
92
+ }
93
+ else if (entity.type == 'INSERT') {
94
+ return this.convertBlockReference(entity);
95
+ }
96
+ return null;
97
+ };
98
+ AcDbEntityConverter.prototype.convertFace = function (face) {
99
+ var dbEntity = new AcDbFace();
100
+ if (face.corner1)
101
+ dbEntity.setVertexAt(0, face.corner1);
102
+ if (face.corner2)
103
+ dbEntity.setVertexAt(1, face.corner2);
104
+ if (face.corner3)
105
+ dbEntity.setVertexAt(2, face.corner3);
106
+ if (face.corner4)
107
+ dbEntity.setVertexAt(3, face.corner4);
108
+ dbEntity.setEdgeInvisibilities(face.flag);
109
+ return dbEntity;
110
+ };
111
+ AcDbEntityConverter.prototype.convertArc = function (arc) {
112
+ var dbEntity = new AcDbArc(arc.center, arc.radius, arc.startAngle, arc.endAngle);
113
+ return dbEntity;
114
+ };
115
+ AcDbEntityConverter.prototype.convertCirle = function (circle) {
116
+ var dbEntity = new AcDbCircle(circle.center, circle.radius);
117
+ return dbEntity;
118
+ };
119
+ AcDbEntityConverter.prototype.convertEllipse = function (ellipse) {
120
+ var _a;
121
+ var majorAxis = new AcGeVector3d(ellipse.majorAxisEndPoint);
122
+ var majorAxisRadius = majorAxis.length();
123
+ var dbEntity = new AcDbEllipse(ellipse.center, (_a = ellipse.extrusionDirection) !== null && _a !== void 0 ? _a : AcGeVector3d.Z_AXIS, majorAxis, majorAxisRadius, majorAxisRadius * ellipse.axisRatio, ellipse.startAngle, ellipse.endAngle);
124
+ return dbEntity;
125
+ };
126
+ AcDbEntityConverter.prototype.convertLine = function (line) {
127
+ var start = line.startPoint;
128
+ var end = line.endPoint;
129
+ var dbEntity = new AcDbLine(new AcGePoint3d(start.x, start.y, start.z), new AcGePoint3d(end.x, end.y, end.z));
130
+ return dbEntity;
131
+ };
132
+ AcDbEntityConverter.prototype.convertSpline = function (spline) {
133
+ // Catch error to construct spline because it maybe one spline in one block.
134
+ // If don't catch the error, the block conversion may be interruptted.
135
+ try {
136
+ if (spline.numberOfControlPoints > 0 && spline.numberOfKnots > 0) {
137
+ return new AcDbSpline(spline.controlPoints, spline.knots, spline.weights, spline.degree, !!(spline.flag & 0x01));
138
+ }
139
+ else if (spline.numberOfFitPoints > 0) {
140
+ return new AcDbSpline(spline.fitPoints, 'Uniform', spline.degree, !!(spline.flag & 0x01));
141
+ }
142
+ }
143
+ catch (error) {
144
+ console.log("Failed to convert spline with error: ".concat(error));
145
+ }
146
+ return null;
147
+ };
148
+ AcDbEntityConverter.prototype.convertPoint = function (point) {
149
+ var dbEntity = new AcDbPoint();
150
+ dbEntity.position = point.position;
151
+ return dbEntity;
152
+ };
153
+ AcDbEntityConverter.prototype.convertSolid = function (solid) {
154
+ var dbEntity = new AcDbTrace();
155
+ dbEntity.setPointAt(0, __assign(__assign({}, solid.corner1), { z: 0 }));
156
+ dbEntity.setPointAt(1, __assign(__assign({}, solid.corner2), { z: 0 }));
157
+ dbEntity.setPointAt(2, __assign(__assign({}, solid.corner3), { z: 0 }));
158
+ dbEntity.setPointAt(3, solid.corner4 ? __assign(__assign({}, solid.corner4), { z: 0 }) : __assign(__assign({}, solid.corner3), { z: 0 }));
159
+ dbEntity.thickness = solid.thickness;
160
+ return dbEntity;
161
+ };
162
+ AcDbEntityConverter.prototype.convertLWPolyline = function (polyline) {
163
+ // Libredwg changes meaning of the 'flag' field. '512' means closed.
164
+ var dbEntity = new AcDbPolyline();
165
+ dbEntity.closed = !!(polyline.flag & 0x200);
166
+ polyline.vertices.forEach(function (vertex, index) {
167
+ dbEntity.addVertexAt(index, new AcGePoint2d(vertex.x, vertex.y), vertex.bulge, vertex.startWidth, vertex.endWidth);
168
+ });
169
+ return dbEntity;
170
+ };
171
+ AcDbEntityConverter.prototype.convertPolyline = function (polyline) {
172
+ // Polyline flag (bit-coded; default = 0):
173
+ // https://help.autodesk.com/view/OARX/2023/ENU/?guid=GUID-ABF6B778-BE20-4B49-9B58-A94E64CEFFF3
174
+ //
175
+ // 1 = This is a closed polyline (or a polygon mesh closed in the M direction)
176
+ // 2 = Curve-fit vertices have been added
177
+ // 4 = Spline-fit vertices have been added
178
+ // 8 = This is a 3D polyline
179
+ // 16 = This is a 3D polygon mesh
180
+ // 32 = The polygon mesh is closed in the N direction
181
+ // 64 = The polyline is a polyface mesh
182
+ // 128 = The linetype pattern is generated continuously around the vertices of this polyline
183
+ var isClosed = !!(polyline.flag & 0x01);
184
+ var is3dPolyline = !!(polyline.flag & 0x08);
185
+ // Filter out spline control points
186
+ var vertices = [];
187
+ var bulges = [];
188
+ polyline.vertices.map(function (vertex) {
189
+ var _a;
190
+ // Check whether it is one spline control point
191
+ if (!(vertex.flag & 0x10)) {
192
+ vertices.push({
193
+ x: vertex.x,
194
+ y: vertex.y,
195
+ z: vertex.z
196
+ });
197
+ bulges.push((_a = vertex.bulge) !== null && _a !== void 0 ? _a : 0);
198
+ }
199
+ });
200
+ if (is3dPolyline) {
201
+ var polyType = AcDbPoly3dType.SimplePoly;
202
+ if (polyline.flag & 0x04) {
203
+ if (polyline.smoothType == DwgSmoothType.CUBIC) {
204
+ polyType = AcDbPoly3dType.CubicSplinePoly;
205
+ }
206
+ else if (polyline.smoothType == DwgSmoothType.QUADRATIC) {
207
+ polyType = AcDbPoly3dType.QuadSplinePoly;
208
+ }
209
+ }
210
+ return new AcDb3dPolyline(polyType, vertices, isClosed);
211
+ }
212
+ else {
213
+ var polyType = AcDbPoly2dType.SimplePoly;
214
+ if (polyline.flag & 0x02) {
215
+ polyType = AcDbPoly2dType.FitCurvePoly;
216
+ }
217
+ else if (polyline.flag & 0x04) {
218
+ if (polyline.smoothType == DwgSmoothType.CUBIC) {
219
+ polyType = AcDbPoly2dType.CubicSplinePoly;
220
+ }
221
+ else if (polyline.smoothType == DwgSmoothType.QUADRATIC) {
222
+ polyType = AcDbPoly2dType.QuadSplinePoly;
223
+ }
224
+ }
225
+ return new AcDb2dPolyline(polyType, vertices, 0, isClosed, polyline.startWidth, polyline.endWidth, bulges);
226
+ }
227
+ };
228
+ AcDbEntityConverter.prototype.convertHatch = function (hatch) {
229
+ var _a;
230
+ var dbEntity = new AcDbHatch();
231
+ (_a = hatch.definitionLines) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {
232
+ dbEntity.definitionLines.push({
233
+ angle: item.angle,
234
+ origin: item.base,
235
+ delta: item.offset,
236
+ dashPattern: item.numberOfDashLengths > 0 ? item.dashLengths : []
237
+ });
238
+ });
239
+ dbEntity.hatchStyle = hatch.hatchStyle;
240
+ dbEntity.patternName = hatch.patternName;
241
+ dbEntity.patternType = hatch.patternType;
242
+ dbEntity.patternAngle = hatch.patternAngle == null ? 0 : hatch.patternAngle;
243
+ dbEntity.patternScale = hatch.patternScale == null ? 0 : hatch.patternScale;
244
+ var paths = hatch.boundaryPaths;
245
+ paths.forEach(function (path) {
246
+ var flag = path.boundaryPathTypeFlag;
247
+ // Check whether it is a polyline
248
+ if (flag & 0x02) {
249
+ var polylinePath = path;
250
+ var polyline_1 = new AcGePolyline2d();
251
+ polyline_1.closed = polylinePath.isClosed;
252
+ polylinePath.vertices.forEach(function (vertex, index) {
253
+ polyline_1.addVertexAt(index, {
254
+ x: vertex.x,
255
+ y: vertex.y,
256
+ bulge: vertex.bulge
257
+ });
258
+ });
259
+ dbEntity.add(polyline_1);
260
+ }
261
+ else {
262
+ var edgePath = path;
263
+ var loop_1 = new AcGeLoop2d();
264
+ edgePath.edges.forEach(function (edge) {
265
+ // TODO: It seems there are some issue on libredwg. Sometimes 'undefined' edges are added.
266
+ if (edge == null)
267
+ return;
268
+ if (edge.type == 1) {
269
+ var line = edge;
270
+ loop_1.add(new AcGeLine2d(line.start, line.end));
271
+ }
272
+ else if (edge.type == 2) {
273
+ var arc = edge;
274
+ loop_1.add(new AcGeCircArc2d(arc.center, arc.radius, arc.startAngle, arc.endAngle, !arc.isCCW));
275
+ }
276
+ else if (edge.type == 3) {
277
+ var ellipse = edge;
278
+ var majorAxis = new AcGeVector2d();
279
+ majorAxis.subVectors(ellipse.end, ellipse.center);
280
+ var majorAxisRadius = Math.sqrt(Math.pow(ellipse.end.x, 2) + Math.pow(ellipse.end.y, 2));
281
+ // Property name 'lengthOfMinorAxis' is really confusing.
282
+ // Actually length of minor axis means percentage of major axis length.
283
+ var minorAxisRadius = majorAxisRadius * ellipse.lengthOfMinorAxis;
284
+ var startAngle = ellipse.startAngle;
285
+ var endAngle = ellipse.endAngle;
286
+ var rotation = Math.atan2(ellipse.end.y, ellipse.end.x);
287
+ if (!ellipse.isCCW) {
288
+ // when clockwise, need to handle start/end angles
289
+ startAngle = Math.PI * 2 - startAngle;
290
+ endAngle = Math.PI * 2 - endAngle;
291
+ }
292
+ loop_1.add(new AcGeEllipseArc2d(__assign(__assign({}, ellipse.center), { z: 0 }), majorAxisRadius, minorAxisRadius, startAngle, endAngle, !ellipse.isCCW, rotation));
293
+ }
294
+ else if (edge.type == 4) {
295
+ var spline = edge;
296
+ if (spline.numberOfControlPoints > 0 && spline.numberOfKnots > 0) {
297
+ var controlPoints = spline.controlPoints.map(function (item) {
298
+ return {
299
+ x: item.x,
300
+ y: item.y,
301
+ z: 0
302
+ };
303
+ });
304
+ var hasWeights_1 = true;
305
+ var weights = spline.controlPoints.map(function (item) {
306
+ if (item.weight == null)
307
+ hasWeights_1 = false;
308
+ return item.weight || 1;
309
+ });
310
+ loop_1.add(new AcGeSpline3d(controlPoints, spline.knots, hasWeights_1 ? weights : undefined));
311
+ }
312
+ else if (spline.numberOfFitData > 0) {
313
+ var fitPoints = spline.fitDatum.map(function (item) {
314
+ return {
315
+ x: item.x,
316
+ y: item.y,
317
+ z: 0
318
+ };
319
+ });
320
+ loop_1.add(new AcGeSpline3d(fitPoints, 'Uniform'));
321
+ }
322
+ }
323
+ });
324
+ dbEntity.add(loop_1);
325
+ }
326
+ });
327
+ return dbEntity;
328
+ };
329
+ AcDbEntityConverter.prototype.convertTable = function (table) {
330
+ var dbEntity = new AcDbTable(table.name, table.rowCount, table.columnCount);
331
+ dbEntity.attachmentPoint =
332
+ table.attachmentPoint;
333
+ dbEntity.position.copy(table.startPoint);
334
+ table.columnWidthArr.forEach(function (width, index) {
335
+ return dbEntity.setColumnWidth(index, width);
336
+ });
337
+ table.rowHeightArr.forEach(function (height, index) {
338
+ return dbEntity.setRowHeight(index, height);
339
+ });
340
+ table.cells.forEach(function (cell, index) {
341
+ dbEntity.setCell(index, cell);
342
+ });
343
+ return dbEntity;
344
+ };
345
+ AcDbEntityConverter.prototype.convertText = function (text) {
346
+ var _a, _b;
347
+ var dbEntity = new AcDbText();
348
+ dbEntity.textString = text.text;
349
+ dbEntity.styleName = text.styleName;
350
+ dbEntity.height = text.textHeight;
351
+ dbEntity.position.copy(text.startPoint);
352
+ dbEntity.rotation = text.rotation;
353
+ dbEntity.oblique = (_a = text.obliqueAngle) !== null && _a !== void 0 ? _a : 0;
354
+ dbEntity.thickness = text.thickness;
355
+ dbEntity.horizontalMode = text.halign;
356
+ dbEntity.verticalMode = text.valign;
357
+ dbEntity.widthFactor = (_b = text.xScale) !== null && _b !== void 0 ? _b : 1;
358
+ return dbEntity;
359
+ };
360
+ AcDbEntityConverter.prototype.convertMText = function (mtext) {
361
+ var dbEntity = new AcDbMText();
362
+ dbEntity.contents = mtext.text;
363
+ if (mtext.styleName != null) {
364
+ dbEntity.styleName = mtext.styleName;
365
+ }
366
+ dbEntity.height = mtext.textHeight;
367
+ dbEntity.width = mtext.rectWidth;
368
+ dbEntity.rotation = mtext.rotation || 0;
369
+ dbEntity.location = mtext.insertionPoint;
370
+ dbEntity.attachmentPoint =
371
+ mtext.attachmentPoint;
372
+ if (mtext.direction) {
373
+ dbEntity.direction = new AcGeVector3d(mtext.direction);
374
+ }
375
+ dbEntity.drawingDirection =
376
+ mtext.drawingDirection;
377
+ return dbEntity;
378
+ };
379
+ AcDbEntityConverter.prototype.convertLeader = function (leader) {
380
+ var dbEntity = new AcDbLeader();
381
+ leader.vertices.forEach(function (point) {
382
+ dbEntity.appendVertex(point);
383
+ });
384
+ dbEntity.hasArrowHead = leader.isArrowheadEnabled;
385
+ dbEntity.hasHookLine = leader.isHooklineExists;
386
+ dbEntity.isSplined = leader.isSpline;
387
+ dbEntity.dimensionStyle = leader.styleName;
388
+ dbEntity.annoType =
389
+ leader.leaderCreationFlag;
390
+ return dbEntity;
391
+ };
392
+ AcDbEntityConverter.prototype.convertDimension = function (dimension) {
393
+ if (dimension.subclassMarker == 'AcDbAlignedDimension' ||
394
+ dimension.subclassMarker == 'AcDbRotatedDimension') {
395
+ var entity = dimension;
396
+ var dbEntity = new AcDbAlignedDimension(entity.subDefinitionPoint1, entity.subDefinitionPoint2, entity.definitionPoint);
397
+ dbEntity.rotation = entity.rotationAngle;
398
+ this.processDimensionCommonAttrs(dimension, dbEntity);
399
+ return dbEntity;
400
+ }
401
+ else if (dimension.subclassMarker == 'AcDb3PointAngularDimension') {
402
+ var entity = dimension;
403
+ var dbEntity = new AcDb3PointAngularDimension(entity.centerPoint, entity.subDefinitionPoint1, entity.subDefinitionPoint2, entity.definitionPoint);
404
+ this.processDimensionCommonAttrs(dimension, dbEntity);
405
+ return dbEntity;
406
+ }
407
+ else if (dimension.subclassMarker == 'AcDbOrdinateDimension') {
408
+ var entity = dimension;
409
+ var dbEntity = new AcDbOrdinateDimension(entity.subDefinitionPoint1, entity.subDefinitionPoint2);
410
+ this.processDimensionCommonAttrs(dimension, dbEntity);
411
+ return dbEntity;
412
+ }
413
+ else if (dimension.subclassMarker == 'AcDbRadialDimension') {
414
+ var entity = dimension;
415
+ var dbEntity = new AcDbRadialDimension(entity.definitionPoint, entity.centerPoint, entity.leaderLength);
416
+ this.processDimensionCommonAttrs(dimension, dbEntity);
417
+ return dbEntity;
418
+ }
419
+ else if (dimension.subclassMarker == 'AcDbDiametricDimension') {
420
+ var entity = dimension;
421
+ var dbEntity = new AcDbDiametricDimension(entity.definitionPoint, entity.centerPoint, entity.leaderLength);
422
+ this.processDimensionCommonAttrs(dimension, dbEntity);
423
+ return dbEntity;
424
+ }
425
+ return null;
426
+ };
427
+ AcDbEntityConverter.prototype.processImage = function (image, dbImage) {
428
+ dbImage.position.copy(image.position);
429
+ dbImage.brightness = image.brightness;
430
+ dbImage.contrast = image.contrast;
431
+ dbImage.fade = image.fade;
432
+ dbImage.imageDefId = image.imageDefHandle.toString();
433
+ dbImage.isClipped = image.clipping > 0;
434
+ dbImage.isShownClipped = (image.flags | 0x0004) > 0;
435
+ dbImage.isImageShown = (image.flags | 0x0003) > 0;
436
+ dbImage.isImageTransparent = (image.flags | 0x0008) > 0;
437
+ image.clippingBoundaryPath.forEach(function (point) {
438
+ dbImage.clipBoundary.push(new AcGePoint2d(point));
439
+ });
440
+ dbImage.clipBoundaryType =
441
+ image.clippingBoundaryType;
442
+ // Calculate the scale factors
443
+ dbImage.width =
444
+ Math.sqrt(Math.pow(image.uPixel.x, 2) + Math.pow(image.uPixel.y, 2) + Math.pow(image.uPixel.z, 2)) * image.imageSize.x;
445
+ dbImage.height =
446
+ Math.sqrt(Math.pow(image.vPixel.x, 2) + Math.pow(image.vPixel.y, 2) + Math.pow(image.vPixel.z, 2)) * image.imageSize.y;
447
+ // Calculate the rotation angle
448
+ // Rotation is determined by the angle of the U-vector relative to the X-axis
449
+ dbImage.rotation = Math.atan2(image.uPixel.y, image.uPixel.x);
450
+ };
451
+ AcDbEntityConverter.prototype.convertImage = function (image) {
452
+ var dbImage = new AcDbRasterImage();
453
+ this.processImage(image, dbImage);
454
+ return dbImage;
455
+ };
456
+ AcDbEntityConverter.prototype.convertWipeout = function (wipeout) {
457
+ var dbWipeout = new AcDbWipeout();
458
+ this.processImage(wipeout, dbWipeout);
459
+ return dbWipeout;
460
+ };
461
+ AcDbEntityConverter.prototype.convertViewport = function (viewport) {
462
+ var dbViewport = new AcDbViewport();
463
+ dbViewport.number = viewport.viewportId;
464
+ dbViewport.centerPoint.copy(viewport.viewportCenter);
465
+ dbViewport.height = viewport.height;
466
+ dbViewport.width = viewport.width;
467
+ dbViewport.viewCenter.copy(viewport.displayCenter);
468
+ dbViewport.viewHeight = viewport.viewHeight;
469
+ return dbViewport;
470
+ };
471
+ AcDbEntityConverter.prototype.convertRay = function (ray) {
472
+ var dbRay = new AcDbRay();
473
+ dbRay.basePoint.copy(ray.firstPoint);
474
+ dbRay.unitDir.copy(ray.unitDirection);
475
+ return dbRay;
476
+ };
477
+ AcDbEntityConverter.prototype.convertXline = function (xline) {
478
+ var dbXline = new AcDbXline();
479
+ dbXline.basePoint.copy(xline.firstPoint);
480
+ dbXline.unitDir.copy(xline.unitDirection);
481
+ return dbXline;
482
+ };
483
+ AcDbEntityConverter.prototype.convertBlockReference = function (blockReference) {
484
+ var dbBlockReference = new AcDbBlockReference(blockReference.name);
485
+ if (blockReference.insertionPoint)
486
+ dbBlockReference.position.copy(blockReference.insertionPoint);
487
+ dbBlockReference.scaleFactors.x = blockReference.xScale;
488
+ dbBlockReference.scaleFactors.y = blockReference.yScale;
489
+ dbBlockReference.scaleFactors.z = blockReference.zScale;
490
+ dbBlockReference.rotation = blockReference.rotation;
491
+ dbBlockReference.normal.copy(blockReference.extrusionDirection);
492
+ return dbBlockReference;
493
+ };
494
+ AcDbEntityConverter.prototype.processDimensionCommonAttrs = function (entity, dbEntity) {
495
+ dbEntity.dimBlockId = entity.name;
496
+ dbEntity.textPosition.copy(entity.textPoint);
497
+ dbEntity.textRotation = entity.textRotation || 0;
498
+ if (entity.textLineSpacingFactor) {
499
+ dbEntity.textLineSpacingFactor = entity.textLineSpacingFactor;
500
+ }
501
+ if (entity.textLineSpacingStyle) {
502
+ dbEntity.textLineSpacingStyle =
503
+ entity.textLineSpacingStyle;
504
+ }
505
+ dbEntity.dimensionStyleName = entity.styleName;
506
+ dbEntity.dimensionText = entity.text || '';
507
+ dbEntity.measurement = entity.measurement;
508
+ };
509
+ AcDbEntityConverter.prototype.processCommonAttrs = function (entity, dbEntity) {
510
+ dbEntity.layer = entity.layer || '0';
511
+ dbEntity.objectId = entity.handle.toString();
512
+ dbEntity.ownerId = entity.ownerBlockRecordSoftId.toString();
513
+ if (entity.lineType != null) {
514
+ dbEntity.lineType = entity.lineType;
515
+ }
516
+ if (entity.lineweight != null) {
517
+ dbEntity.lineWeight = entity.lineweight;
518
+ }
519
+ if (entity.lineTypeScale != null) {
520
+ dbEntity.linetypeScale = entity.lineTypeScale;
521
+ }
522
+ if (entity.color != null) {
523
+ dbEntity.color.color = entity.color;
524
+ }
525
+ if (entity.colorIndex != null) {
526
+ dbEntity.color.colorIndex = entity.colorIndex;
527
+ }
528
+ if (entity.colorName != null) {
529
+ dbEntity.color.colorName = entity.colorName;
530
+ }
531
+ if (entity.isVisible != null) {
532
+ dbEntity.visibility = entity.isVisible;
533
+ }
534
+ if (entity.transparency != null) {
535
+ dbEntity.transparency = entity.transparency;
536
+ }
537
+ };
538
+ return AcDbEntityConverter;
539
+ }());
540
+ export { AcDbEntityConverter };
541
+ //# sourceMappingURL=AcDbEntitiyConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbEntitiyConverter.js","sourceRoot":"","sources":["../src/AcDbEntitiyConverter.ts"],"names":[],"mappings":"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"}