@mlightcad/data-model 1.7.27 → 1.7.29

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 (87) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +224 -224
  3. package/dist/data-model.cjs +4 -3
  4. package/dist/data-model.js +6601 -3480
  5. package/dist/dxf-parser-worker.js +1023 -740
  6. package/lib/converter/AcDbDxfConverter.d.ts +1 -0
  7. package/lib/converter/AcDbDxfConverter.d.ts.map +1 -1
  8. package/lib/converter/AcDbDxfConverter.js +48 -1
  9. package/lib/converter/AcDbDxfConverter.js.map +1 -1
  10. package/lib/converter/AcDbEntitiyConverter.d.ts +12 -0
  11. package/lib/converter/AcDbEntitiyConverter.d.ts.map +1 -1
  12. package/lib/converter/AcDbEntitiyConverter.js +528 -3
  13. package/lib/converter/AcDbEntitiyConverter.js.map +1 -1
  14. package/lib/converter/AcDbObjectConverter.d.ts +10 -3
  15. package/lib/converter/AcDbObjectConverter.d.ts.map +1 -1
  16. package/lib/converter/AcDbObjectConverter.js +173 -1
  17. package/lib/converter/AcDbObjectConverter.js.map +1 -1
  18. package/lib/converter/AcDbRegenerator.d.ts.map +1 -1
  19. package/lib/converter/AcDbRegenerator.js +22 -4
  20. package/lib/converter/AcDbRegenerator.js.map +1 -1
  21. package/lib/database/AcDbBlockTableRecord.d.ts.map +1 -1
  22. package/lib/database/AcDbBlockTableRecord.js +1 -0
  23. package/lib/database/AcDbBlockTableRecord.js.map +1 -1
  24. package/lib/database/AcDbDatabase.d.ts +42 -0
  25. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  26. package/lib/database/AcDbDatabase.js +250 -32
  27. package/lib/database/AcDbDatabase.js.map +1 -1
  28. package/lib/database/AcDbSysVarManager.d.ts.map +1 -1
  29. package/lib/database/AcDbSysVarManager.js +28 -1
  30. package/lib/database/AcDbSysVarManager.js.map +1 -1
  31. package/lib/database/AcDbSystemVariables.d.ts +7 -1
  32. package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
  33. package/lib/database/AcDbSystemVariables.js +6 -0
  34. package/lib/database/AcDbSystemVariables.js.map +1 -1
  35. package/lib/entity/AcDbLeader.d.ts +32 -3
  36. package/lib/entity/AcDbLeader.d.ts.map +1 -1
  37. package/lib/entity/AcDbLeader.js +140 -10
  38. package/lib/entity/AcDbLeader.js.map +1 -1
  39. package/lib/entity/AcDbMLeader.d.ts +1092 -0
  40. package/lib/entity/AcDbMLeader.d.ts.map +1 -0
  41. package/lib/entity/AcDbMLeader.js +2553 -0
  42. package/lib/entity/AcDbMLeader.js.map +1 -0
  43. package/lib/entity/AcDbMLine.d.ts +670 -0
  44. package/lib/entity/AcDbMLine.d.ts.map +1 -0
  45. package/lib/entity/AcDbMLine.js +1510 -0
  46. package/lib/entity/AcDbMLine.js.map +1 -0
  47. package/lib/entity/dimension/AcDbDiametricDimension.d.ts +0 -33
  48. package/lib/entity/dimension/AcDbDiametricDimension.d.ts.map +1 -1
  49. package/lib/entity/dimension/AcDbDiametricDimension.js +0 -80
  50. package/lib/entity/dimension/AcDbDiametricDimension.js.map +1 -1
  51. package/lib/entity/dimension/AcDbDimension.d.ts +1 -9
  52. package/lib/entity/dimension/AcDbDimension.d.ts.map +1 -1
  53. package/lib/entity/dimension/AcDbDimension.js +0 -10
  54. package/lib/entity/dimension/AcDbDimension.js.map +1 -1
  55. package/lib/entity/dimension/AcDbRadialDimension.d.ts +0 -6
  56. package/lib/entity/dimension/AcDbRadialDimension.d.ts.map +1 -1
  57. package/lib/entity/dimension/AcDbRadialDimension.js +0 -8
  58. package/lib/entity/dimension/AcDbRadialDimension.js.map +1 -1
  59. package/lib/entity/index.d.ts +2 -0
  60. package/lib/entity/index.d.ts.map +1 -1
  61. package/lib/entity/index.js +2 -0
  62. package/lib/entity/index.js.map +1 -1
  63. package/lib/misc/AcDbConstants.d.ts +14 -0
  64. package/lib/misc/AcDbConstants.d.ts.map +1 -1
  65. package/lib/misc/AcDbConstants.js +14 -0
  66. package/lib/misc/AcDbConstants.js.map +1 -1
  67. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts +59 -0
  68. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts.map +1 -0
  69. package/lib/misc/AcDbMLeaderStyleColorCodec.js +101 -0
  70. package/lib/misc/AcDbMLeaderStyleColorCodec.js.map +1 -0
  71. package/lib/misc/index.d.ts +1 -0
  72. package/lib/misc/index.d.ts.map +1 -1
  73. package/lib/misc/index.js +1 -0
  74. package/lib/misc/index.js.map +1 -1
  75. package/lib/object/AcDbMLeaderStyle.d.ts +405 -0
  76. package/lib/object/AcDbMLeaderStyle.d.ts.map +1 -0
  77. package/lib/object/AcDbMLeaderStyle.js +1006 -0
  78. package/lib/object/AcDbMLeaderStyle.js.map +1 -0
  79. package/lib/object/AcDbMlineStyle.d.ts +58 -0
  80. package/lib/object/AcDbMlineStyle.d.ts.map +1 -0
  81. package/lib/object/AcDbMlineStyle.js +158 -0
  82. package/lib/object/AcDbMlineStyle.js.map +1 -0
  83. package/lib/object/index.d.ts +2 -0
  84. package/lib/object/index.d.ts.map +1 -1
  85. package/lib/object/index.js +2 -0
  86. package/lib/object/index.js.map +1 -1
  87. package/package.json +5 -5
