@mlightcad/data-model 1.15.14 → 1.15.15

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 (180) hide show
  1. package/dist/data-model.cjs +16 -16
  2. package/lib/base/AcDbDxfPairReader.d.ts.map +1 -1
  3. package/lib/base/AcDbDxfPairReader.js +1 -14
  4. package/lib/base/AcDbDxfPairReader.js.map +1 -1
  5. package/lib/database/AcDbBlockTableRecord.d.ts +6 -0
  6. package/lib/database/AcDbBlockTableRecord.d.ts.map +1 -1
  7. package/lib/database/AcDbBlockTableRecord.js +15 -0
  8. package/lib/database/AcDbBlockTableRecord.js.map +1 -1
  9. package/lib/database/AcDbDatabase.d.ts +10 -2
  10. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  11. package/lib/database/AcDbDatabase.js +28 -2
  12. package/lib/database/AcDbDatabase.js.map +1 -1
  13. package/lib/database/AcDbDimStyleTableRecord.d.ts +5 -0
  14. package/lib/database/AcDbDimStyleTableRecord.d.ts.map +1 -1
  15. package/lib/database/AcDbDimStyleTableRecord.js +14 -0
  16. package/lib/database/AcDbDimStyleTableRecord.js.map +1 -1
  17. package/lib/database/AcDbSysVarManager.d.ts.map +1 -1
  18. package/lib/database/AcDbSysVarManager.js +16 -0
  19. package/lib/database/AcDbSysVarManager.js.map +1 -1
  20. package/lib/database/AcDbSystemVariables.d.ts +12 -1
  21. package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
  22. package/lib/database/AcDbSystemVariables.js +11 -0
  23. package/lib/database/AcDbSystemVariables.js.map +1 -1
  24. package/lib/database/AcDbTextStyleTableRecord.d.ts +5 -0
  25. package/lib/database/AcDbTextStyleTableRecord.d.ts.map +1 -1
  26. package/lib/database/AcDbTextStyleTableRecord.js +14 -0
  27. package/lib/database/AcDbTextStyleTableRecord.js.map +1 -1
  28. package/lib/dxf/AcDbDxfObjectsReader.d.ts +5 -0
  29. package/lib/dxf/AcDbDxfObjectsReader.d.ts.map +1 -1
  30. package/lib/dxf/AcDbDxfObjectsReader.js +94 -0
  31. package/lib/dxf/AcDbDxfObjectsReader.js.map +1 -1
  32. package/lib/entity/AcDbAttribute.d.ts +22 -0
  33. package/lib/entity/AcDbAttribute.d.ts.map +1 -1
  34. package/lib/entity/AcDbAttribute.js +85 -0
  35. package/lib/entity/AcDbAttribute.js.map +1 -1
  36. package/lib/entity/AcDbAttributeDefinition.d.ts +4 -0
  37. package/lib/entity/AcDbAttributeDefinition.d.ts.map +1 -1
  38. package/lib/entity/AcDbAttributeDefinition.js +75 -0
  39. package/lib/entity/AcDbAttributeDefinition.js.map +1 -1
  40. package/lib/entity/AcDbBlockReference.d.ts +22 -0
  41. package/lib/entity/AcDbBlockReference.d.ts.map +1 -1
  42. package/lib/entity/AcDbBlockReference.js +106 -22
  43. package/lib/entity/AcDbBlockReference.js.map +1 -1
  44. package/lib/entity/AcDbFcf.d.ts +5 -0
  45. package/lib/entity/AcDbFcf.d.ts.map +1 -1
  46. package/lib/entity/AcDbFcf.js +43 -6
  47. package/lib/entity/AcDbFcf.js.map +1 -1
  48. package/lib/entity/AcDbHatch.d.ts +15 -0
  49. package/lib/entity/AcDbHatch.d.ts.map +1 -1
  50. package/lib/entity/AcDbHatch.js +111 -27
  51. package/lib/entity/AcDbHatch.js.map +1 -1
  52. package/lib/entity/AcDbMLeader.d.ts +26 -5
  53. package/lib/entity/AcDbMLeader.d.ts.map +1 -1
  54. package/lib/entity/AcDbMLeader.js +111 -11
  55. package/lib/entity/AcDbMLeader.js.map +1 -1
  56. package/lib/entity/AcDbMText.d.ts +16 -1
  57. package/lib/entity/AcDbMText.d.ts.map +1 -1
  58. package/lib/entity/AcDbMText.js +28 -3
  59. package/lib/entity/AcDbMText.js.map +1 -1
  60. package/lib/entity/AcDbText.d.ts +25 -2
  61. package/lib/entity/AcDbText.d.ts.map +1 -1
  62. package/lib/entity/AcDbText.js +86 -8
  63. package/lib/entity/AcDbText.js.map +1 -1
  64. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts +2 -0
  65. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts.map +1 -1
  66. package/lib/entity/dimension/AcDb3PointAngularDimension.js +76 -0
  67. package/lib/entity/dimension/AcDb3PointAngularDimension.js.map +1 -1
  68. package/lib/entity/dimension/AcDbAlignedDimension.d.ts +1 -5
  69. package/lib/entity/dimension/AcDbAlignedDimension.d.ts.map +1 -1
  70. package/lib/entity/dimension/AcDbAlignedDimension.js +61 -64
  71. package/lib/entity/dimension/AcDbAlignedDimension.js.map +1 -1
  72. package/lib/entity/dimension/AcDbArcDimension.d.ts +6 -0
  73. package/lib/entity/dimension/AcDbArcDimension.d.ts.map +1 -1
  74. package/lib/entity/dimension/AcDbArcDimension.js +77 -0
  75. package/lib/entity/dimension/AcDbArcDimension.js.map +1 -1
  76. package/lib/entity/dimension/AcDbDiametricDimension.d.ts +1 -0
  77. package/lib/entity/dimension/AcDbDiametricDimension.d.ts.map +1 -1
  78. package/lib/entity/dimension/AcDbDiametricDimension.js +45 -0
  79. package/lib/entity/dimension/AcDbDiametricDimension.js.map +1 -1
  80. package/lib/entity/dimension/AcDbDimBlockBuilder.d.ts +60 -0
  81. package/lib/entity/dimension/AcDbDimBlockBuilder.d.ts.map +1 -0
  82. package/lib/entity/dimension/AcDbDimBlockBuilder.js +245 -0
  83. package/lib/entity/dimension/AcDbDimBlockBuilder.js.map +1 -0
  84. package/lib/entity/dimension/AcDbDimFeatureScale.d.ts +11 -0
  85. package/lib/entity/dimension/AcDbDimFeatureScale.d.ts.map +1 -0
  86. package/lib/entity/dimension/AcDbDimFeatureScale.js +29 -0
  87. package/lib/entity/dimension/AcDbDimFeatureScale.js.map +1 -0
  88. package/lib/entity/dimension/AcDbDimMeasurementFormat.d.ts +16 -0
  89. package/lib/entity/dimension/AcDbDimMeasurementFormat.d.ts.map +1 -0
  90. package/lib/entity/dimension/AcDbDimMeasurementFormat.js +184 -0
  91. package/lib/entity/dimension/AcDbDimMeasurementFormat.js.map +1 -0
  92. package/lib/entity/dimension/AcDbDimension.d.ts +27 -3
  93. package/lib/entity/dimension/AcDbDimension.d.ts.map +1 -1
  94. package/lib/entity/dimension/AcDbDimension.js +112 -23
  95. package/lib/entity/dimension/AcDbDimension.js.map +1 -1
  96. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts +14 -0
  97. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts.map +1 -1
  98. package/lib/entity/dimension/AcDbOrdinateDimension.js +77 -0
  99. package/lib/entity/dimension/AcDbOrdinateDimension.js.map +1 -1
  100. package/lib/entity/dimension/AcDbRadialDimension.d.ts +1 -0
  101. package/lib/entity/dimension/AcDbRadialDimension.d.ts.map +1 -1
  102. package/lib/entity/dimension/AcDbRadialDimension.js +54 -0
  103. package/lib/entity/dimension/AcDbRadialDimension.js.map +1 -1
  104. package/lib/entity/dimension/index.d.ts +2 -0
  105. package/lib/entity/dimension/index.d.ts.map +1 -1
  106. package/lib/entity/dimension/index.js +2 -0
  107. package/lib/entity/dimension/index.js.map +1 -1
  108. package/lib/entity/index.d.ts +1 -1
  109. package/lib/entity/index.d.ts.map +1 -1
  110. package/lib/entity/index.js +1 -1
  111. package/lib/entity/index.js.map +1 -1
  112. package/lib/index.d.ts +3 -3
  113. package/lib/index.d.ts.map +1 -1
  114. package/lib/index.js +3 -3
  115. package/lib/index.js.map +1 -1
  116. package/lib/misc/AcDbAnnotationScale.d.ts +51 -2
  117. package/lib/misc/AcDbAnnotationScale.d.ts.map +1 -1
  118. package/lib/misc/AcDbAnnotationScale.js +529 -11
  119. package/lib/misc/AcDbAnnotationScale.js.map +1 -1
  120. package/lib/misc/AcDbCodePage.d.ts +14 -0
  121. package/lib/misc/AcDbCodePage.d.ts.map +1 -1
  122. package/lib/misc/AcDbCodePage.js +96 -0
  123. package/lib/misc/AcDbCodePage.js.map +1 -1
  124. package/lib/misc/AcDbDataGenerator.d.ts +8 -0
  125. package/lib/misc/AcDbDataGenerator.d.ts.map +1 -1
  126. package/lib/misc/AcDbDataGenerator.js +133 -10
  127. package/lib/misc/AcDbDataGenerator.js.map +1 -1
  128. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts +25 -0
  129. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts.map +1 -1
  130. package/lib/misc/AcDbMLeaderStyleColorCodec.js +82 -0
  131. package/lib/misc/AcDbMLeaderStyleColorCodec.js.map +1 -1
  132. package/lib/misc/index.d.ts +3 -3
  133. package/lib/misc/index.d.ts.map +1 -1
  134. package/lib/misc/index.js +3 -3
  135. package/lib/misc/index.js.map +1 -1
  136. package/lib/object/AcDbAnnotScaleObjectContextData.d.ts +17 -0
  137. package/lib/object/AcDbAnnotScaleObjectContextData.d.ts.map +1 -0
  138. package/lib/object/AcDbAnnotScaleObjectContextData.js +75 -0
  139. package/lib/object/AcDbAnnotScaleObjectContextData.js.map +1 -0
  140. package/lib/object/AcDbBlkRefObjectContextData.d.ts +27 -0
  141. package/lib/object/AcDbBlkRefObjectContextData.d.ts.map +1 -0
  142. package/lib/object/AcDbBlkRefObjectContextData.js +190 -0
  143. package/lib/object/AcDbBlkRefObjectContextData.js.map +1 -0
  144. package/lib/object/AcDbDimensionObjectContextData.d.ts +46 -0
  145. package/lib/object/AcDbDimensionObjectContextData.d.ts.map +1 -0
  146. package/lib/object/AcDbDimensionObjectContextData.js +256 -0
  147. package/lib/object/AcDbDimensionObjectContextData.js.map +1 -0
  148. package/lib/object/AcDbHatchScaleContextData.d.ts +14 -0
  149. package/lib/object/AcDbHatchScaleContextData.d.ts.map +1 -0
  150. package/lib/object/AcDbHatchScaleContextData.js +117 -0
  151. package/lib/object/AcDbHatchScaleContextData.js.map +1 -0
  152. package/lib/object/AcDbLeaderObjectContextData.d.ts +11 -0
  153. package/lib/object/AcDbLeaderObjectContextData.d.ts.map +1 -0
  154. package/lib/object/AcDbLeaderObjectContextData.js +75 -0
  155. package/lib/object/AcDbLeaderObjectContextData.js.map +1 -0
  156. package/lib/object/AcDbMLeaderObjectContextData.d.ts +34 -0
  157. package/lib/object/AcDbMLeaderObjectContextData.d.ts.map +1 -0
  158. package/lib/object/AcDbMLeaderObjectContextData.js +199 -0
  159. package/lib/object/AcDbMLeaderObjectContextData.js.map +1 -0
  160. package/lib/object/AcDbMTextAttributeObjectContextData.d.ts +14 -0
  161. package/lib/object/AcDbMTextAttributeObjectContextData.d.ts.map +1 -0
  162. package/lib/object/AcDbMTextAttributeObjectContextData.js +43 -0
  163. package/lib/object/AcDbMTextAttributeObjectContextData.js.map +1 -0
  164. package/lib/object/AcDbMTextObjectContextData.d.ts +2 -13
  165. package/lib/object/AcDbMTextObjectContextData.d.ts.map +1 -1
  166. package/lib/object/AcDbMTextObjectContextData.js +9 -46
  167. package/lib/object/AcDbMTextObjectContextData.js.map +1 -1
  168. package/lib/object/AcDbObjectContextData.d.ts +22 -0
  169. package/lib/object/AcDbObjectContextData.d.ts.map +1 -0
  170. package/lib/object/AcDbObjectContextData.js +112 -0
  171. package/lib/object/AcDbObjectContextData.js.map +1 -0
  172. package/lib/object/AcDbTextObjectContextData.d.ts +24 -0
  173. package/lib/object/AcDbTextObjectContextData.d.ts.map +1 -0
  174. package/lib/object/AcDbTextObjectContextData.js +180 -0
  175. package/lib/object/AcDbTextObjectContextData.js.map +1 -0
  176. package/lib/object/index.d.ts +9 -0
  177. package/lib/object/index.d.ts.map +1 -1
  178. package/lib/object/index.js +9 -0
  179. package/lib/object/index.js.map +1 -1
  180. package/package.json +5 -5
