@mlightcad/cad-pdf-plugin 1.8.0-preview.2 → 1.8.0-preview.4

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 (189) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +280 -186
  3. package/dist/cad-pdf-plugin-register.js +29 -11
  4. package/dist/cad-pdf-plugin-register.umd.cjs +1 -1
  5. package/dist/cad-pdf-plugin.js +17568 -8428
  6. package/dist/cad-pdf-plugin.umd.cjs +847 -13
  7. package/lib/AcApConvertToPdfCmd.d.ts.map +1 -1
  8. package/lib/AcApConvertToPdfCmd.js +14 -3
  9. package/lib/AcApConvertToPdfCmd.js.map +1 -1
  10. package/lib/AcApImportPdfCmd.d.ts +5 -3
  11. package/lib/AcApImportPdfCmd.d.ts.map +1 -1
  12. package/lib/AcApImportPdfCmd.js +5 -3
  13. package/lib/AcApImportPdfCmd.js.map +1 -1
  14. package/lib/AcApImportPdfPromptCmd.d.ts +16 -0
  15. package/lib/AcApImportPdfPromptCmd.d.ts.map +1 -0
  16. package/lib/AcApImportPdfPromptCmd.js +89 -0
  17. package/lib/AcApImportPdfPromptCmd.js.map +1 -0
  18. package/lib/AcApPdfBlockCmd.d.ts +15 -0
  19. package/lib/AcApPdfBlockCmd.d.ts.map +1 -0
  20. package/lib/AcApPdfBlockCmd.js +75 -0
  21. package/lib/AcApPdfBlockCmd.js.map +1 -0
  22. package/lib/AcApPdfDimCmd.d.ts +20 -0
  23. package/lib/AcApPdfDimCmd.d.ts.map +1 -0
  24. package/lib/AcApPdfDimCmd.js +413 -0
  25. package/lib/AcApPdfDimCmd.js.map +1 -0
  26. package/lib/AcApPdfDimSession.d.ts +82 -0
  27. package/lib/AcApPdfDimSession.d.ts.map +1 -0
  28. package/lib/AcApPdfDimSession.js +252 -0
  29. package/lib/AcApPdfDimSession.js.map +1 -0
  30. package/lib/AcApPdfFontResolver.d.ts.map +1 -1
  31. package/lib/AcApPdfFontResolver.js +2 -5
  32. package/lib/AcApPdfFontResolver.js.map +1 -1
  33. package/lib/AcApPdfHatchCmd.d.ts +33 -0
  34. package/lib/AcApPdfHatchCmd.d.ts.map +1 -0
  35. package/lib/AcApPdfHatchCmd.js +411 -0
  36. package/lib/AcApPdfHatchCmd.js.map +1 -0
  37. package/lib/AcApPdfHatchSession.d.ts +122 -0
  38. package/lib/AcApPdfHatchSession.d.ts.map +1 -0
  39. package/lib/AcApPdfHatchSession.js +357 -0
  40. package/lib/AcApPdfHatchSession.js.map +1 -0
  41. package/lib/AcApPdfImportConvertor.d.ts +47 -5
  42. package/lib/AcApPdfImportConvertor.d.ts.map +1 -1
  43. package/lib/AcApPdfImportConvertor.js +999 -108
  44. package/lib/AcApPdfImportConvertor.js.map +1 -1
  45. package/lib/AcApPdfImportOptions.d.ts +116 -0
  46. package/lib/AcApPdfImportOptions.d.ts.map +1 -0
  47. package/lib/AcApPdfImportOptions.js +31 -0
  48. package/lib/AcApPdfImportOptions.js.map +1 -0
  49. package/lib/AcApPdfImportResources.d.ts +41 -0
  50. package/lib/AcApPdfImportResources.d.ts.map +1 -0
  51. package/lib/AcApPdfImportResources.js +52 -0
  52. package/lib/AcApPdfImportResources.js.map +1 -0
  53. package/lib/AcApPdfPlugin.d.ts +3 -3
  54. package/lib/AcApPdfPlugin.d.ts.map +1 -1
  55. package/lib/AcApPdfPlugin.js +23 -5
  56. package/lib/AcApPdfPlugin.js.map +1 -1
  57. package/lib/AcApPdfScaleCmd.d.ts +22 -0
  58. package/lib/AcApPdfScaleCmd.d.ts.map +1 -0
  59. package/lib/AcApPdfScaleCmd.js +185 -0
  60. package/lib/AcApPdfScaleCmd.js.map +1 -0
  61. package/lib/AcApPdfTextCmd.d.ts +73 -0
  62. package/lib/AcApPdfTextCmd.d.ts.map +1 -0
  63. package/lib/AcApPdfTextCmd.js +777 -0
  64. package/lib/AcApPdfTextCmd.js.map +1 -0
  65. package/lib/AcApPdfTextSession.d.ts +232 -0
  66. package/lib/AcApPdfTextSession.d.ts.map +1 -0
  67. package/lib/AcApPdfTextSession.js +826 -0
  68. package/lib/AcApPdfTextSession.js.map +1 -0
  69. package/lib/acapPdfI18n.d.ts +11 -0
  70. package/lib/acapPdfI18n.d.ts.map +1 -0
  71. package/lib/acapPdfI18n.js +57 -0
  72. package/lib/acapPdfI18n.js.map +1 -0
  73. package/lib/acapPdfPrompts.d.ts +12 -0
  74. package/lib/acapPdfPrompts.d.ts.map +1 -0
  75. package/lib/acapPdfPrompts.js +100 -0
  76. package/lib/acapPdfPrompts.js.map +1 -0
  77. package/lib/index.d.ts +28 -0
  78. package/lib/index.d.ts.map +1 -1
  79. package/lib/index.js +28 -0
  80. package/lib/index.js.map +1 -1
  81. package/lib/pdfDeprecatedMatching.d.ts +27 -0
  82. package/lib/pdfDeprecatedMatching.d.ts.map +1 -0
  83. package/lib/pdfDeprecatedMatching.js +20 -0
  84. package/lib/pdfDeprecatedMatching.js.map +1 -0
  85. package/lib/pdfDimStrokeTexts.d.ts +55 -0
  86. package/lib/pdfDimStrokeTexts.d.ts.map +1 -0
  87. package/lib/pdfDimStrokeTexts.js +274 -0
  88. package/lib/pdfDimStrokeTexts.js.map +1 -0
  89. package/lib/pdfDimensionConvert.d.ts +80 -0
  90. package/lib/pdfDimensionConvert.d.ts.map +1 -0
  91. package/lib/pdfDimensionConvert.js +566 -0
  92. package/lib/pdfDimensionConvert.js.map +1 -0
  93. package/lib/pdfEntityStrokes.d.ts +13 -0
  94. package/lib/pdfEntityStrokes.d.ts.map +1 -0
  95. package/lib/pdfEntityStrokes.js +86 -0
  96. package/lib/pdfEntityStrokes.js.map +1 -0
  97. package/lib/pdfHatchRecover.d.ts +57 -0
  98. package/lib/pdfHatchRecover.d.ts.map +1 -0
  99. package/lib/pdfHatchRecover.js +315 -0
  100. package/lib/pdfHatchRecover.js.map +1 -0
  101. package/lib/pdfImportAppend.d.ts +24 -0
  102. package/lib/pdfImportAppend.d.ts.map +1 -0
  103. package/lib/pdfImportAppend.js +35 -0
  104. package/lib/pdfImportAppend.js.map +1 -0
  105. package/lib/pdfImportEntities.d.ts +63 -0
  106. package/lib/pdfImportEntities.d.ts.map +1 -0
  107. package/lib/pdfImportEntities.js +307 -0
  108. package/lib/pdfImportEntities.js.map +1 -0
  109. package/lib/pdfImportImages.d.ts +90 -0
  110. package/lib/pdfImportImages.d.ts.map +1 -0
  111. package/lib/pdfImportImages.js +294 -0
  112. package/lib/pdfImportImages.js.map +1 -0
  113. package/lib/pdfImportShapes.d.ts +63 -0
  114. package/lib/pdfImportShapes.d.ts.map +1 -0
  115. package/lib/pdfImportShapes.js +248 -0
  116. package/lib/pdfImportShapes.js.map +1 -0
  117. package/lib/pdfVectorImport.d.ts +218 -5
  118. package/lib/pdfVectorImport.d.ts.map +1 -1
  119. package/lib/pdfVectorImport.js +566 -98
  120. package/lib/pdfVectorImport.js.map +1 -1
  121. package/lib/recognition/pdfCurveRecognition.d.ts +91 -0
  122. package/lib/recognition/pdfCurveRecognition.d.ts.map +1 -0
  123. package/lib/recognition/pdfCurveRecognition.js +506 -0
  124. package/lib/recognition/pdfCurveRecognition.js.map +1 -0
  125. package/lib/recognition/pdfDimDigitRecognition.d.ts +18 -0
  126. package/lib/recognition/pdfDimDigitRecognition.d.ts.map +1 -0
  127. package/lib/recognition/pdfDimDigitRecognition.js +520 -0
  128. package/lib/recognition/pdfDimDigitRecognition.js.map +1 -0
  129. package/lib/recognition/pdfDimensionPattern.d.ts +173 -0
  130. package/lib/recognition/pdfDimensionPattern.d.ts.map +1 -0
  131. package/lib/recognition/pdfDimensionPattern.js +1023 -0
  132. package/lib/recognition/pdfDimensionPattern.js.map +1 -0
  133. package/lib/recognition/pdfFormBlocks.d.ts +58 -0
  134. package/lib/recognition/pdfFormBlocks.d.ts.map +1 -0
  135. package/lib/recognition/pdfFormBlocks.js +260 -0
  136. package/lib/recognition/pdfFormBlocks.js.map +1 -0
  137. package/lib/recognition/pdfGlyphClustering.d.ts +81 -0
  138. package/lib/recognition/pdfGlyphClustering.d.ts.map +1 -0
  139. package/lib/recognition/pdfGlyphClustering.js +1005 -0
  140. package/lib/recognition/pdfGlyphClustering.js.map +1 -0
  141. package/lib/recognition/pdfGlyphDictionary.d.ts +49 -0
  142. package/lib/recognition/pdfGlyphDictionary.d.ts.map +1 -0
  143. package/lib/recognition/pdfGlyphDictionary.js +188 -0
  144. package/lib/recognition/pdfGlyphDictionary.js.map +1 -0
  145. package/lib/recognition/pdfHatchFaces.d.ts +84 -0
  146. package/lib/recognition/pdfHatchFaces.d.ts.map +1 -0
  147. package/lib/recognition/pdfHatchFaces.js +1285 -0
  148. package/lib/recognition/pdfHatchFaces.js.map +1 -0
  149. package/lib/recognition/pdfHatchRecognition.d.ts +222 -0
  150. package/lib/recognition/pdfHatchRecognition.d.ts.map +1 -0
  151. package/lib/recognition/pdfHatchRecognition.js +3781 -0
  152. package/lib/recognition/pdfHatchRecognition.js.map +1 -0
  153. package/lib/recognition/pdfRecGeometry.d.ts +67 -0
  154. package/lib/recognition/pdfRecGeometry.d.ts.map +1 -0
  155. package/lib/recognition/pdfRecGeometry.js +365 -0
  156. package/lib/recognition/pdfRecGeometry.js.map +1 -0
  157. package/lib/recognition/pdfTextFontKind.d.ts +16 -0
  158. package/lib/recognition/pdfTextFontKind.d.ts.map +1 -0
  159. package/lib/recognition/pdfTextFontKind.js +51 -0
  160. package/lib/recognition/pdfTextFontKind.js.map +1 -0
  161. package/lib/recognition/pdfTextMerge.d.ts +71 -0
  162. package/lib/recognition/pdfTextMerge.d.ts.map +1 -0
  163. package/lib/recognition/pdfTextMerge.js +382 -0
  164. package/lib/recognition/pdfTextMerge.js.map +1 -0
  165. package/lib/recognition/pdfTextRunMerge.d.ts +28 -0
  166. package/lib/recognition/pdfTextRunMerge.d.ts.map +1 -0
  167. package/lib/recognition/pdfTextRunMerge.js +90 -0
  168. package/lib/recognition/pdfTextRunMerge.js.map +1 -0
  169. package/lib/register.d.ts +8 -2
  170. package/lib/register.d.ts.map +1 -1
  171. package/lib/register.js +29 -4
  172. package/lib/register.js.map +1 -1
  173. package/lib/ui/AcUiPdfDimPanel.d.ts +55 -0
  174. package/lib/ui/AcUiPdfDimPanel.d.ts.map +1 -0
  175. package/lib/ui/AcUiPdfDimPanel.js +347 -0
  176. package/lib/ui/AcUiPdfDimPanel.js.map +1 -0
  177. package/lib/ui/AcUiPdfHatchPanel.d.ts +57 -0
  178. package/lib/ui/AcUiPdfHatchPanel.d.ts.map +1 -0
  179. package/lib/ui/AcUiPdfHatchPanel.js +420 -0
  180. package/lib/ui/AcUiPdfHatchPanel.js.map +1 -0
  181. package/lib/ui/AcUiPdfImportDialog.d.ts +120 -0
  182. package/lib/ui/AcUiPdfImportDialog.d.ts.map +1 -0
  183. package/lib/ui/AcUiPdfImportDialog.js +673 -0
  184. package/lib/ui/AcUiPdfImportDialog.js.map +1 -0
  185. package/lib/ui/AcUiPdfTextPanel.d.ts +95 -0
  186. package/lib/ui/AcUiPdfTextPanel.d.ts.map +1 -0
  187. package/lib/ui/AcUiPdfTextPanel.js +775 -0
  188. package/lib/ui/AcUiPdfTextPanel.js.map +1 -0
  189. package/package.json +11 -11