@@ -34,10 +34,21 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
34
  }
35
35
  return to.concat(ar || Array.prototype.slice.call(from));
36
36
  };
37
+ var __values = (this && this.__values) || function(o) {
38
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
39
+ if (m) return m.call(o);
40
+ if (o && typeof o.length === "number") return {
41
+ next: function () {
42
+ if (o && i >= o.length) o = void 0;
43
+ return { value: o && o[i++], done: !o };
44
+ }
45
+ };
46
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
47
+ };
37
48
  import { AcCmTransparency } from '@mlightcad/common';
38
49
  import { HatchSolidFill, SmoothType, VertexFlag } from '@mlightcad/dxf-json';
39
50
  import { AcGeCircArc2d, AcGeEllipseArc2d, AcGeLine2d, AcGeLoop2d, AcGeMathUtil, AcGePoint2d, AcGePoint3d, AcGePolyline2d, AcGeSpline3d, AcGeVector2d, AcGeVector3d, transformOcsPointToWcs } from '@mlightcad/geometry-engine';
40
- import { AcDb2dPolyline, AcDb3dPolyline, AcDb3PointAngularDimension, AcDbAlignedDimension, AcDbArc, AcDbAttribute, AcDbAttributeDefinition, AcDbAttributeFlags, AcDbAttributeMTextFlag, AcDbBlockReference, AcDbCircle, AcDbDiametricDimension, AcDbEllipse, AcDbFace, AcDbHatch, AcDbHatchObjectType, AcDbLeader, AcDbLine, AcDbMText, AcDbOrdinateDimension, AcDbPoint, AcDbPoly2dType, AcDbPoly3dType, AcDbPolyFaceMesh, AcDbPolygonMesh, AcDbPolyline, AcDbRadialDimension, AcDbRasterImage, AcDbRay, AcDbRotatedDimension, AcDbSpline, AcDbTable, AcDbText, AcDbTrace, AcDbViewport, AcDbWipeout, AcDbXline } from '../entity';
51
+ import { AcDb2dPolyline, AcDb3dPolyline, AcDb3PointAngularDimension, AcDbAlignedDimension, AcDbArc, AcDbAttribute, AcDbAttributeDefinition, AcDbAttributeFlags, AcDbAttributeMTextFlag, AcDbBlockReference, AcDbCircle, AcDbDiametricDimension, AcDbEllipse, AcDbFace, AcDbHatch, AcDbHatchObjectType, AcDbLeader, AcDbLine, AcDbMLeader, AcDbMLeaderContentType, AcDbMLeaderLineType, AcDbMLine, AcDbMText, AcDbOrdinateDimension, AcDbPoint, AcDbPoly2dType, AcDbPoly3dType, AcDbPolyFaceMesh, AcDbPolygonMesh, AcDbPolyline, AcDbRadialDimension, AcDbRasterImage, AcDbRay, AcDbRotatedDimension, AcDbSpline, AcDbTable, AcDbText, AcDbTrace, AcDbViewport, AcDbWipeout, AcDbXline } from '../entity';
41
52
  /**
42
53
  * Converts DXF entities to AcDbEntity objects.
43
54
  *
@@ -138,6 +149,12 @@ var AcDbEntityConverter = /** @class */ (function () {
138
149
  else if (entity.type == 'MTEXT') {
139
150
  return this.convertMText(entity);
140
151
  }
152
+ else if (entity.type == 'MLINE') {
153
+ return this.convertMLine(entity);
154
+ }
155
+ else if (entity.type == 'MULTILEADER' || entity.type == 'MLEADER') {
156
+ return this.convertMLeader(entity);
157
+ }
141
158
  else if (entity.type == 'POLYLINE') {
142
159
  return this.convertPolyline(entity);
143
160
  }
@@ -616,16 +633,307 @@ var AcDbEntityConverter = /** @class */ (function () {
616
633
  return dbEntity;
617
634
  };
618
635
  AcDbEntityConverter.prototype.convertLeader = function (leader) {
636
+ var _a, _b, _c, _d, _e;
619
637
  var dbEntity = new AcDbLeader();
620
- leader.vertices.forEach(function (point) {
638
+ (_a = leader.vertices) === null || _a === void 0 ? void 0 : _a.forEach(function (point) {
621
639
  dbEntity.appendVertex(point);
622
640
  });
623
641
  dbEntity.hasArrowHead = leader.isArrowheadEnabled;
624
642
  dbEntity.hasHookLine = leader.isHooklineExists;
643
+ dbEntity.isHookLineSameDirection = leader.isHooklineSameDirection;
625
644
  dbEntity.isSplined = leader.isSpline;
626
- dbEntity.dimensionStyle = leader.styleName;
645
+ dbEntity.dimensionStyle = (_b = leader.styleName) !== null && _b !== void 0 ? _b : '';
627
646
  dbEntity.annoType =
628
647
  leader.leaderCreationFlag;
648
+ dbEntity.textHeight = (_c = leader.textHeight) !== null && _c !== void 0 ? _c : 0;
649
+ dbEntity.textWidth = (_d = leader.textWidth) !== null && _d !== void 0 ? _d : 0;
650
+ dbEntity.byBlockColor = leader.byBlockColor;
651
+ dbEntity.associatedAnnotation = (_e = leader.associatedAnnotation) !== null && _e !== void 0 ? _e : '';
652
+ if (leader.normal)
653
+ dbEntity.normal = leader.normal;
654
+ if (leader.horizontalDirection) {
655
+ dbEntity.horizontalDirection = leader.horizontalDirection;
656
+ }
657
+ if (leader.offsetFromBlock)
658
+ dbEntity.offsetFromBlock = leader.offsetFromBlock;
659
+ if (leader.offsetFromAnnotation) {
660
+ dbEntity.offsetFromAnnotation = leader.offsetFromAnnotation;
661
+ }
662
+ return dbEntity;
663
+ };
664
+ AcDbEntityConverter.prototype.convertMLine = function (mline) {
665
+ var _a, _b;
666
+ var dbEntity = new AcDbMLine();
667
+ dbEntity.styleName = mline.name || 'STANDARD';
668
+ dbEntity.styleObjectHandle = mline.styleObjectHandle;
669
+ dbEntity.scale = mline.scale;
670
+ dbEntity.justification =
671
+ mline.justification;
672
+ dbEntity.flags = mline.flags;
673
+ dbEntity.styleCount = mline.styleCount;
674
+ dbEntity.startPosition = mline.startPosition;
675
+ dbEntity.normal = (_a = mline.extrusionDirection) !== null && _a !== void 0 ? _a : AcGeVector3d.Z_AXIS;
676
+ dbEntity.segments = ((_b = mline.segments) !== null && _b !== void 0 ? _b : []).map(function (segment) {
677
+ var _a, _b;
678
+ return ({
679
+ position: segment.position,
680
+ direction: segment.direction,
681
+ miterDirection: segment.miterDirection,
682
+ elements: (_b = (_a = segment.elements) === null || _a === void 0 ? void 0 : _a.map(function (element) {
683
+ var _a, _b;
684
+ return ({
685
+ parameterCount: element.parameterCount,
686
+ parameters: (_a = element.parameters) !== null && _a !== void 0 ? _a : [],
687
+ fillCount: element.fillCount,
688
+ fillParameters: (_b = element.fillParameters) !== null && _b !== void 0 ? _b : []
689
+ });
690
+ })) !== null && _b !== void 0 ? _b : []
691
+ });
692
+ });
693
+ return dbEntity;
694
+ };
695
+ AcDbEntityConverter.prototype.convertMLeader = function (mleader) {
696
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
697
+ var dbEntity = new AcDbMLeader();
698
+ var raw = mleader;
699
+ dbEntity.version = mleader.version;
700
+ dbEntity.leaderStyleId = mleader.leaderStyleId;
701
+ if (mleader.leaderStyleId)
702
+ dbEntity.mleaderStyleId = mleader.leaderStyleId;
703
+ dbEntity.propertyOverrideFlag = mleader.propertyOverrideFlag;
704
+ dbEntity.leaderLineType = ((_a = mleader.leaderLineType) !== null && _a !== void 0 ? _a : AcDbMLeaderLineType.StraightLeader);
705
+ dbEntity.leaderLineColor = mleader.leaderLineColor;
706
+ dbEntity.leaderLineTypeId = mleader.leaderLineTypeId;
707
+ dbEntity.leaderLineWeight = mleader.leaderLineWeight;
708
+ dbEntity.landingEnabled = mleader.landingEnabled;
709
+ dbEntity.doglegEnabled = (_b = mleader.doglegEnabled) !== null && _b !== void 0 ? _b : false;
710
+ dbEntity.doglegLength = (_c = mleader.doglegLength) !== null && _c !== void 0 ? _c : 0;
711
+ dbEntity.arrowheadId = mleader.arrowheadId;
712
+ dbEntity.arrowheadSize = mleader.arrowheadSize;
713
+ dbEntity.textStyleId = mleader.textStyleId;
714
+ dbEntity.textLeftAttachmentType = mleader.textLeftAttachmentType;
715
+ dbEntity.textRightAttachmentType = mleader.textRightAttachmentType;
716
+ dbEntity.textAngleType = mleader.textAngleType;
717
+ dbEntity.textAlignmentType = mleader.textAlignmentType;
718
+ dbEntity.textColor = mleader.textColor;
719
+ dbEntity.textFrameEnabled = mleader.textFrameEnabled;
720
+ dbEntity.landingGap = mleader.landingGap;
721
+ dbEntity.textAttachment = mleader.textAttachment;
722
+ dbEntity.textFlowDirection = mleader.textFlowDirection;
723
+ dbEntity.blockContentId = mleader.blockContentId;
724
+ dbEntity.blockContentColor = mleader.blockContentColor;
725
+ dbEntity.blockContentRotation = mleader.blockContentRotation;
726
+ dbEntity.blockContentConnectionType = mleader.blockContentConnectionType;
727
+ dbEntity.annotativeScaleEnabled = mleader.annotativeScaleEnabled;
728
+ dbEntity.arrowheadOverrides = mleader.arrowheadOverrides
729
+ ? mleader.arrowheadOverrides.map(function (item) { return (__assign({}, item)); })
730
+ : [];
731
+ dbEntity.blockAttributes = mleader.blockAttributes
732
+ ? mleader.blockAttributes.map(function (item) { return (__assign({}, item)); })
733
+ : [];
734
+ dbEntity.textDirectionNegative = mleader.textDirectionNegative;
735
+ dbEntity.textAlignInIPE = mleader.textAlignInIPE;
736
+ dbEntity.bottomTextAttachmentDirection =
737
+ mleader.bottomTextAttachmentDirection;
738
+ dbEntity.topTextAttachmentDirection = mleader.topTextAttachmentDirection;
739
+ dbEntity.contentScale = mleader.contentScale;
740
+ dbEntity.textLineSpacingStyle = mleader.textLineSpacingStyle;
741
+ dbEntity.textBackgroundColor = mleader.textBackgroundColor;
742
+ dbEntity.textBackgroundScaleFactor = mleader.textBackgroundScaleFactor;
743
+ dbEntity.textBackgroundTransparency = mleader.textBackgroundTransparency;
744
+ dbEntity.textBackgroundColorOn = mleader.textBackgroundColorOn;
745
+ dbEntity.textFillOn = mleader.textFillOn;
746
+ dbEntity.textColumnType = mleader.textColumnType;
747
+ dbEntity.textUseAutoHeight = mleader.textUseAutoHeight;
748
+ dbEntity.textColumnWidth = mleader.textColumnWidth;
749
+ dbEntity.textColumnGutterWidth = mleader.textColumnGutterWidth;
750
+ dbEntity.textColumnFlowReversed = mleader.textColumnFlowReversed;
751
+ dbEntity.textColumnHeight = mleader.textColumnHeight;
752
+ dbEntity.textUseWordBreak = mleader.textUseWordBreak;
753
+ dbEntity.hasMText = mleader.hasMText;
754
+ dbEntity.hasBlock = mleader.hasBlock;
755
+ dbEntity.planeNormalReversed = mleader.planeNormalReversed;
756
+ if (mleader.blockContentScale) {
757
+ dbEntity.blockContentScale = new AcGeVector3d(mleader.blockContentScale);
758
+ }
759
+ if (mleader.contentBasePosition) {
760
+ dbEntity.contentBasePosition = new AcGePoint3d().copy(mleader.contentBasePosition);
761
+ }
762
+ if (mleader.textAnchor) {
763
+ dbEntity.textAnchor = new AcGePoint3d().copy(mleader.textAnchor);
764
+ }
765
+ if (mleader.planeOrigin) {
766
+ dbEntity.planeOrigin = new AcGePoint3d().copy(mleader.planeOrigin);
767
+ }
768
+ if (mleader.planeXAxisDirection) {
769
+ dbEntity.planeXAxisDirection = new AcGeVector3d(mleader.planeXAxisDirection);
770
+ }
771
+ if (mleader.planeYAxisDirection) {
772
+ dbEntity.planeYAxisDirection = new AcGeVector3d(mleader.planeYAxisDirection);
773
+ }
774
+ var rawTextContent = raw.textContent;
775
+ var rawTextContentRecord = rawTextContent && typeof rawTextContent === 'object'
776
+ ? rawTextContent
777
+ : undefined;
778
+ var hasMTextContent = (typeof rawTextContent === 'string' && rawTextContent.length > 0) ||
779
+ this.readString(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, ['text', 'contents']) !=
780
+ null ||
781
+ this.readString(raw, ['text', 'contents', 'mtext']) != null;
782
+ var contentType = (_d = mleader.contentType) !== null && _d !== void 0 ? _d : (hasMTextContent
783
+ ? AcDbMLeaderContentType.MTextContent
784
+ : mleader.blockContent
785
+ ? AcDbMLeaderContentType.BlockContent
786
+ : AcDbMLeaderContentType.NoneContent);
787
+ dbEntity.contentType = contentType;
788
+ var normal = this.readPoint(raw, ['normal', 'extrusionDirection']);
789
+ if (normal)
790
+ dbEntity.normal = normal;
791
+ var textStyleName = (_e = this.readString(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, [
792
+ 'styleName',
793
+ 'textStyleName',
794
+ 'textStyle'
795
+ ])) !== null && _e !== void 0 ? _e : this.readString(raw, [
796
+ 'textStyleName',
797
+ 'textStyle',
798
+ 'styleName',
799
+ 'textStyleId'
800
+ ]);
801
+ if (textStyleName)
802
+ dbEntity.textStyleName = textStyleName;
803
+ var textHeight = (_g = (_f = this.readPositiveNumber(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, [
804
+ 'textHeight',
805
+ 'height'
806
+ ])) !== null && _f !== void 0 ? _f : this.readPositiveNumber(raw, [
807
+ 'textHeight',
808
+ 'mtextHeight',
809
+ 'textContentHeight'
810
+ ])) !== null && _g !== void 0 ? _g : this.readPositiveNumber(raw, ['arrowheadSize', 'contentScale']);
811
+ if (textHeight != null)
812
+ dbEntity.textHeight = textHeight;
813
+ var textWidth = (_h = this.readPositiveNumber(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, [
814
+ 'textWidth',
815
+ 'width'
816
+ ])) !== null && _h !== void 0 ? _h : this.readPositiveNumber(raw, [
817
+ 'textWidth',
818
+ 'mtextWidth',
819
+ 'textContentWidth'
820
+ ]);
821
+ if (textWidth != null)
822
+ dbEntity.textWidth = textWidth;
823
+ dbEntity.textLineSpacingFactor =
824
+ (_k = (_j = this.readNumber(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, [
825
+ 'lineSpacingFactor',
826
+ 'textLineSpacingFactor'
827
+ ])) !== null && _j !== void 0 ? _j : this.readNumber(raw, ['textLineSpacingFactor'])) !== null && _k !== void 0 ? _k : dbEntity.textLineSpacingFactor;
828
+ var textRotation = (_l = this.readNumber(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, [
829
+ 'textRotation',
830
+ 'rotation'
831
+ ])) !== null && _l !== void 0 ? _l : this.readNumber(raw, [
832
+ 'textRotation',
833
+ 'mtextRotation',
834
+ 'textContentRotation'
835
+ ]);
836
+ if (textRotation != null) {
837
+ dbEntity.textRotation = AcGeMathUtil.degToRad(textRotation);
838
+ }
839
+ var textDirection = this.readPoint(raw, [
840
+ 'textDirection',
841
+ 'mtextDirection',
842
+ 'textDirectionVector'
843
+ ]);
844
+ if (textDirection)
845
+ dbEntity.textDirection = textDirection;
846
+ var textAttachmentPoint = this.readNumber(raw, [
847
+ 'textAttachmentPoint',
848
+ 'attachmentPoint'
849
+ ]);
850
+ if (textAttachmentPoint != null) {
851
+ dbEntity.textAttachmentPoint =
852
+ textAttachmentPoint;
853
+ }
854
+ var textAttachmentDirection = mleader.textAttachmentDirection;
855
+ if (textAttachmentDirection != null) {
856
+ dbEntity.textAttachmentDirection =
857
+ textAttachmentDirection;
858
+ }
859
+ var textDrawingDirection = this.readNumber(raw, [
860
+ 'textDrawingDirection',
861
+ 'drawingDirection'
862
+ ]);
863
+ if (textDrawingDirection != null) {
864
+ dbEntity.textDrawingDirection =
865
+ textDrawingDirection;
866
+ }
867
+ var text = typeof rawTextContent === 'string'
868
+ ? rawTextContent
869
+ : ((_m = this.readString(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, ['text', 'contents'])) !== null && _m !== void 0 ? _m : this.readString(raw, ['text', 'contents', 'mtext']));
870
+ var anchorPoint = (_o = this.readPoint(rawTextContentRecord !== null && rawTextContentRecord !== void 0 ? rawTextContentRecord : {}, [
871
+ 'anchorPoint',
872
+ 'textAnchor',
873
+ 'textLocation',
874
+ 'textPosition',
875
+ 'textAnchorPoint'
876
+ ])) !== null && _o !== void 0 ? _o : this.readPoint(raw, [
877
+ 'textAnchor',
878
+ 'textLocation',
879
+ 'textPosition',
880
+ 'textAnchorPoint',
881
+ 'contentBasePosition'
882
+ ]);
883
+ if (text != null && anchorPoint) {
884
+ dbEntity.mtextContent = { text: text, anchorPoint: anchorPoint };
885
+ }
886
+ if (mleader.blockContent) {
887
+ var blockRecord = mleader.blockContent;
888
+ dbEntity.blockContent = {
889
+ blockContentId: mleader.blockContent.blockContentId,
890
+ normal: this.readPoint(blockRecord, ['normal']),
891
+ position: mleader.blockContent.position,
892
+ scale: this.readPoint(blockRecord, ['scale']),
893
+ rotation: this.readNumber(blockRecord, ['rotation']),
894
+ color: this.readNumber(blockRecord, ['color']),
895
+ transformationMatrix: Array.isArray(mleader.blockContent.transformationMatrix)
896
+ ? mleader.blockContent.transformationMatrix
897
+ : []
898
+ };
899
+ }
900
+ else if (mleader.blockContentId) {
901
+ dbEntity.blockContent = {
902
+ blockContentId: mleader.blockContentId,
903
+ scale: mleader.blockContentScale,
904
+ rotation: mleader.blockContentRotation,
905
+ color: mleader.blockContentColor,
906
+ transformationMatrix: []
907
+ };
908
+ }
909
+ (_p = this.readMLeaderLeaders(raw)) === null || _p === void 0 ? void 0 : _p.forEach(function (leader) {
910
+ var _a;
911
+ dbEntity.addLeader({
912
+ lastLeaderLinePoint: leader.lastLeaderLinePoint,
913
+ lastLeaderLinePointSet: leader.lastLeaderLinePointSet,
914
+ doglegVector: leader.doglegVector,
915
+ doglegVectorSet: leader.doglegVectorSet,
916
+ doglegLength: (_a = leader.doglegLength) !== null && _a !== void 0 ? _a : mleader.doglegLength,
917
+ breaks: leader.breaks,
918
+ leaderBranchIndex: leader.leaderBranchIndex,
919
+ leaderLines: leader.leaderLines
920
+ });
921
+ });
922
+ if (dbEntity.numberOfLeaders === 0) {
923
+ (_q = this.readLeaderLineArray(raw)) === null || _q === void 0 ? void 0 : _q.forEach(function (line) {
924
+ dbEntity.addLeader({
925
+ doglegLength: mleader.doglegLength
926
+ });
927
+ dbEntity.addLeaderLine(dbEntity.numberOfLeaders - 1, line);
928
+ });
929
+ }
930
+ if (dbEntity.numberOfLeaders === 0 && mleader.contentBasePosition) {
931
+ dbEntity.addLeader({
932
+ lastLeaderLinePoint: mleader.contentBasePosition,
933
+ lastLeaderLinePointSet: true,
934
+ doglegLength: mleader.doglegLength
935
+ });
936
+ }
629
937
  return dbEntity;
630
938
  };
631
939
  AcDbEntityConverter.prototype.convertDimension = function (dimension) {
@@ -844,6 +1152,223 @@ var AcDbEntityConverter = /** @class */ (function () {
844
1152
  dbEntity.transparency = AcCmTransparency.deserialize(entity.transparency);
845
1153
  }
846
1154
  };
1155
+ AcDbEntityConverter.prototype.readNumber = function (source, names) {
1156
+ var e_1, _a;
1157
+ try {
1158
+ for (var names_1 = __values(names), names_1_1 = names_1.next(); !names_1_1.done; names_1_1 = names_1.next()) {
1159
+ var name_1 = names_1_1.value;
1160
+ var value = source[name_1];
1161
+ if (typeof value === 'number' && Number.isFinite(value))
1162
+ return value;
1163
+ }
1164
+ }
1165
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1166
+ finally {
1167
+ try {
1168
+ if (names_1_1 && !names_1_1.done && (_a = names_1.return)) _a.call(names_1);
1169
+ }
1170
+ finally { if (e_1) throw e_1.error; }
1171
+ }
1172
+ return undefined;
1173
+ };
1174
+ AcDbEntityConverter.prototype.readPositiveNumber = function (source, names) {
1175
+ var value = this.readNumber(source, names);
1176
+ return value != null && value > 0 ? value : undefined;
1177
+ };
1178
+ AcDbEntityConverter.prototype.readString = function (source, names) {
1179
+ var e_2, _a;
1180
+ try {
1181
+ for (var names_2 = __values(names), names_2_1 = names_2.next(); !names_2_1.done; names_2_1 = names_2.next()) {
1182
+ var name_2 = names_2_1.value;
1183
+ var value = source[name_2];
1184
+ if (typeof value === 'string')
1185
+ return value;
1186
+ }
1187
+ }
1188
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
1189
+ finally {
1190
+ try {
1191
+ if (names_2_1 && !names_2_1.done && (_a = names_2.return)) _a.call(names_2);
1192
+ }
1193
+ finally { if (e_2) throw e_2.error; }
1194
+ }
1195
+ return undefined;
1196
+ };
1197
+ AcDbEntityConverter.prototype.readBoolean = function (source, names) {
1198
+ var e_3, _a;
1199
+ try {
1200
+ for (var names_3 = __values(names), names_3_1 = names_3.next(); !names_3_1.done; names_3_1 = names_3.next()) {
1201
+ var name_3 = names_3_1.value;
1202
+ var value = source[name_3];
1203
+ if (typeof value === 'boolean')
1204
+ return value;
1205
+ if (typeof value === 'number')
1206
+ return value !== 0;
1207
+ }
1208
+ }
1209
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
1210
+ finally {
1211
+ try {
1212
+ if (names_3_1 && !names_3_1.done && (_a = names_3.return)) _a.call(names_3);
1213
+ }
1214
+ finally { if (e_3) throw e_3.error; }
1215
+ }
1216
+ return undefined;
1217
+ };
1218
+ AcDbEntityConverter.prototype.readPoint = function (source, names) {
1219
+ var e_4, _a;
1220
+ var _b;
1221
+ try {
1222
+ for (var names_4 = __values(names), names_4_1 = names_4.next(); !names_4_1.done; names_4_1 = names_4.next()) {
1223
+ var name_4 = names_4_1.value;
1224
+ var value = source[name_4];
1225
+ if (this.isPointLike(value))
1226
+ return value;
1227
+ if (Array.isArray(value) &&
1228
+ typeof value[0] === 'number' &&
1229
+ typeof value[1] === 'number') {
1230
+ return { x: value[0], y: value[1], z: (_b = value[2]) !== null && _b !== void 0 ? _b : 0 };
1231
+ }
1232
+ }
1233
+ }
1234
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
1235
+ finally {
1236
+ try {
1237
+ if (names_4_1 && !names_4_1.done && (_a = names_4.return)) _a.call(names_4);
1238
+ }
1239
+ finally { if (e_4) throw e_4.error; }
1240
+ }
1241
+ return undefined;
1242
+ };
1243
+ AcDbEntityConverter.prototype.readLeaderLineArray = function (source) {
1244
+ var _this = this;
1245
+ var leaderLines = source.leaderLines;
1246
+ if (Array.isArray(leaderLines)) {
1247
+ return leaderLines
1248
+ .map(function (line) {
1249
+ if (!line || typeof line !== 'object')
1250
+ return undefined;
1251
+ var vertices = line.vertices;
1252
+ return Array.isArray(vertices)
1253
+ ? vertices.filter(function (point) { return _this.isPointLike(point); })
1254
+ : undefined;
1255
+ })
1256
+ .filter(function (line) { return !!line && line.length > 0; });
1257
+ }
1258
+ var vertices = source.vertices;
1259
+ if (Array.isArray(vertices)) {
1260
+ var line = vertices.filter(function (point) { return _this.isPointLike(point); });
1261
+ return line.length > 0 ? [line] : undefined;
1262
+ }
1263
+ return undefined;
1264
+ };
1265
+ AcDbEntityConverter.prototype.readMLeaderLeaders = function (source) {
1266
+ var _this = this;
1267
+ var leaders = source.leaderSections;
1268
+ if (!Array.isArray(leaders))
1269
+ return undefined;
1270
+ var dbLeaders = [];
1271
+ leaders.forEach(function (leader) {
1272
+ if (!leader || typeof leader !== 'object')
1273
+ return;
1274
+ var leaderRecord = leader;
1275
+ var leaderLines = leaderRecord.leaderLines;
1276
+ var lines = Array.isArray(leaderLines)
1277
+ ? leaderLines.reduce(function (result, line) {
1278
+ var dbLine = _this.readMLeaderLine(line);
1279
+ if (dbLine)
1280
+ result.push(dbLine);
1281
+ return result;
1282
+ }, [])
1283
+ : undefined;
1284
+ var dbLeader = {};
1285
+ var lastLeaderLinePoint = _this.readPoint(leaderRecord, [
1286
+ 'lastLeaderLinePoint'
1287
+ ]);
1288
+ var doglegVector = _this.readPoint(leaderRecord, ['doglegVector']);
1289
+ var doglegLength = _this.readNumber(leaderRecord, ['doglegLength']);
1290
+ var leaderBreaks = _this.readMLeaderBreaks(leaderRecord.breaks);
1291
+ var leaderBranchIndex = _this.readNumber(leaderRecord, [
1292
+ 'leaderBranchIndex'
1293
+ ]);
1294
+ if (lastLeaderLinePoint)
1295
+ dbLeader.lastLeaderLinePoint = lastLeaderLinePoint;
1296
+ if (leaderRecord.lastLeaderLinePointSet != null) {
1297
+ dbLeader.lastLeaderLinePointSet = _this.readBoolean(leaderRecord, [
1298
+ 'lastLeaderLinePointSet'
1299
+ ]);
1300
+ }
1301
+ if (doglegVector)
1302
+ dbLeader.doglegVector = doglegVector;
1303
+ if (leaderRecord.doglegVectorSet != null) {
1304
+ dbLeader.doglegVectorSet = _this.readBoolean(leaderRecord, [
1305
+ 'doglegVectorSet'
1306
+ ]);
1307
+ }
1308
+ if (doglegLength != null)
1309
+ dbLeader.doglegLength = doglegLength;
1310
+ if (leaderBreaks)
1311
+ dbLeader.breaks = leaderBreaks;
1312
+ if (leaderBranchIndex != null) {
1313
+ dbLeader.leaderBranchIndex = leaderBranchIndex;
1314
+ }
1315
+ if (lines)
1316
+ dbLeader.leaderLines = lines;
1317
+ dbLeaders.push(dbLeader);
1318
+ });
1319
+ return dbLeaders;
1320
+ };
1321
+ AcDbEntityConverter.prototype.readMLeaderLine = function (value) {
1322
+ var _this = this;
1323
+ if (!value || typeof value !== 'object')
1324
+ return undefined;
1325
+ var lineRecord = value;
1326
+ var vertices = lineRecord.vertices;
1327
+ var dbVertices = Array.isArray(vertices)
1328
+ ? vertices.filter(function (point) { return _this.isPointLike(point); })
1329
+ : [];
1330
+ var dbBreaks = this.readMLeaderBreaks(lineRecord.breaks);
1331
+ var breakPointIndexes = Array.isArray(lineRecord.breakPointIndexes)
1332
+ ? lineRecord.breakPointIndexes.filter(function (item) { return typeof item === 'number'; })
1333
+ : undefined;
1334
+ var leaderLineIndex = this.readNumber(lineRecord, ['leaderLineIndex']);
1335
+ return dbVertices.length > 0 || (dbBreaks && dbBreaks.length > 0)
1336
+ ? {
1337
+ vertices: dbVertices,
1338
+ breakPointIndexes: breakPointIndexes,
1339
+ leaderLineIndex: leaderLineIndex,
1340
+ breaks: dbBreaks
1341
+ }
1342
+ : undefined;
1343
+ };
1344
+ AcDbEntityConverter.prototype.readMLeaderBreaks = function (value) {
1345
+ var _this = this;
1346
+ if (!Array.isArray(value))
1347
+ return undefined;
1348
+ var breaks = value
1349
+ .map(function (item) {
1350
+ if (!item || typeof item !== 'object')
1351
+ return undefined;
1352
+ var breakRecord = item;
1353
+ var start = _this.readPoint(breakRecord, ['start']);
1354
+ var end = _this.readPoint(breakRecord, ['end']);
1355
+ var index = _this.readNumber(breakRecord, ['index']);
1356
+ if (!start || !end)
1357
+ return undefined;
1358
+ var parsed = { start: start, end: end };
1359
+ if (index != null)
1360
+ parsed.index = index;
1361
+ return parsed;
1362
+ })
1363
+ .filter(function (item) { return !!item; });
1364
+ return breaks.length > 0 ? breaks : undefined;
1365
+ };
1366
+ AcDbEntityConverter.prototype.isPointLike = function (value) {
1367
+ return (!!value &&
1368
+ typeof value === 'object' &&
1369
+ typeof value.x === 'number' &&
1370
+ typeof value.y === 'number');
1371
+ };
847
1372
  return AcDbEntityConverter;
848
1373
  }());
849
1374
  export { AcDbEntityConverter };