@@ -0,0 +1,60 @@
1
+ import { AcGeLine3d, AcGePoint3d, AcGePoint3dLike, AcGeVector3d } from '@mlightcad/geometry-engine';
2
+ import { AcGiMTextAttachmentPoint } from '@mlightcad/graphic-interface';
3
+ import type { AcDbObject } from '../../base/AcDbObject.js';
4
+ import { AcDbBlockTableRecord } from '../../database/AcDbBlockTableRecord.js';
5
+ import { AcDbDatabase } from '../../database/AcDbDatabase.js';
6
+ import { AcDbDimStyleTableRecord } from '../../database/AcDbDimStyleTableRecord.js';
7
+ import { AcDbArc } from '../AcDbArc.js';
8
+ import { AcDbBlockReference } from '../AcDbBlockReference.js';
9
+ import { AcDbLine } from '../AcDbLine.js';
10
+ import { AcDbMText } from '../AcDbMText.js';
11
+ import { acdbDimFeatureScale } from './AcDbDimFeatureScale.js';
12
+ export { acdbDimFeatureScale };
13
+ /** Closed filled uses empty dimblk in AutoCAD; we store geometry under this BTR name. */
14
+ export declare const CLOSED_FILLED_ARROW_BLOCK = "_CLOSEDFILLED";
15
+ export declare function acdbResolveArrowBlockName(dimblk: string | undefined | null): string;
16
+ export declare function acdbEnsureDimArrowBlocks(db: AcDbDatabase, style: AcDbDimStyleTableRecord): void;
17
+ export declare function acdbCreateDimLineEntity(start: AcGePoint3dLike, end: AcGePoint3dLike, style: AcDbDimStyleTableRecord, kind?: 'dimension' | 'extension'): AcDbLine;
18
+ export declare function acdbCreateDimArrowInsert(pos: AcGePoint3dLike, rotation: number, scale: number, blockName: string): AcDbBlockReference | null;
19
+ export declare function acdbArrowScaleFromStyle(style: AcDbDimStyleTableRecord, entity?: AcDbObject): number;
20
+ export declare function acdbTextHeightFromStyle(style: AcDbDimStyleTableRecord, entity?: AcDbObject): number;
21
+ export declare function acdbCreateDimMText(options: {
22
+ contents: string;
23
+ position: AcGePoint3dLike;
24
+ rotation: number;
25
+ style: AcDbDimStyleTableRecord;
26
+ attachmentPoint?: AcGiMTextAttachmentPoint;
27
+ entity?: AcDbObject;
28
+ }): AcDbMText | null;
29
+ /**
30
+ * Offset text position along the normal of the dimension line based on dimtad/dimgap.
31
+ */
32
+ export declare function acdbOffsetTextAlongNormal(mid: AcGePoint3dLike, rotation: number, style: AcDbDimStyleTableRecord, entity?: AcDbObject): AcGePoint3d;
33
+ export declare function acdbAppendCenterMark(block: AcDbBlockTableRecord, center: AcGePoint3dLike, style: AcDbDimStyleTableRecord, entity?: AcDbObject): void;
34
+ export declare function acdbCreateEmptyDimBlock(blockName: string): AcDbBlockTableRecord;
35
+ export declare function acdbBuildAnnotationText(measured: number, dimensionText: string | null | undefined, style: AcDbDimStyleTableRecord, kind: 'linear' | 'angular' | 'radial' | 'diametric'): string;
36
+ /**
37
+ * Create a dimension-line arc for angular dimensions.
38
+ */
39
+ export declare function acdbCreateDimArcEntity(center: AcGePoint3dLike, radius: number, startAngle: number, endAngle: number, style: AcDbDimStyleTableRecord): AcDbArc;
40
+ export declare function acdbUnitVectorFromAngle(angle: number): AcGeVector3d;
41
+ export declare function acdbAngleOfPoints(from: AcGePoint3dLike, to: AcGePoint3dLike): number;
42
+ /**
43
+ * Resolve the CCW angular sweep from ray1→ray2 that contains `arcPoint`.
44
+ * When the arc point lies on the complementary (major) arc, the start/end
45
+ * rays are swapped so measurement matches drawn geometry.
46
+ */
47
+ export declare function acdbResolveAngularSweep(options: {
48
+ center: AcGePoint3dLike;
49
+ xLine1: AcGePoint3dLike;
50
+ xLine2: AcGePoint3dLike;
51
+ arcPoint: AcGePoint3dLike;
52
+ }): {
53
+ start: number;
54
+ end: number;
55
+ sweep: number;
56
+ };
57
+ export declare function acdbPointAt(origin: AcGePoint3dLike, angle: number, distance: number): AcGePoint3d;
58
+ export declare function acdbMidPoint(a: AcGePoint3dLike, b: AcGePoint3dLike): AcGePoint3d;
59
+ export declare function acdbExtendLineByDimDle(line: AcGeLine3d, style: AcDbDimStyleTableRecord, entity?: AcDbObject): void;
60
+ //# sourceMappingURL=AcDbDimBlockBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbDimBlockBuilder.d.ts","sourceRoot":"","sources":["../../../src/entity/dimension/AcDbDimBlockBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACb,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAEL,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EACL,uBAAuB,EAExB,MAAM,2CAA2C,CAAA;AAGlD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,kBAAkB,CAAA;AAExD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAChC,MAAM,CAQR;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,uBAAuB,QAc/B;AAaD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,uBAAuB,EAC9B,IAAI,GAAE,WAAW,GAAG,WAAyB,GAC5C,QAAQ,CAOV;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAS3B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAMR;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAER;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,eAAe,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,uBAAuB,CAAA;IAC9B,eAAe,CAAC,EAAE,wBAAwB,CAAA;IAC1C,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,GAAG,SAAS,GAAG,IAAI,CAiBnB;AAeD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,UAAU,GAClB,WAAW,CAeb;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,UAAU,QA2CpB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAItB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAClD,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAKT;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAEnE;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,eAAe,GAClB,MAAM,CAER;AAkBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,eAAe,CAAA;CAC1B,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBhD;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,WAAW,CAMb;AAED,wBAAgB,YAAY,CAC1B,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,GACjB,WAAW,CAMb;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,UAAU,QAOpB"}
@@ -0,0 +1,245 @@
1
+ var __values = (this && this.__values) || function(o) {
2
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3
+ if (m) return m.call(o);
4
+ if (o && typeof o.length === "number") return {
5
+ next: function () {
6
+ if (o && i >= o.length) o = void 0;
7
+ return { value: o && o[i++], done: !o };
8
+ }
9
+ };
10
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11
+ };
12
+ import { AcCmColor, AcCmColorMethod } from '@mlightcad/common';
13
+ import { AcGePoint3d, AcGeVector3d } from '@mlightcad/geometry-engine';
14
+ import { AcGiArrowType, AcGiMTextAttachmentPoint } from '@mlightcad/graphic-interface';
15
+ import { AcDbBlockTableRecord } from '../../database/AcDbBlockTableRecord.js';
16
+ import { AcDbDimTextVertical } from '../../database/AcDbDimStyleTableRecord.js';
17
+ import { AcDbDataGenerator } from '../../misc/AcDbDataGenerator.js';
18
+ import { acdbDecodeDimStyleColor } from '../../misc/AcDbMLeaderStyleColorCodec.js';
19
+ import { AcDbArc } from '../AcDbArc.js';
20
+ import { AcDbBlockReference } from '../AcDbBlockReference.js';
21
+ import { AcDbLine } from '../AcDbLine.js';
22
+ import { AcDbMText } from '../AcDbMText.js';
23
+ import { acdbDimFeatureScale } from './AcDbDimFeatureScale.js';
24
+ import { acdbResolveDimensionAnnotation } from './AcDbDimMeasurementFormat.js';
25
+ export { acdbDimFeatureScale };
26
+ /** Closed filled uses empty dimblk in AutoCAD; we store geometry under this BTR name. */
27
+ export var CLOSED_FILLED_ARROW_BLOCK = '_CLOSEDFILLED';
28
+ export function acdbResolveArrowBlockName(dimblk) {
29
+ if (dimblk == null || dimblk === '' || dimblk === AcGiArrowType.ClosedFilled) {
30
+ return CLOSED_FILLED_ARROW_BLOCK;
31
+ }
32
+ if (dimblk === AcGiArrowType.None || dimblk.toUpperCase() === '_NONE') {
33
+ return '';
34
+ }
35
+ return dimblk;
36
+ }
37
+ export function acdbEnsureDimArrowBlocks(db, style) {
38
+ var e_1, _a;
39
+ var generator = new AcDbDataGenerator(db);
40
+ var names = new Set();
41
+ if (style.dimsah === 0) {
42
+ names.add(acdbResolveArrowBlockName(style.dimblk));
43
+ }
44
+ else {
45
+ names.add(acdbResolveArrowBlockName(style.dimblk1));
46
+ names.add(acdbResolveArrowBlockName(style.dimblk2));
47
+ }
48
+ names.add(acdbResolveArrowBlockName(style.dimldrblk));
49
+ try {
50
+ for (var names_1 = __values(names), names_1_1 = names_1.next(); !names_1_1.done; names_1_1 = names_1.next()) {
51
+ var name_1 = names_1_1.value;
52
+ if (name_1)
53
+ generator.ensureArrowBlock(name_1);
54
+ }
55
+ }
56
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
57
+ finally {
58
+ try {
59
+ if (names_1_1 && !names_1_1.done && (_a = names_1.return)) _a.call(names_1);
60
+ }
61
+ finally { if (e_1) throw e_1.error; }
62
+ }
63
+ }
64
+ /**
65
+ * Maps DIMCLRD / DIMCLRE / DIMCLRT onto {@link AcCmColor}.
66
+ *
67
+ * LibreDWG may hand back a CMC object or a packed CMC int32 rather than a
68
+ * plain ACI; those must be decoded or MTEXT construction throws
69
+ * `ACI not in range [0, 256]` (NaN colorIndex).
70
+ */
71
+ function colorFromDimAci(aci) {
72
+ return acdbDecodeDimStyleColor(aci);
73
+ }
74
+ export function acdbCreateDimLineEntity(start, end, style, kind) {
75
+ if (kind === void 0) { kind = 'dimension'; }
76
+ var line = new AcDbLine(start, end);
77
+ line.layer = '0';
78
+ line.color = colorFromDimAci(kind === 'dimension' ? style.dimclrd : style.dimclre);
79
+ return line;
80
+ }
81
+ export function acdbCreateDimArrowInsert(pos, rotation, scale, blockName) {
82
+ if (!blockName)
83
+ return null;
84
+ var insert = new AcDbBlockReference(blockName);
85
+ insert.position = pos;
86
+ insert.rotation = rotation;
87
+ insert.scaleFactors = { x: scale, y: scale, z: scale };
88
+ insert.layer = '0';
89
+ insert.color = new AcCmColor(AcCmColorMethod.ByBlock);
90
+ return insert;
91
+ }
92
+ export function acdbArrowScaleFromStyle(style, entity) {
93
+ var scale = acdbDimFeatureScale(style, entity);
94
+ if (style.dimtsz > 0) {
95
+ return style.dimtsz * scale;
96
+ }
97
+ return style.dimasz * scale;
98
+ }
99
+ export function acdbTextHeightFromStyle(style, entity) {
100
+ return style.dimtxt * acdbDimFeatureScale(style, entity);
101
+ }
102
+ export function acdbCreateDimMText(options) {
103
+ var _a;
104
+ if (!options.contents)
105
+ return null;
106
+ var mtext = new AcDbMText();
107
+ mtext.layer = '0';
108
+ mtext.color = colorFromDimAci(options.style.dimclrt);
109
+ mtext.location = options.position;
110
+ mtext.contents = options.contents;
111
+ mtext.height = acdbTextHeightFromStyle(options.style, options.entity);
112
+ mtext.direction = {
113
+ x: Math.cos(options.rotation),
114
+ y: Math.sin(options.rotation),
115
+ z: 0
116
+ };
117
+ mtext.styleName = options.style.dimtxsty;
118
+ mtext.attachmentPoint =
119
+ (_a = options.attachmentPoint) !== null && _a !== void 0 ? _a : attachmentFromDimTad(options.style.dimtad);
120
+ return mtext;
121
+ }
122
+ function attachmentFromDimTad(dimtad) {
123
+ switch (dimtad) {
124
+ case AcDbDimTextVertical.Above:
125
+ return AcGiMTextAttachmentPoint.BottomCenter;
126
+ case AcDbDimTextVertical.Below:
127
+ return AcGiMTextAttachmentPoint.TopCenter;
128
+ default:
129
+ return AcGiMTextAttachmentPoint.MiddleCenter;
130
+ }
131
+ }
132
+ /**
133
+ * Offset text position along the normal of the dimension line based on dimtad/dimgap.
134
+ */
135
+ export function acdbOffsetTextAlongNormal(mid, rotation, style, entity) {
136
+ var _a;
137
+ var gap = (style.dimgap >= 0 ? style.dimgap : 0) * acdbDimFeatureScale(style, entity);
138
+ var height = acdbTextHeightFromStyle(style, entity);
139
+ var offset = 0;
140
+ if (style.dimtad === AcDbDimTextVertical.Above) {
141
+ offset = gap + height * 0.5;
142
+ }
143
+ else if (style.dimtad === AcDbDimTextVertical.Below) {
144
+ offset = -(gap + height * 0.5);
145
+ }
146
+ else if (style.dimtad === AcDbDimTextVertical.Outside) {
147
+ offset = gap + height * 0.5;
148
+ }
149
+ var nx = -Math.sin(rotation);
150
+ var ny = Math.cos(rotation);
151
+ return new AcGePoint3d(mid.x + nx * offset, mid.y + ny * offset, (_a = mid.z) !== null && _a !== void 0 ? _a : 0);
152
+ }
153
+ export function acdbAppendCenterMark(block, center, style, entity) {
154
+ var size = style.dimcen * acdbDimFeatureScale(style, entity);
155
+ if (size === 0)
156
+ return;
157
+ var abs = Math.abs(size);
158
+ var c = new AcGePoint3d().copy(center);
159
+ // Mark cross
160
+ block.appendEntity(acdbCreateDimLineEntity({ x: c.x - abs, y: c.y, z: c.z }, { x: c.x + abs, y: c.y, z: c.z }, style, 'extension'));
161
+ block.appendEntity(acdbCreateDimLineEntity({ x: c.x, y: c.y - abs, z: c.z }, { x: c.x, y: c.y + abs, z: c.z }, style, 'extension'));
162
+ // dimcen < 0 also draws circle mark lines to radius (simplified: longer arms)
163
+ if (size < 0) {
164
+ var long = abs * 2;
165
+ block.appendEntity(acdbCreateDimLineEntity({ x: c.x - long, y: c.y, z: c.z }, { x: c.x + long, y: c.y, z: c.z }, style, 'extension'));
166
+ block.appendEntity(acdbCreateDimLineEntity({ x: c.x, y: c.y - long, z: c.z }, { x: c.x, y: c.y + long, z: c.z }, style, 'extension'));
167
+ }
168
+ }
169
+ export function acdbCreateEmptyDimBlock(blockName) {
170
+ var block = new AcDbBlockTableRecord();
171
+ block.name = blockName;
172
+ return block;
173
+ }
174
+ export function acdbBuildAnnotationText(measured, dimensionText, style, kind) {
175
+ return acdbResolveDimensionAnnotation(measured, dimensionText, style, kind);
176
+ }
177
+ /**
178
+ * Create a dimension-line arc for angular dimensions.
179
+ */
180
+ export function acdbCreateDimArcEntity(center, radius, startAngle, endAngle, style) {
181
+ var arc = new AcDbArc(center, radius, startAngle, endAngle);
182
+ arc.layer = '0';
183
+ arc.color = colorFromDimAci(style.dimclrd);
184
+ return arc;
185
+ }
186
+ export function acdbUnitVectorFromAngle(angle) {
187
+ return new AcGeVector3d(Math.cos(angle), Math.sin(angle), 0);
188
+ }
189
+ export function acdbAngleOfPoints(from, to) {
190
+ return Math.atan2(to.y - from.y, to.x - from.x);
191
+ }
192
+ function acdbNormalizeAngle0To2Pi(angle) {
193
+ var v = angle;
194
+ while (v < 0)
195
+ v += Math.PI * 2;
196
+ while (v >= Math.PI * 2)
197
+ v -= Math.PI * 2;
198
+ return v;
199
+ }
200
+ function acdbCcwContainsAngle(start, end, point) {
201
+ if (start <= end)
202
+ return point >= start && point <= end;
203
+ return point >= start || point <= end;
204
+ }
205
+ /**
206
+ * Resolve the CCW angular sweep from ray1→ray2 that contains `arcPoint`.
207
+ * When the arc point lies on the complementary (major) arc, the start/end
208
+ * rays are swapped so measurement matches drawn geometry.
209
+ */
210
+ export function acdbResolveAngularSweep(options) {
211
+ var a1 = acdbAngleOfPoints(options.center, options.xLine1);
212
+ var a2 = acdbAngleOfPoints(options.center, options.xLine2);
213
+ var arcAngle = acdbAngleOfPoints(options.center, options.arcPoint);
214
+ var start = a1;
215
+ var end = a2;
216
+ var ns = acdbNormalizeAngle0To2Pi(start);
217
+ var ne = acdbNormalizeAngle0To2Pi(end);
218
+ var na = acdbNormalizeAngle0To2Pi(arcAngle);
219
+ if (!acdbCcwContainsAngle(ns, ne, na)) {
220
+ start = a2;
221
+ end = a1;
222
+ }
223
+ var sweep = end - start;
224
+ while (sweep < 0)
225
+ sweep += Math.PI * 2;
226
+ while (sweep > Math.PI * 2)
227
+ sweep -= Math.PI * 2;
228
+ return { start: start, end: end, sweep: sweep };
229
+ }
230
+ export function acdbPointAt(origin, angle, distance) {
231
+ var _a;
232
+ return new AcGePoint3d(origin.x + Math.cos(angle) * distance, origin.y + Math.sin(angle) * distance, (_a = origin.z) !== null && _a !== void 0 ? _a : 0);
233
+ }
234
+ export function acdbMidPoint(a, b) {
235
+ var _a, _b;
236
+ return new AcGePoint3d((a.x + b.x) / 2, (a.y + b.y) / 2, (((_a = a.z) !== null && _a !== void 0 ? _a : 0) + ((_b = b.z) !== null && _b !== void 0 ? _b : 0)) / 2);
237
+ }
238
+ export function acdbExtendLineByDimDle(line, style, entity) {
239
+ var dle = style.dimdle * acdbDimFeatureScale(style, entity);
240
+ if (dle !== 0) {
241
+ line.extend(dle);
242
+ line.extend(dle, true);
243
+ }
244
+ }
245
+ //# sourceMappingURL=AcDbDimBlockBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbDimBlockBuilder.js","sourceRoot":"","sources":["../../../src/entity/dimension/AcDbDimBlockBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AcDbObject } from '../../base/AcDbObject.js';
2
+ import { AcDbDimStyleTableRecord } from '../../database/AcDbDimStyleTableRecord.js';
3
+ /**
4
+ * Scale applied to dimension text, arrows, gaps, and extension offsets.
5
+ *
6
+ * Prefer the entity's matched annotation-scale context (CANNOSCALE) when the
7
+ * dimension is annotative. Otherwise use the per-dimstyle annotative factor
8
+ * from the database, then DIMSCALE (0 falls back to 1).
9
+ */
10
+ export declare function acdbDimFeatureScale(style: AcDbDimStyleTableRecord, entity?: AcDbObject): number;
11
+ //# sourceMappingURL=AcDbDimFeatureScale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbDimFeatureScale.d.ts","sourceRoot":"","sources":["../../../src/entity/dimension/AcDbDimFeatureScale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAA;AAGnF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAgBR"}
@@ -0,0 +1,29 @@
1
+ import { acdbResolveAnnotationScaleDrawInfo } from '../../misc/AcDbAnnotationScale.js';
2
+ /**
3
+ * Scale applied to dimension text, arrows, gaps, and extension offsets.
4
+ *
5
+ * Prefer the entity's matched annotation-scale context (CANNOSCALE) when the
6
+ * dimension is annotative. Otherwise use the per-dimstyle annotative factor
7
+ * from the database, then DIMSCALE (0 falls back to 1).
8
+ */
9
+ export function acdbDimFeatureScale(style, entity) {
10
+ var _a;
11
+ if (entity) {
12
+ var resolved = acdbResolveAnnotationScaleDrawInfo(entity);
13
+ if (resolved.preferred && resolved.preferred.scale.scaleFactor > 0) {
14
+ return resolved.preferred.scale.scaleFactor;
15
+ }
16
+ }
17
+ try {
18
+ // `.database` falls back to the host working DB and throws when unset
19
+ // (detached dimstyles in unit tests / clones).
20
+ var annotated = (_a = style.database) === null || _a === void 0 ? void 0 : _a.getDimStyleAnnotationScale(style.name);
21
+ if (annotated != null && annotated > 0)
22
+ return annotated;
23
+ }
24
+ catch (_b) {
25
+ // Fall through to DIMSCALE.
26
+ }
27
+ return style.dimscale > 0 ? style.dimscale : 1;
28
+ }
29
+ //# sourceMappingURL=AcDbDimFeatureScale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbDimFeatureScale.js","sourceRoot":"","sources":["../../../src/entity/dimension/AcDbDimFeatureScale.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAA;AAEtF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA8B,EAC9B,MAAmB;;IAEnB,IAAI,MAAM,EAAE,CAAC;QACX,IAAM,QAAQ,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACnE,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAA;QAC7C,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,sEAAsE;QACtE,+CAA+C;QAC/C,IAAM,SAAS,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAE,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxE,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;IAC1D,CAAC;IAAC,WAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AcDbDimStyleTableRecord } from '../../database/AcDbDimStyleTableRecord.js';
2
+ /**
3
+ * Format a linear measurement using DIMSTYLE primary-unit settings.
4
+ */
5
+ export declare function acdbFormatLinearMeasurement(raw: number, style: AcDbDimStyleTableRecord): string;
6
+ /**
7
+ * Format an angular measurement (radians) using DIMSTYLE angular settings.
8
+ * dimaunit: 0 decimal degrees, 1 deg/min/sec, 2 gradians, 3 radians
9
+ */
10
+ export declare function acdbFormatAngularMeasurement(radians: number, style: AcDbDimStyleTableRecord): string;
11
+ /**
12
+ * Resolve the final dimension annotation string, including <> placeholder,
13
+ * alternate units, and tolerances when enabled.
14
+ */
15
+ export declare function acdbResolveDimensionAnnotation(measuredRaw: number, dimensionText: string | null | undefined, style: AcDbDimStyleTableRecord, kind?: 'linear' | 'angular' | 'radial' | 'diametric'): string;
16
+ //# sourceMappingURL=AcDbDimMeasurementFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbDimMeasurementFormat.d.ts","sourceRoot":"","sources":["../../../src/entity/dimension/AcDbDimMeasurementFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAGxB,MAAM,2CAA2C,CAAA;AAElD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CA2BR;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CAoDR;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,GAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAsB,GAC7D,MAAM,CAoCR"}
@@ -0,0 +1,184 @@
1
+ import { AcDbDimZeroSuppression, AcDbDimZeroSuppressionAngular } from '../../database/AcDbDimStyleTableRecord.js';
2
+ /**
3
+ * Format a linear measurement using DIMSTYLE primary-unit settings.
4
+ */
5
+ export function acdbFormatLinearMeasurement(raw, style) {
6
+ var value = raw * style.dimlfac;
7
+ if (style.dimrnd > 0) {
8
+ value = Math.round(value / style.dimrnd) * style.dimrnd;
9
+ }
10
+ // dimlunit: 1 scientific, 2 decimal, 3 engineering, 4 architectural, 5 fractional
11
+ var body;
12
+ switch (style.dimlunit) {
13
+ case 1:
14
+ body = value.toExponential(Math.max(0, style.dimdec));
15
+ break;
16
+ case 4:
17
+ case 5:
18
+ body = formatFractional(value, style.dimdec);
19
+ break;
20
+ case 3:
21
+ body = formatEngineering(value, style.dimdec);
22
+ break;
23
+ case 2:
24
+ default:
25
+ body = formatDecimal(value, style.dimdec, style.dimdsep, style.dimzin);
26
+ break;
27
+ }
28
+ body = applyZeroSuppression(body, style.dimzin);
29
+ return applyDimPost(body, style.dimpost);
30
+ }
31
+ /**
32
+ * Format an angular measurement (radians) using DIMSTYLE angular settings.
33
+ * dimaunit: 0 decimal degrees, 1 deg/min/sec, 2 gradians, 3 radians
34
+ */
35
+ export function acdbFormatAngularMeasurement(radians, style) {
36
+ var abs = Math.abs(radians);
37
+ var body;
38
+ switch (style.dimaunit) {
39
+ case 1: {
40
+ var degTotal = (abs * 180) / Math.PI;
41
+ var deg = Math.floor(degTotal);
42
+ var minFloat = (degTotal - deg) * 60;
43
+ var min = Math.floor(minFloat);
44
+ var sec = (minFloat - min) * 60;
45
+ var secStr = style.dimadec > 0
46
+ ? sec.toFixed(style.dimadec)
47
+ : String(Math.round(sec));
48
+ body = "".concat(deg, "d").concat(String(min).padStart(2, '0'), "'").concat(secStr, "\"");
49
+ break;
50
+ }
51
+ case 2:
52
+ body = formatDecimal((abs * 200) / Math.PI, style.dimadec, style.dimdsep, style.dimazin);
53
+ body = "".concat(body, "g");
54
+ break;
55
+ case 3:
56
+ body = formatDecimal(abs, style.dimadec, style.dimdsep, style.dimazin);
57
+ body = "".concat(body, "r");
58
+ break;
59
+ case 0:
60
+ default: {
61
+ var degrees = (abs * 180) / Math.PI;
62
+ body = formatDecimal(degrees, style.dimadec, style.dimdsep, style.dimazin);
63
+ // Trailing degree symbol for decimal degrees (AutoCAD convention)
64
+ body = "".concat(body, "%%d");
65
+ break;
66
+ }
67
+ }
68
+ body = applyAngularZeroSuppression(body, style.dimazin);
69
+ return applyDimPost(body, style.dimpost);
70
+ }
71
+ /**
72
+ * Resolve the final dimension annotation string, including <> placeholder,
73
+ * alternate units, and tolerances when enabled.
74
+ */
75
+ export function acdbResolveDimensionAnnotation(measuredRaw, dimensionText, style, kind) {
76
+ if (kind === void 0) { kind = 'linear'; }
77
+ if (dimensionText === '.')
78
+ return '';
79
+ var primary = kind === 'angular'
80
+ ? acdbFormatAngularMeasurement(measuredRaw, style)
81
+ : acdbFormatLinearMeasurement(measuredRaw, style);
82
+ if (kind === 'radial' && !primary.startsWith('R')) {
83
+ primary = "R".concat(primary);
84
+ }
85
+ else if (kind === 'diametric' && !primary.includes('%%c')) {
86
+ primary = "%%c".concat(primary);
87
+ }
88
+ if (style.dimtol === 1 && kind !== 'angular') {
89
+ var plus = style.dimtp.toFixed(Math.max(0, style.dimtdec));
90
+ var minus = style.dimtm.toFixed(Math.max(0, style.dimtdec));
91
+ // Approximate AutoCAD stacked tolerance with MTEXT codes
92
+ primary = "".concat(primary, "{\\H0.7x;\\S+").concat(plus, "^-").concat(minus, ";}");
93
+ }
94
+ if (style.dimalt === 1 && kind !== 'angular') {
95
+ var altValue = measuredRaw * style.dimlfac * (style.dimaltf || 25.4);
96
+ var altDec = style.dimaltd;
97
+ var altBody = formatDecimal(altValue, altDec, style.dimdsep, style.dimaltz);
98
+ var altWithPost = applyDimPost(altBody, style.dimapost || '');
99
+ primary = "".concat(primary, " [").concat(altWithPost, "]");
100
+ }
101
+ if (dimensionText == null || dimensionText === '') {
102
+ return primary;
103
+ }
104
+ if (dimensionText.includes('<>')) {
105
+ return dimensionText.split('<>').join(primary);
106
+ }
107
+ return dimensionText;
108
+ }
109
+ function formatDecimal(value, decimals, separator, _zin) {
110
+ if (separator === void 0) { separator = '.'; }
111
+ if (_zin === void 0) { _zin = 0; }
112
+ var fixed = value.toFixed(Math.max(0, decimals));
113
+ if (separator && separator !== '.') {
114
+ return fixed.replace('.', separator);
115
+ }
116
+ return fixed;
117
+ }
118
+ function formatFractional(value, precision) {
119
+ var whole = Math.trunc(value);
120
+ var frac = Math.abs(value - whole);
121
+ var denom = Math.max(1, Math.pow(2, Math.min(6, Math.max(0, precision))));
122
+ var num = Math.round(frac * denom);
123
+ if (num === 0)
124
+ return String(whole);
125
+ if (num === denom)
126
+ return String(whole + (value < 0 ? -1 : 1));
127
+ // Reduce fraction
128
+ var g = gcd(num, denom);
129
+ var n = num / g;
130
+ var d = denom / g;
131
+ if (whole === 0)
132
+ return "".concat(value < 0 ? '-' : '').concat(n, "/").concat(d);
133
+ return "".concat(whole, " ").concat(n, "/").concat(d);
134
+ }
135
+ function formatEngineering(value, decimals) {
136
+ var feet = Math.trunc(value / 12);
137
+ var inches = value - feet * 12;
138
+ return "".concat(feet, "'-").concat(inches.toFixed(Math.max(0, decimals)), "\"");
139
+ }
140
+ function applyDimPost(body, dimpost) {
141
+ if (!dimpost)
142
+ return body;
143
+ if (dimpost.includes('<>')) {
144
+ return dimpost.split('<>').join(body);
145
+ }
146
+ return "".concat(body).concat(dimpost);
147
+ }
148
+ function applyZeroSuppression(body, zin) {
149
+ // Leading / trailing zero suppression for decimal strings
150
+ if ((zin & AcDbDimZeroSuppression.Leading) !== 0 &&
151
+ body.startsWith('0.')) {
152
+ body = body.slice(1);
153
+ }
154
+ if ((zin & AcDbDimZeroSuppression.Trailing) !== 0 && body.includes('.')) {
155
+ body = body.replace(/\.?0+$/, '');
156
+ }
157
+ return body;
158
+ }
159
+ function applyAngularZeroSuppression(body, azin) {
160
+ if ((azin === AcDbDimZeroSuppressionAngular.Leading ||
161
+ azin === AcDbDimZeroSuppressionAngular.LeadingAndTrailing) &&
162
+ body.startsWith('0.')) {
163
+ body = body.slice(1);
164
+ }
165
+ if ((azin === AcDbDimZeroSuppressionAngular.Trailing ||
166
+ azin === AcDbDimZeroSuppressionAngular.LeadingAndTrailing) &&
167
+ body.includes('.')) {
168
+ body = body
169
+ .replace(/(\.\d*?)0+(%%d|g|r|"|')?$/, '$1$2')
170
+ .replace(/\.(%%d|g|r)/, '$1');
171
+ }
172
+ return body;
173
+ }
174
+ function gcd(a, b) {
175
+ var x = Math.abs(a);
176
+ var y = Math.abs(b);
177
+ while (y) {
178
+ var t = y;
179
+ y = x % y;
180
+ x = t;
181
+ }
182
+ return x || 1;
183
+ }
184
+ //# sourceMappingURL=AcDbDimMeasurementFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcDbDimMeasurementFormat.js","sourceRoot":"","sources":["../../../src/entity/dimension/AcDbDimMeasurementFormat.ts"],"names":[],"mappings":"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"}