@@ -0,0 +1,86 @@
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 { AcDbArc, AcDbCircle, AcDbEllipse, AcDbLine, AcDbPolyline, AcDbSpline } from '@mlightcad/data-model';
13
+ /** Samples along a full circle; arcs use a proportional share. */
14
+ var CIRCLE_SAMPLES = 24;
15
+ /**
16
+ * Samples a curve entity into a stroke polyline for text recognition.
17
+ *
18
+ * Only the shape matters (bounding boxes and glyph signatures), so arcs and
19
+ * ellipses are sampled coarsely and splines use their control polygon.
20
+ *
21
+ * @returns The stroke, or `undefined` for entities that cannot be glyph
22
+ * strokes (text, hatches, blocks, ...).
23
+ */
24
+ export function pdfEntityToStroke(entity, id) {
25
+ var points = sampleEntity(entity);
26
+ if (!points || points.length === 0)
27
+ return undefined;
28
+ return { id: id, points: points };
29
+ }
30
+ function sampleEntity(entity) {
31
+ if (entity instanceof AcDbLine) {
32
+ var a = entity.startPoint;
33
+ var b = entity.endPoint;
34
+ return [
35
+ { x: a.x, y: a.y },
36
+ { x: b.x, y: b.y }
37
+ ];
38
+ }
39
+ if (entity instanceof AcDbPolyline) {
40
+ var points = [];
41
+ for (var i = 0; i < entity.numberOfVertices; i++) {
42
+ var p = entity.getPoint2dAt(i);
43
+ points.push({ x: p.x, y: p.y });
44
+ }
45
+ if (entity.closed && points.length > 1)
46
+ points.push(__assign({}, points[0]));
47
+ return points;
48
+ }
49
+ if (entity instanceof AcDbArc) {
50
+ var sweep = entity.endAngle - entity.startAngle;
51
+ if (sweep <= 0)
52
+ sweep += Math.PI * 2;
53
+ return sampleCircular(entity.center, entity.radius, entity.radius, { x: 1, y: 0 }, entity.startAngle, sweep);
54
+ }
55
+ if (entity instanceof AcDbCircle) {
56
+ return sampleCircular(entity.center, entity.radius, entity.radius, { x: 1, y: 0 }, 0, Math.PI * 2);
57
+ }
58
+ if (entity instanceof AcDbEllipse) {
59
+ var sweep = entity.endAngle - entity.startAngle;
60
+ if (sweep <= 0)
61
+ sweep += Math.PI * 2;
62
+ return sampleCircular(entity.center, entity.majorAxisRadius, entity.minorAxisRadius, entity.majorAxis, entity.startAngle, sweep);
63
+ }
64
+ if (entity instanceof AcDbSpline) {
65
+ return entity.subGetGripPoints().map(function (p) { return ({ x: p.x, y: p.y }); });
66
+ }
67
+ return undefined;
68
+ }
69
+ function sampleCircular(center, rx, ry, axis, start, sweep) {
70
+ var len = Math.hypot(axis.x, axis.y) || 1;
71
+ var ux = axis.x / len;
72
+ var uy = axis.y / len;
73
+ var steps = Math.max(2, Math.ceil((CIRCLE_SAMPLES * sweep) / (Math.PI * 2)));
74
+ var points = [];
75
+ for (var i = 0; i <= steps; i++) {
76
+ var t = start + (sweep * i) / steps;
77
+ var u = rx * Math.cos(t);
78
+ var v = ry * Math.sin(t);
79
+ points.push({
80
+ x: center.x + u * ux - v * uy,
81
+ y: center.y + u * uy + v * ux
82
+ });
83
+ }
84
+ return points;
85
+ }
86
+ //# sourceMappingURL=pdfEntityStrokes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfEntityStrokes.js","sourceRoot":"","sources":["../src/pdfEntityStrokes.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EAEX,QAAQ,EACR,YAAY,EACZ,UAAU,EACX,MAAM,uBAAuB,CAAA;AAK9B,kEAAkE;AAClE,IAAM,cAAc,GAAG,EAAE,CAAA;AAEzB;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAkB,EAClB,EAAM;IAEN,IAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACpD,OAAO,EAAE,EAAE,IAAA,EAAE,MAAM,QAAA,EAAE,CAAA;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB;IACtC,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;QAC/B,IAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;QAC3B,IAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAA;QACzB,OAAO;YACL,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;SACnB,CAAA;IACH,CAAC;IACD,IAAI,MAAM,YAAY,YAAY,EAAE,CAAC;QACnC,IAAM,MAAM,GAAkB,EAAE,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACjC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,cAAM,MAAM,CAAC,CAAC,CAAC,EAAG,CAAA;QACrE,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAA;QAC/C,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACpC,OAAO,cAAc,CACnB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EACd,MAAM,CAAC,UAAU,EACjB,KAAK,CACN,CAAA;IACH,CAAC;IACD,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,cAAc,CACnB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EACd,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,CACZ,CAAA;IACH,CAAC;IACD,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QAClC,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAA;QAC/C,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACpC,OAAO,cAAc,CACnB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,UAAU,EACjB,KAAK,CACN,CAAA;IACH,CAAC;IACD,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,cAAc,CACrB,MAAmB,EACnB,EAAU,EACV,EAAU,EACV,IAAiB,EACjB,KAAa,EACb,KAAa;IAEb,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAA;IACvB,IAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAA;IACvB,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9E,IAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;QACrC,IAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;YAC7B,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;SAC9B,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { type AcDbDatabase, type AcDbEntity, AcDbHatch } from '@mlightcad/data-model';
2
+ import type { PdfImportShapeItem } from './pdfImportShapes';
3
+ import { type PdfHatchRecognitionOptions, type PdfRecognizedHatch } from './recognition/pdfHatchRecognition';
4
+ /**
5
+ * Selected entities described for hatch recognition: one shape item per
6
+ * line, open straight polyline segment, arc, circle, ellipse or closed
7
+ * polyline, with the entity each item came from.
8
+ */
9
+ export interface PdfHatchInput<Id> {
10
+ items: PdfImportShapeItem[];
11
+ /** Entity of each item (same index). */
12
+ owners: Id[];
13
+ }
14
+ /**
15
+ * Describes entities for {@link acapPdfRecoverHatches}.
16
+ *
17
+ * Items keep the layer, colour and lineweight of their entity: strokes of
18
+ * one hatch share all three. An open polyline of straight segments is split
19
+ * into its segments, since a hatch stroke may have been joined with its
20
+ * neighbours. Entities drawn with a `PDF_DASH_*` linetype count as dashed
21
+ * and never become hatch strokes (they still bound hatches).
22
+ */
23
+ export declare function pdfEntitiesToHatchInput<Id>(entities: Map<Id, AcDbEntity>): PdfHatchInput<Id>;
24
+ /** A recovered hatch with the entities it replaces. */
25
+ export interface PdfRecoveredHatch<Id> {
26
+ hatch: PdfRecognizedHatch;
27
+ /** Entities every item of which the hatch re-draws (to erase). */
28
+ consumed: Id[];
29
+ }
30
+ /** Result of {@link acapPdfRecoverHatches}. */
31
+ export interface PdfHatchRecovery<Id> {
32
+ hatches: PdfRecoveredHatch<Id>[];
33
+ /** Tolerance the hatches were recognized with. */
34
+ tolerance: number;
35
+ }
36
+ /**
37
+ * Rebuilds pattern hatches from selected strokes.
38
+ *
39
+ * Boundaries come from closed shapes in the selection or from the faces the
40
+ * selected line work encloses; when no library pattern fits, a custom
41
+ * pattern is measured. An entity is replaced only when the hatch re-draws
42
+ * all of it.
43
+ *
44
+ * @param input - From {@link pdfEntitiesToHatchInput}.
45
+ * @param options - Overrides for the recognizer (tests, tuning).
46
+ */
47
+ export declare function acapPdfRecoverHatches<Id>(input: PdfHatchInput<Id>, options?: PdfHatchRecognitionOptions): PdfHatchRecovery<Id>;
48
+ /**
49
+ * The hatch entity of a recovered hatch, on the layer and in the colour of
50
+ * `source` (one of the strokes it replaces).
51
+ *
52
+ * @returns The hatch, or `undefined` when its boundary has no closed loop.
53
+ */
54
+ export declare function acapPdfCreateRecoveredHatch(db: AcDbDatabase, hatch: PdfRecognizedHatch, source?: AcDbEntity): AcDbHatch | undefined;
55
+ /** Short label of a hatch pattern for prompts (`ANSI31`, `USER`, ...). */
56
+ export declare function acapPdfHatchPatternLabel(hatch: PdfRecognizedHatch): string;
57
+ //# sourceMappingURL=pdfHatchRecover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfHatchRecover.d.ts","sourceRoot":"","sources":["../src/pdfHatchRecover.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,UAAU,EACf,SAAS,EAGV,MAAM,uBAAuB,CAAA;AAM9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAA;AAE1C;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,EAAE;IAC/B,KAAK,EAAE,kBAAkB,EAAE,CAAA;IAC3B,wCAAwC;IACxC,MAAM,EAAE,EAAE,EAAE,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EACxC,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,GAC5B,aAAa,CAAC,EAAE,CAAC,CA6DnB;AAmCD,uDAAuD;AACvD,MAAM,WAAW,iBAAiB,CAAC,EAAE;IACnC,KAAK,EAAE,kBAAkB,CAAA;IACzB,kEAAkE;IAClE,QAAQ,EAAE,EAAE,EAAE,CAAA;CACf;AAED,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB,CAAC,EAAE;IAClC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAA;IAChC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;CAClB;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EACtC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EACxB,OAAO,CAAC,EAAE,0BAA0B,GACnC,gBAAgB,CAAC,EAAE,CAAC,CAsBtB;AAqCD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,kBAAkB,EACzB,MAAM,CAAC,EAAE,UAAU,GAClB,SAAS,GAAG,SAAS,CAiBvB;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAM1E"}
@@ -0,0 +1,315 @@
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
+ var __values = (this && this.__values) || function(o) {
13
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
14
+ if (m) return m.call(o);
15
+ if (o && typeof o.length === "number") return {
16
+ next: function () {
17
+ if (o && i >= o.length) o = void 0;
18
+ return { value: o && o[i++], done: !o };
19
+ }
20
+ };
21
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
22
+ };
23
+ var __read = (this && this.__read) || function (o, n) {
24
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
25
+ if (!m) return o;
26
+ var i = m.call(o), r, ar = [], e;
27
+ try {
28
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
29
+ }
30
+ catch (error) { e = { error: error }; }
31
+ finally {
32
+ try {
33
+ if (r && !r.done && (m = i["return"])) m.call(i);
34
+ }
35
+ finally { if (e) throw e.error; }
36
+ }
37
+ return ar;
38
+ };
39
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
40
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
41
+ if (ar || !(i in from)) {
42
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
43
+ ar[i] = from[i];
44
+ }
45
+ }
46
+ return to.concat(ar || Array.prototype.slice.call(from));
47
+ };
48
+ import { AcDbArc, AcDbCircle, AcDbEllipse, AcDbLine, AcDbPolyline } from '@mlightcad/data-model';
49
+ import { acapPdfCreatePatternHatch, acapPdfShapeToLoop } from './pdfImportEntities';
50
+ import { acapPdfRecognizeHatches } from './recognition/pdfHatchRecognition';
51
+ /**
52
+ * Describes entities for {@link acapPdfRecoverHatches}.
53
+ *
54
+ * Items keep the layer, colour and lineweight of their entity: strokes of
55
+ * one hatch share all three. An open polyline of straight segments is split
56
+ * into its segments, since a hatch stroke may have been joined with its
57
+ * neighbours. Entities drawn with a `PDF_DASH_*` linetype count as dashed
58
+ * and never become hatch strokes (they still bound hatches).
59
+ */
60
+ export function pdfEntitiesToHatchInput(entities) {
61
+ var e_1, _a;
62
+ var input = { items: [], owners: [] };
63
+ var _loop_1 = function (id, entity) {
64
+ var style = entityStyle(entity);
65
+ var push = function (shape) {
66
+ input.items.push(__assign({ shape: shape }, style));
67
+ input.owners.push(id);
68
+ };
69
+ if (entity instanceof AcDbLine) {
70
+ push({
71
+ kind: 'line',
72
+ start: { x: entity.startPoint.x, y: entity.startPoint.y },
73
+ end: { x: entity.endPoint.x, y: entity.endPoint.y }
74
+ });
75
+ }
76
+ else if (entity instanceof AcDbPolyline) {
77
+ var vertices = polylineVertices(entity);
78
+ if (vertices.length < 2)
79
+ return "continue";
80
+ var straight = vertices.every(function (v) { return Math.abs(v.bulge) <= 1e-12; });
81
+ if (!entity.closed && straight) {
82
+ for (var i = 0; i + 1 < vertices.length; i++) {
83
+ push({
84
+ kind: 'line',
85
+ start: { x: vertices[i].x, y: vertices[i].y },
86
+ end: { x: vertices[i + 1].x, y: vertices[i + 1].y }
87
+ });
88
+ }
89
+ }
90
+ else {
91
+ push({ kind: 'polyline', vertices: vertices, closed: entity.closed });
92
+ }
93
+ }
94
+ else if (entity instanceof AcDbArc) {
95
+ push({
96
+ kind: 'arc',
97
+ center: { x: entity.center.x, y: entity.center.y },
98
+ radius: entity.radius,
99
+ startAngle: entity.startAngle,
100
+ endAngle: entity.endAngle
101
+ });
102
+ }
103
+ else if (entity instanceof AcDbCircle) {
104
+ push({
105
+ kind: 'circle',
106
+ center: { x: entity.center.x, y: entity.center.y },
107
+ radius: entity.radius
108
+ });
109
+ }
110
+ else if (entity instanceof AcDbEllipse) {
111
+ var axis = entity.majorAxis;
112
+ var length_1 = Math.hypot(axis.x, axis.y) || 1;
113
+ var major = entity.majorAxisRadius;
114
+ push({
115
+ kind: 'ellipse',
116
+ center: { x: entity.center.x, y: entity.center.y },
117
+ majorAxis: {
118
+ x: (axis.x / length_1) * major,
119
+ y: (axis.y / length_1) * major
120
+ },
121
+ radiusRatio: major > 0 ? entity.minorAxisRadius / major : 1,
122
+ startAngle: entity.startAngle,
123
+ endAngle: entity.endAngle
124
+ });
125
+ }
126
+ };
127
+ try {
128
+ for (var entities_1 = __values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {
129
+ var _b = __read(entities_1_1.value, 2), id = _b[0], entity = _b[1];
130
+ _loop_1(id, entity);
131
+ }
132
+ }
133
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
134
+ finally {
135
+ try {
136
+ if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);
137
+ }
138
+ finally { if (e_1) throw e_1.error; }
139
+ }
140
+ return input;
141
+ }
142
+ function entityStyle(entity) {
143
+ var _a;
144
+ var weight = Number(entity.lineWeight);
145
+ return {
146
+ layerName: entity.layer,
147
+ color: entity.color.toString(),
148
+ // Lineweights are hundredths of a millimetre; ByLayer/ByBlock are < 0.
149
+ lineWidth: weight > 0 ? weight / 100 : undefined,
150
+ dashPattern: /^PDF_DASH/i.test((_a = entity.lineType) !== null && _a !== void 0 ? _a : '') ? [1] : undefined
151
+ };
152
+ }
153
+ function polylineVertices(entity) {
154
+ var _a;
155
+ // Runtime polyline geometry keeps bulge data; the typed API does not
156
+ // expose it (the HATCH command reads it the same way).
157
+ var runtime = (_a = entity._geo) === null || _a === void 0 ? void 0 : _a.vertices;
158
+ if (runtime && runtime.length === entity.numberOfVertices) {
159
+ return runtime.map(function (v) { var _a; return ({ x: v.x, y: v.y, bulge: (_a = v.bulge) !== null && _a !== void 0 ? _a : 0 }); });
160
+ }
161
+ return Array.from({ length: entity.numberOfVertices }, function (_, i) {
162
+ var p = entity.getPoint2dAt(i);
163
+ return { x: p.x, y: p.y, bulge: 0 };
164
+ });
165
+ }
166
+ /**
167
+ * Tolerances tried, as shares of the median stroke length. A hatch stroke
168
+ * is rarely shorter than a few line spacings, and PDF writers round
169
+ * coordinates far below that; the import scale is unknown here, so a few
170
+ * values are tried and the one that explains the most strokes wins.
171
+ */
172
+ var TOLERANCE_LADDER = [0.02, 0.05, 0.008];
173
+ /**
174
+ * Rebuilds pattern hatches from selected strokes.
175
+ *
176
+ * Boundaries come from closed shapes in the selection or from the faces the
177
+ * selected line work encloses; when no library pattern fits, a custom
178
+ * pattern is measured. An entity is replaced only when the hatch re-draws
179
+ * all of it.
180
+ *
181
+ * @param input - From {@link pdfEntitiesToHatchInput}.
182
+ * @param options - Overrides for the recognizer (tests, tuning).
183
+ */
184
+ export function acapPdfRecoverHatches(input, options) {
185
+ var e_2, _a;
186
+ var tolerances = (options === null || options === void 0 ? void 0 : options.tolerance) !== undefined
187
+ ? [options.tolerance]
188
+ : TOLERANCE_LADDER.map(function (share) { return share * medianLineLength(input.items); });
189
+ var best = { hatches: [], tolerance: tolerances[0] };
190
+ var bestCount = 0;
191
+ try {
192
+ for (var tolerances_1 = __values(tolerances), tolerances_1_1 = tolerances_1.next(); !tolerances_1_1.done; tolerances_1_1 = tolerances_1.next()) {
193
+ var tolerance = tolerances_1_1.value;
194
+ if (!(tolerance > 0))
195
+ continue;
196
+ var hatches = acapPdfRecognizeHatches(input.items, __assign(__assign({ faceBoundaries: true, customPatterns: true }, options), { tolerance: tolerance })).hatches;
197
+ var count = hatches.reduce(function (sum, hatch) { return sum + hatch.items.length; }, 0);
198
+ if (count > bestCount) {
199
+ bestCount = count;
200
+ best = { hatches: withConsumed(input, hatches), tolerance: tolerance };
201
+ }
202
+ }
203
+ }
204
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
205
+ finally {
206
+ try {
207
+ if (tolerances_1_1 && !tolerances_1_1.done && (_a = tolerances_1.return)) _a.call(tolerances_1);
208
+ }
209
+ finally { if (e_2) throw e_2.error; }
210
+ }
211
+ return best;
212
+ }
213
+ function medianLineLength(items) {
214
+ var e_3, _a;
215
+ var lengths = [];
216
+ try {
217
+ for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
218
+ var item = items_1_1.value;
219
+ if (item.shape.kind !== 'line')
220
+ continue;
221
+ var _b = item.shape, start = _b.start, end = _b.end;
222
+ var length_2 = Math.hypot(end.x - start.x, end.y - start.y);
223
+ if (length_2 > 0)
224
+ lengths.push(length_2);
225
+ }
226
+ }
227
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
228
+ finally {
229
+ try {
230
+ if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);
231
+ }
232
+ finally { if (e_3) throw e_3.error; }
233
+ }
234
+ if (lengths.length === 0)
235
+ return 0;
236
+ lengths.sort(function (p, q) { return p - q; });
237
+ return lengths[Math.floor(lengths.length / 2)];
238
+ }
239
+ function withConsumed(input, hatches) {
240
+ var e_4, _a;
241
+ var _b;
242
+ var itemCount = new Map();
243
+ try {
244
+ for (var _c = __values(input.owners), _d = _c.next(); !_d.done; _d = _c.next()) {
245
+ var owner = _d.value;
246
+ itemCount.set(owner, ((_b = itemCount.get(owner)) !== null && _b !== void 0 ? _b : 0) + 1);
247
+ }
248
+ }
249
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
250
+ finally {
251
+ try {
252
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
253
+ }
254
+ finally { if (e_4) throw e_4.error; }
255
+ }
256
+ return hatches.map(function (hatch) {
257
+ var e_5, _a;
258
+ var _b;
259
+ var taken = new Map();
260
+ try {
261
+ for (var _c = __values(hatch.items), _d = _c.next(); !_d.done; _d = _c.next()) {
262
+ var index = _d.value;
263
+ var owner = input.owners[index];
264
+ taken.set(owner, ((_b = taken.get(owner)) !== null && _b !== void 0 ? _b : 0) + 1);
265
+ }
266
+ }
267
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
268
+ finally {
269
+ try {
270
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
271
+ }
272
+ finally { if (e_5) throw e_5.error; }
273
+ }
274
+ // A polyline whose other segments are line work stays as it is.
275
+ var consumed = __spreadArray([], __read(taken.entries()), false).filter(function (_a) {
276
+ var _b = __read(_a, 2), owner = _b[0], count = _b[1];
277
+ return count === itemCount.get(owner);
278
+ })
279
+ .map(function (_a) {
280
+ var _b = __read(_a, 1), owner = _b[0];
281
+ return owner;
282
+ });
283
+ return { hatch: hatch, consumed: consumed };
284
+ });
285
+ }
286
+ /**
287
+ * The hatch entity of a recovered hatch, on the layer and in the colour of
288
+ * `source` (one of the strokes it replaces).
289
+ *
290
+ * @returns The hatch, or `undefined` when its boundary has no closed loop.
291
+ */
292
+ export function acapPdfCreateRecoveredHatch(db, hatch, source) {
293
+ var loops = hatch.boundary
294
+ .map(function (shape) { return acapPdfShapeToLoop(shape); })
295
+ .filter(function (loop) { return !!loop; });
296
+ var entity = acapPdfCreatePatternHatch(db, loops, hatch.pattern, hatch.definitionLines);
297
+ if (!entity)
298
+ return undefined;
299
+ if (source) {
300
+ entity.layer = source.layer;
301
+ entity.color = source.color.clone();
302
+ entity.lineWeight = source.lineWeight;
303
+ }
304
+ return entity;
305
+ }
306
+ /** Short label of a hatch pattern for prompts (`ANSI31`, `USER`, ...). */
307
+ export function acapPdfHatchPatternLabel(hatch) {
308
+ var pattern = hatch.pattern;
309
+ if (pattern.type === 'predefined')
310
+ return pattern.name;
311
+ if (pattern.type === 'userDefined')
312
+ return pattern.double ? 'USER (x2)' : 'USER';
313
+ return pattern.name;
314
+ }
315
+ //# sourceMappingURL=pdfHatchRecover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfHatchRecover.js","sourceRoot":"","sources":["../src/pdfHatchRecover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { AcDbBlockTableRecord, AcDbEntity } from '@mlightcad/data-model';
2
+ /** Entities appended per transaction commit by {@link acapPdfAppendEntities}. */
3
+ export declare const PDF_APPEND_CHUNK_SIZE = 5000;
4
+ /**
5
+ * Appends imported PDF entities to a block table record in chunks.
6
+ *
7
+ * A page-sized PDF can yield hundreds of thousands of entities. Appending them
8
+ * all inside the command's single transaction freezes the browser: the
9
+ * transaction recorder looks up every earlier change on each append
10
+ * (quadratic), and the final commit sends every entity in one
11
+ * `entityAppended` event, which overflows the call stack wherever a listener
12
+ * spreads it (`push(...entities)`).
13
+ *
14
+ * When a transaction is active, it is committed and reopened after each
15
+ * chunk. Commits made under one undo mark merge into a single undo record, so
16
+ * the import still undoes in one step. Without a transaction the chunks are
17
+ * plain appends, each dispatched as its own event.
18
+ *
19
+ * @param btr - Block table record receiving the entities (usually model space)
20
+ * @param entities - Entities in draw order
21
+ * @param chunkSize - Entities per chunk
22
+ */
23
+ export declare function acapPdfAppendEntities(btr: AcDbBlockTableRecord, entities: readonly AcDbEntity[], chunkSize?: number): void;
24
+ //# sourceMappingURL=pdfImportAppend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfImportAppend.d.ts","sourceRoot":"","sources":["../src/pdfImportAppend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7E,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,oBAAoB,EACzB,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,SAAS,SAAwB,QAYlC"}
@@ -0,0 +1,35 @@
1
+ /** Entities appended per transaction commit by {@link acapPdfAppendEntities}. */
2
+ export var PDF_APPEND_CHUNK_SIZE = 5000;
3
+ /**
4
+ * Appends imported PDF entities to a block table record in chunks.
5
+ *
6
+ * A page-sized PDF can yield hundreds of thousands of entities. Appending them
7
+ * all inside the command's single transaction freezes the browser: the
8
+ * transaction recorder looks up every earlier change on each append
9
+ * (quadratic), and the final commit sends every entity in one
10
+ * `entityAppended` event, which overflows the call stack wherever a listener
11
+ * spreads it (`push(...entities)`).
12
+ *
13
+ * When a transaction is active, it is committed and reopened after each
14
+ * chunk. Commits made under one undo mark merge into a single undo record, so
15
+ * the import still undoes in one step. Without a transaction the chunks are
16
+ * plain appends, each dispatched as its own event.
17
+ *
18
+ * @param btr - Block table record receiving the entities (usually model space)
19
+ * @param entities - Entities in draw order
20
+ * @param chunkSize - Entities per chunk
21
+ */
22
+ export function acapPdfAppendEntities(btr, entities, chunkSize) {
23
+ if (chunkSize === void 0) { chunkSize = PDF_APPEND_CHUNK_SIZE; }
24
+ var tm = btr.database.transactionManager;
25
+ var size = Math.max(1, Math.floor(chunkSize));
26
+ for (var start = 0; start < entities.length; start += size) {
27
+ btr.appendEntity(entities.slice(start, start + size));
28
+ // Leave the last chunk to the caller's commit (AcEdCommand.trigger).
29
+ if (start + size < entities.length && tm.hasTransaction()) {
30
+ tm.commitTransaction();
31
+ tm.startTransaction();
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=pdfImportAppend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfImportAppend.js","sourceRoot":"","sources":["../src/pdfImportAppend.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,MAAM,CAAC,IAAM,qBAAqB,GAAG,IAAI,CAAA;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAyB,EACzB,QAA+B,EAC/B,SAAiC;IAAjC,0BAAA,EAAA,iCAAiC;IAEjC,IAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAA;IAC1C,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QAC3D,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;QACrD,qEAAqE;QACrE,IAAI,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1D,EAAE,CAAC,iBAAiB,EAAE,CAAA;YACtB,EAAE,CAAC,gBAAgB,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { type AcDbDatabase, AcDbHatch, AcGeLoop2d } from '@mlightcad/data-model';
2
+ import type { PdfRecognizedShape } from './recognition/pdfCurveRecognition';
3
+ import type { PdfHatchDefinitionLine, PdfRecognizedHatchPattern } from './recognition/pdfHatchRecognition';
4
+ /** Name prefix for linetypes created from PDF dash patterns. */
5
+ export declare const PDF_DASH_LINETYPE_PREFIX = "PDF_DASH_";
6
+ /**
7
+ * Returns the linetype for a dash pattern (alternating dash, gap lengths in
8
+ * drawing units), creating it on first use. Equal patterns share one record.
9
+ */
10
+ export declare function acapPdfEnsureDashLinetype(db: AcDbDatabase, pattern: number[]): string;
11
+ /**
12
+ * Hatch loop for a closed shape, or `undefined` for open ones (lines, arcs,
13
+ * open polylines and splines).
14
+ */
15
+ export declare function acapPdfShapeToLoop(shape: PdfRecognizedShape): AcGeLoop2d | undefined;
16
+ /**
17
+ * Solid hatch over the given loops (even-odd, so inner loops are holes).
18
+ *
19
+ * @returns The hatch, or `undefined` when no loop is closed.
20
+ */
21
+ export declare function acapPdfCreateSolidHatch(db: AcDbDatabase, loops: AcGeLoop2d[]): AcDbHatch | undefined;
22
+ /**
23
+ * Pattern hatch over the given loops (even-odd, so inner loops are holes).
24
+ *
25
+ * The hatch keeps the recognized definition lines verbatim, the same way a
26
+ * DXF hatch does, so it draws exactly what was matched against the PDF.
27
+ *
28
+ * @param pattern - Pattern name / type, scale and angle to record.
29
+ * @param lines - Definition lines in drawing coordinates.
30
+ * @returns The hatch, or `undefined` when no loop is closed.
31
+ */
32
+ export declare function acapPdfCreatePatternHatch(db: AcDbDatabase, loops: AcGeLoop2d[], pattern: PdfRecognizedHatchPattern, lines: readonly PdfHatchDefinitionLine[]): AcDbHatch | undefined;
33
+ /**
34
+ * Font family from a PDF font name: drops the subset tag (`ABCDEF+`) and
35
+ * weight / style suffixes (`Arial-BoldMT` → `Arial`, `Arial,Bold` → `Arial`).
36
+ */
37
+ export declare function acapPdfFontFamily(name: string): string;
38
+ /** Prefix of text styles created for PDF fonts. */
39
+ export declare const PDF_TEXT_STYLE_PREFIX = "PDF_";
40
+ /**
41
+ * Returns the `PDF_<family>` text style for a font family, creating it on
42
+ * first use with that family as its (TrueType) font.
43
+ */
44
+ export declare function acapPdfEnsureTextStyle(db: AcDbDatabase, family: string): string;
45
+ /** Text style created for recovered SHX line text. */
46
+ export declare const PDF_SHX_TEXT_STYLE = "PDF_SHX";
47
+ /** SHX font and big font of {@link PDF_SHX_TEXT_STYLE}. */
48
+ export declare const PDF_SHX_FONT = "txt";
49
+ export declare const PDF_SHX_BIG_FONT = "gbcbig";
50
+ /**
51
+ * Width factor that makes text span its PDF advance width.
52
+ *
53
+ * The CAD font usually differs from the PDF font, so text with the PDF's
54
+ * own width factor runs long or short. Scaling by the measured width keeps
55
+ * each run inside the space it had on the page.
56
+ *
57
+ * @param pdfWidthFactor - Width factor from the PDF text matrix (fallback).
58
+ * @param pdfWidth - Advance width of the run in the PDF, in drawing units.
59
+ * @param naturalWidth - Width of the same text in the CAD font at width
60
+ * factor 1, in drawing units.
61
+ */
62
+ export declare function acapPdfFitWidthFactor(pdfWidthFactor: number, pdfWidth: number | undefined, naturalWidth: number | undefined): number;
63
+ //# sourceMappingURL=pdfImportEntities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfImportEntities.d.ts","sourceRoot":"","sources":["../src/pdfImportEntities.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,SAAS,EAOT,UAAU,EAIX,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,mCAAmC,CAAA;AAG1C,gEAAgE;AAChE,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,MAAM,EAAE,GAChB,MAAM,CAuBR;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,GACxB,UAAU,GAAG,SAAS,CAkFxB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EAAE,GAClB,SAAS,GAAG,SAAS,CAavB;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GACvC,SAAS,GAAG,SAAS,CAuCvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED,mDAAmD;AACnD,eAAO,MAAM,qBAAqB,SAAS,CAAA;AAE3C;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAsBR;AAED,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,YAAgC,CAAA;AAE/D,2DAA2D;AAC3D,eAAO,MAAM,YAAY,QAAQ,CAAA;AACjC,eAAO,MAAM,gBAAgB,WAAW,CAAA;AAMxC;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,CAaR"}