@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.
- package/LICENSE +21 -21
- package/README.md +280 -186
- package/dist/cad-pdf-plugin-register.js +29 -11
- package/dist/cad-pdf-plugin-register.umd.cjs +1 -1
- package/dist/cad-pdf-plugin.js +17568 -8428
- package/dist/cad-pdf-plugin.umd.cjs +847 -13
- package/lib/AcApConvertToPdfCmd.d.ts.map +1 -1
- package/lib/AcApConvertToPdfCmd.js +14 -3
- package/lib/AcApConvertToPdfCmd.js.map +1 -1
- package/lib/AcApImportPdfCmd.d.ts +5 -3
- package/lib/AcApImportPdfCmd.d.ts.map +1 -1
- package/lib/AcApImportPdfCmd.js +5 -3
- package/lib/AcApImportPdfCmd.js.map +1 -1
- package/lib/AcApImportPdfPromptCmd.d.ts +16 -0
- package/lib/AcApImportPdfPromptCmd.d.ts.map +1 -0
- package/lib/AcApImportPdfPromptCmd.js +89 -0
- package/lib/AcApImportPdfPromptCmd.js.map +1 -0
- package/lib/AcApPdfBlockCmd.d.ts +15 -0
- package/lib/AcApPdfBlockCmd.d.ts.map +1 -0
- package/lib/AcApPdfBlockCmd.js +75 -0
- package/lib/AcApPdfBlockCmd.js.map +1 -0
- package/lib/AcApPdfDimCmd.d.ts +20 -0
- package/lib/AcApPdfDimCmd.d.ts.map +1 -0
- package/lib/AcApPdfDimCmd.js +413 -0
- package/lib/AcApPdfDimCmd.js.map +1 -0
- package/lib/AcApPdfDimSession.d.ts +82 -0
- package/lib/AcApPdfDimSession.d.ts.map +1 -0
- package/lib/AcApPdfDimSession.js +252 -0
- package/lib/AcApPdfDimSession.js.map +1 -0
- package/lib/AcApPdfFontResolver.d.ts.map +1 -1
- package/lib/AcApPdfFontResolver.js +2 -5
- package/lib/AcApPdfFontResolver.js.map +1 -1
- package/lib/AcApPdfHatchCmd.d.ts +33 -0
- package/lib/AcApPdfHatchCmd.d.ts.map +1 -0
- package/lib/AcApPdfHatchCmd.js +411 -0
- package/lib/AcApPdfHatchCmd.js.map +1 -0
- package/lib/AcApPdfHatchSession.d.ts +122 -0
- package/lib/AcApPdfHatchSession.d.ts.map +1 -0
- package/lib/AcApPdfHatchSession.js +357 -0
- package/lib/AcApPdfHatchSession.js.map +1 -0
- package/lib/AcApPdfImportConvertor.d.ts +47 -5
- package/lib/AcApPdfImportConvertor.d.ts.map +1 -1
- package/lib/AcApPdfImportConvertor.js +999 -108
- package/lib/AcApPdfImportConvertor.js.map +1 -1
- package/lib/AcApPdfImportOptions.d.ts +116 -0
- package/lib/AcApPdfImportOptions.d.ts.map +1 -0
- package/lib/AcApPdfImportOptions.js +31 -0
- package/lib/AcApPdfImportOptions.js.map +1 -0
- package/lib/AcApPdfImportResources.d.ts +41 -0
- package/lib/AcApPdfImportResources.d.ts.map +1 -0
- package/lib/AcApPdfImportResources.js +52 -0
- package/lib/AcApPdfImportResources.js.map +1 -0
- package/lib/AcApPdfPlugin.d.ts +3 -3
- package/lib/AcApPdfPlugin.d.ts.map +1 -1
- package/lib/AcApPdfPlugin.js +23 -5
- package/lib/AcApPdfPlugin.js.map +1 -1
- package/lib/AcApPdfScaleCmd.d.ts +22 -0
- package/lib/AcApPdfScaleCmd.d.ts.map +1 -0
- package/lib/AcApPdfScaleCmd.js +185 -0
- package/lib/AcApPdfScaleCmd.js.map +1 -0
- package/lib/AcApPdfTextCmd.d.ts +73 -0
- package/lib/AcApPdfTextCmd.d.ts.map +1 -0
- package/lib/AcApPdfTextCmd.js +777 -0
- package/lib/AcApPdfTextCmd.js.map +1 -0
- package/lib/AcApPdfTextSession.d.ts +232 -0
- package/lib/AcApPdfTextSession.d.ts.map +1 -0
- package/lib/AcApPdfTextSession.js +826 -0
- package/lib/AcApPdfTextSession.js.map +1 -0
- package/lib/acapPdfI18n.d.ts +11 -0
- package/lib/acapPdfI18n.d.ts.map +1 -0
- package/lib/acapPdfI18n.js +57 -0
- package/lib/acapPdfI18n.js.map +1 -0
- package/lib/acapPdfPrompts.d.ts +12 -0
- package/lib/acapPdfPrompts.d.ts.map +1 -0
- package/lib/acapPdfPrompts.js +100 -0
- package/lib/acapPdfPrompts.js.map +1 -0
- package/lib/index.d.ts +28 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +28 -0
- package/lib/index.js.map +1 -1
- package/lib/pdfDeprecatedMatching.d.ts +27 -0
- package/lib/pdfDeprecatedMatching.d.ts.map +1 -0
- package/lib/pdfDeprecatedMatching.js +20 -0
- package/lib/pdfDeprecatedMatching.js.map +1 -0
- package/lib/pdfDimStrokeTexts.d.ts +55 -0
- package/lib/pdfDimStrokeTexts.d.ts.map +1 -0
- package/lib/pdfDimStrokeTexts.js +274 -0
- package/lib/pdfDimStrokeTexts.js.map +1 -0
- package/lib/pdfDimensionConvert.d.ts +80 -0
- package/lib/pdfDimensionConvert.d.ts.map +1 -0
- package/lib/pdfDimensionConvert.js +566 -0
- package/lib/pdfDimensionConvert.js.map +1 -0
- package/lib/pdfEntityStrokes.d.ts +13 -0
- package/lib/pdfEntityStrokes.d.ts.map +1 -0
- package/lib/pdfEntityStrokes.js +86 -0
- package/lib/pdfEntityStrokes.js.map +1 -0
- package/lib/pdfHatchRecover.d.ts +57 -0
- package/lib/pdfHatchRecover.d.ts.map +1 -0
- package/lib/pdfHatchRecover.js +315 -0
- package/lib/pdfHatchRecover.js.map +1 -0
- package/lib/pdfImportAppend.d.ts +24 -0
- package/lib/pdfImportAppend.d.ts.map +1 -0
- package/lib/pdfImportAppend.js +35 -0
- package/lib/pdfImportAppend.js.map +1 -0
- package/lib/pdfImportEntities.d.ts +63 -0
- package/lib/pdfImportEntities.d.ts.map +1 -0
- package/lib/pdfImportEntities.js +307 -0
- package/lib/pdfImportEntities.js.map +1 -0
- package/lib/pdfImportImages.d.ts +90 -0
- package/lib/pdfImportImages.d.ts.map +1 -0
- package/lib/pdfImportImages.js +294 -0
- package/lib/pdfImportImages.js.map +1 -0
- package/lib/pdfImportShapes.d.ts +63 -0
- package/lib/pdfImportShapes.d.ts.map +1 -0
- package/lib/pdfImportShapes.js +248 -0
- package/lib/pdfImportShapes.js.map +1 -0
- package/lib/pdfVectorImport.d.ts +218 -5
- package/lib/pdfVectorImport.d.ts.map +1 -1
- package/lib/pdfVectorImport.js +566 -98
- package/lib/pdfVectorImport.js.map +1 -1
- package/lib/recognition/pdfCurveRecognition.d.ts +91 -0
- package/lib/recognition/pdfCurveRecognition.d.ts.map +1 -0
- package/lib/recognition/pdfCurveRecognition.js +506 -0
- package/lib/recognition/pdfCurveRecognition.js.map +1 -0
- package/lib/recognition/pdfDimDigitRecognition.d.ts +18 -0
- package/lib/recognition/pdfDimDigitRecognition.d.ts.map +1 -0
- package/lib/recognition/pdfDimDigitRecognition.js +520 -0
- package/lib/recognition/pdfDimDigitRecognition.js.map +1 -0
- package/lib/recognition/pdfDimensionPattern.d.ts +173 -0
- package/lib/recognition/pdfDimensionPattern.d.ts.map +1 -0
- package/lib/recognition/pdfDimensionPattern.js +1023 -0
- package/lib/recognition/pdfDimensionPattern.js.map +1 -0
- package/lib/recognition/pdfFormBlocks.d.ts +58 -0
- package/lib/recognition/pdfFormBlocks.d.ts.map +1 -0
- package/lib/recognition/pdfFormBlocks.js +260 -0
- package/lib/recognition/pdfFormBlocks.js.map +1 -0
- package/lib/recognition/pdfGlyphClustering.d.ts +81 -0
- package/lib/recognition/pdfGlyphClustering.d.ts.map +1 -0
- package/lib/recognition/pdfGlyphClustering.js +1005 -0
- package/lib/recognition/pdfGlyphClustering.js.map +1 -0
- package/lib/recognition/pdfGlyphDictionary.d.ts +49 -0
- package/lib/recognition/pdfGlyphDictionary.d.ts.map +1 -0
- package/lib/recognition/pdfGlyphDictionary.js +188 -0
- package/lib/recognition/pdfGlyphDictionary.js.map +1 -0
- package/lib/recognition/pdfHatchFaces.d.ts +84 -0
- package/lib/recognition/pdfHatchFaces.d.ts.map +1 -0
- package/lib/recognition/pdfHatchFaces.js +1285 -0
- package/lib/recognition/pdfHatchFaces.js.map +1 -0
- package/lib/recognition/pdfHatchRecognition.d.ts +222 -0
- package/lib/recognition/pdfHatchRecognition.d.ts.map +1 -0
- package/lib/recognition/pdfHatchRecognition.js +3781 -0
- package/lib/recognition/pdfHatchRecognition.js.map +1 -0
- package/lib/recognition/pdfRecGeometry.d.ts +67 -0
- package/lib/recognition/pdfRecGeometry.d.ts.map +1 -0
- package/lib/recognition/pdfRecGeometry.js +365 -0
- package/lib/recognition/pdfRecGeometry.js.map +1 -0
- package/lib/recognition/pdfTextFontKind.d.ts +16 -0
- package/lib/recognition/pdfTextFontKind.d.ts.map +1 -0
- package/lib/recognition/pdfTextFontKind.js +51 -0
- package/lib/recognition/pdfTextFontKind.js.map +1 -0
- package/lib/recognition/pdfTextMerge.d.ts +71 -0
- package/lib/recognition/pdfTextMerge.d.ts.map +1 -0
- package/lib/recognition/pdfTextMerge.js +382 -0
- package/lib/recognition/pdfTextMerge.js.map +1 -0
- package/lib/recognition/pdfTextRunMerge.d.ts +28 -0
- package/lib/recognition/pdfTextRunMerge.d.ts.map +1 -0
- package/lib/recognition/pdfTextRunMerge.js +90 -0
- package/lib/recognition/pdfTextRunMerge.js.map +1 -0
- package/lib/register.d.ts +8 -2
- package/lib/register.d.ts.map +1 -1
- package/lib/register.js +29 -4
- package/lib/register.js.map +1 -1
- package/lib/ui/AcUiPdfDimPanel.d.ts +55 -0
- package/lib/ui/AcUiPdfDimPanel.d.ts.map +1 -0
- package/lib/ui/AcUiPdfDimPanel.js +347 -0
- package/lib/ui/AcUiPdfDimPanel.js.map +1 -0
- package/lib/ui/AcUiPdfHatchPanel.d.ts +57 -0
- package/lib/ui/AcUiPdfHatchPanel.d.ts.map +1 -0
- package/lib/ui/AcUiPdfHatchPanel.js +420 -0
- package/lib/ui/AcUiPdfHatchPanel.js.map +1 -0
- package/lib/ui/AcUiPdfImportDialog.d.ts +120 -0
- package/lib/ui/AcUiPdfImportDialog.d.ts.map +1 -0
- package/lib/ui/AcUiPdfImportDialog.js +673 -0
- package/lib/ui/AcUiPdfImportDialog.js.map +1 -0
- package/lib/ui/AcUiPdfTextPanel.d.ts +95 -0
- package/lib/ui/AcUiPdfTextPanel.d.ts.map +1 -0
- package/lib/ui/AcUiPdfTextPanel.js +775 -0
- package/lib/ui/AcUiPdfTextPanel.js.map +1 -0
- package/package.json +11 -11
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
26
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
27
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
28
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
|
+
function step(op) {
|
|
30
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
32
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
33
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
|
+
switch (op[0]) {
|
|
35
|
+
case 0: case 1: t = op; break;
|
|
36
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
37
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
38
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
39
|
+
default:
|
|
40
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
41
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
42
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
43
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
44
|
+
if (t[2]) _.ops.pop();
|
|
45
|
+
_.trys.pop(); continue;
|
|
46
|
+
}
|
|
47
|
+
op = body.call(thisArg, _);
|
|
48
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
49
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var __values = (this && this.__values) || function(o) {
|
|
53
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
54
|
+
if (m) return m.call(o);
|
|
55
|
+
if (o && typeof o.length === "number") return {
|
|
56
|
+
next: function () {
|
|
57
|
+
if (o && i >= o.length) o = void 0;
|
|
58
|
+
return { value: o && o[i++], done: !o };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
62
|
+
};
|
|
63
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
64
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
65
|
+
if (!m) return o;
|
|
66
|
+
var i = m.call(o), r, ar = [], e;
|
|
67
|
+
try {
|
|
68
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
69
|
+
}
|
|
70
|
+
catch (error) { e = { error: error }; }
|
|
71
|
+
finally {
|
|
72
|
+
try {
|
|
73
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
74
|
+
}
|
|
75
|
+
finally { if (e) throw e.error; }
|
|
76
|
+
}
|
|
77
|
+
return ar;
|
|
78
|
+
};
|
|
79
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
80
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
81
|
+
if (ar || !(i in from)) {
|
|
82
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
83
|
+
ar[i] = from[i];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
87
|
+
};
|
|
88
|
+
import { AcApI18n, AcApPaletteService, acapZoomToVisible, AcEdCommand, AcEdOpenMode, resolveSelectedEntities } from '@mlightcad/cad-simple-viewer';
|
|
89
|
+
import { AcGeBox2d, AcGePoint2d } from '@mlightcad/data-model';
|
|
90
|
+
import { AcApPdfDimSession } from './AcApPdfDimSession';
|
|
91
|
+
import { acapPdfT } from './acapPdfI18n';
|
|
92
|
+
import { AcApPdfTextCmd } from './AcApPdfTextCmd';
|
|
93
|
+
import { acapPdfCreateDimensions, acapPdfDisposeDimensionPreviews, pdfEntitiesToDimInput } from './pdfDimensionConvert';
|
|
94
|
+
import { acapPdfPrepareDimStrokeTexts } from './pdfDimStrokeTexts';
|
|
95
|
+
import { recognizePdfDimensions } from './recognition/pdfDimensionPattern';
|
|
96
|
+
import { AcUiPdfDimPanel } from './ui/AcUiPdfDimPanel';
|
|
97
|
+
/** Delay before an edit redraws the preview (ms). */
|
|
98
|
+
var PREVIEW_DELAY = 120;
|
|
99
|
+
/** Space around a dimension framed during the review. */
|
|
100
|
+
var FOCUS_MARGIN = 3;
|
|
101
|
+
/**
|
|
102
|
+
* `pdfdim`: turns exploded dimensions from a PDF back into dimension objects.
|
|
103
|
+
*
|
|
104
|
+
* 1. Select a region (a window around the dimensions is enough).
|
|
105
|
+
* 2. Arrowheads, dimension lines, extension lines and value texts (including
|
|
106
|
+
* exploded stroke digits) are recognized. A review panel opens in the
|
|
107
|
+
* palette: edit each value, pick or create a dim style, then Apply.
|
|
108
|
+
* 3. Without a DOM, every dimension found is converted directly.
|
|
109
|
+
*/
|
|
110
|
+
var AcApPdfDimCmd = /** @class */ (function (_super) {
|
|
111
|
+
__extends(AcApPdfDimCmd, _super);
|
|
112
|
+
function AcApPdfDimCmd() {
|
|
113
|
+
var _this = _super.call(this) || this;
|
|
114
|
+
_this.mode = AcEdOpenMode.Write;
|
|
115
|
+
return _this;
|
|
116
|
+
}
|
|
117
|
+
AcApPdfDimCmd.prototype.execute = function (context) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
119
|
+
var resolved, entityById, input, candidates, session, interactive, apply, accepted, styleName, scale;
|
|
120
|
+
return __generator(this, function (_a) {
|
|
121
|
+
switch (_a.label) {
|
|
122
|
+
case 0: return [4 /*yield*/, resolveSelectedEntities(context, {
|
|
123
|
+
promptKey: 'pdfdim'
|
|
124
|
+
})];
|
|
125
|
+
case 1:
|
|
126
|
+
resolved = _a.sent();
|
|
127
|
+
if (!resolved)
|
|
128
|
+
return [2 /*return*/];
|
|
129
|
+
context.view.selectionSet.clear();
|
|
130
|
+
entityById = new Map();
|
|
131
|
+
resolved.entities.forEach(function (entity, i) {
|
|
132
|
+
return entityById.set(resolved.ids[i], entity);
|
|
133
|
+
});
|
|
134
|
+
input = pdfEntitiesToDimInput(entityById);
|
|
135
|
+
acapPdfPrepareDimStrokeTexts(input, entityById, AcApPdfTextCmd.glyphDictionary);
|
|
136
|
+
candidates = recognizePdfDimensions(input);
|
|
137
|
+
session = new AcApPdfDimSession({
|
|
138
|
+
db: context.doc.database,
|
|
139
|
+
candidates: candidates
|
|
140
|
+
});
|
|
141
|
+
interactive = typeof document !== 'undefined';
|
|
142
|
+
if (session.rows.length === 0 && !interactive) {
|
|
143
|
+
this.notify(AcApI18n.t('jig.pdfdim.noDimensions'), 'warning');
|
|
144
|
+
return [2 /*return*/];
|
|
145
|
+
}
|
|
146
|
+
if (!interactive) return [3 /*break*/, 3];
|
|
147
|
+
if (session.rows.length === 0) {
|
|
148
|
+
this.notify(AcApI18n.t('jig.pdfdim.noDimensions'), 'warning');
|
|
149
|
+
}
|
|
150
|
+
return [4 /*yield*/, this.review(context, session, entityById)];
|
|
151
|
+
case 2:
|
|
152
|
+
apply = _a.sent();
|
|
153
|
+
if (!apply) {
|
|
154
|
+
this.notify(acapPdfT('jig.pdfdim.cancelled'));
|
|
155
|
+
return [2 /*return*/];
|
|
156
|
+
}
|
|
157
|
+
_a.label = 3;
|
|
158
|
+
case 3:
|
|
159
|
+
accepted = session.candidatesForApply();
|
|
160
|
+
if (accepted.length === 0)
|
|
161
|
+
return [2 /*return*/];
|
|
162
|
+
styleName = session.ensureStyle();
|
|
163
|
+
scale = session.scale;
|
|
164
|
+
acapPdfCreateDimensions(context.doc.database, accepted, scale, function (candidate) { var _a; return (_a = entityById.get(candidate.text.id)) === null || _a === void 0 ? void 0 : _a.layer; }, styleName);
|
|
165
|
+
context.doc.entityService.eraseEntities(accepted.flatMap(function (candidate) { return candidate.consumed; }));
|
|
166
|
+
this.notify(acapPdfT('jig.pdfdim.summary', {
|
|
167
|
+
count: accepted.length,
|
|
168
|
+
scale: formatScale(scale),
|
|
169
|
+
style: styleName
|
|
170
|
+
}));
|
|
171
|
+
return [2 /*return*/];
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Shows the review panel and previews recovered dimensions as transients
|
|
178
|
+
* until the user applies or cancels.
|
|
179
|
+
*/
|
|
180
|
+
AcApPdfDimCmd.prototype.review = function (context, session, entityById) {
|
|
181
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
182
|
+
var view, db, previews, hidden, hideStrokes, focused, timer, generation, settled, erasedIds, clearPreview, updateVisibility, refreshPreview, schedulePreview, focus, finish, result, panelHost, handle, panel;
|
|
183
|
+
return __generator(this, function (_a) {
|
|
184
|
+
switch (_a.label) {
|
|
185
|
+
case 0:
|
|
186
|
+
view = context.view;
|
|
187
|
+
db = context.doc.database;
|
|
188
|
+
previews = [];
|
|
189
|
+
hidden = new Set();
|
|
190
|
+
hideStrokes = true;
|
|
191
|
+
focused = [];
|
|
192
|
+
generation = 0;
|
|
193
|
+
settled = false;
|
|
194
|
+
erasedIds = function () {
|
|
195
|
+
return new Set(session.rows.flatMap(function (row) {
|
|
196
|
+
return row.included ? row.candidate.consumed : [];
|
|
197
|
+
}));
|
|
198
|
+
};
|
|
199
|
+
clearPreview = function () {
|
|
200
|
+
var e_1, _a;
|
|
201
|
+
try {
|
|
202
|
+
for (var previews_1 = __values(previews), previews_1_1 = previews_1.next(); !previews_1_1.done; previews_1_1 = previews_1.next()) {
|
|
203
|
+
var entity = previews_1_1.value;
|
|
204
|
+
view.removeTransientEntity(entity.objectId);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
208
|
+
finally {
|
|
209
|
+
try {
|
|
210
|
+
if (previews_1_1 && !previews_1_1.done && (_a = previews_1.return)) _a.call(previews_1);
|
|
211
|
+
}
|
|
212
|
+
finally { if (e_1) throw e_1.error; }
|
|
213
|
+
}
|
|
214
|
+
if (previews.length > 0)
|
|
215
|
+
acapPdfDisposeDimensionPreviews(db, previews);
|
|
216
|
+
previews = [];
|
|
217
|
+
};
|
|
218
|
+
updateVisibility = function () {
|
|
219
|
+
var e_2, _a, e_3, _b, e_4, _c;
|
|
220
|
+
// Hide every consumed stroke when requested — including the focused row.
|
|
221
|
+
// (Hatch review keeps the focused boundary visible; here the transient
|
|
222
|
+
// dimension is the preview, so leaving originals visible looks broken.)
|
|
223
|
+
var want = new Set();
|
|
224
|
+
if (hideStrokes) {
|
|
225
|
+
try {
|
|
226
|
+
for (var _d = __values(erasedIds()), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
227
|
+
var id = _e.value;
|
|
228
|
+
want.add(id);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
232
|
+
finally {
|
|
233
|
+
try {
|
|
234
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
235
|
+
}
|
|
236
|
+
finally { if (e_2) throw e_2.error; }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
for (var _f = __values(__spreadArray([], __read(hidden), false)), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
241
|
+
var id = _g.value;
|
|
242
|
+
if (want.has(id))
|
|
243
|
+
continue;
|
|
244
|
+
view.setEntitySceneVisible(id, true);
|
|
245
|
+
hidden.delete(id);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
249
|
+
finally {
|
|
250
|
+
try {
|
|
251
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
252
|
+
}
|
|
253
|
+
finally { if (e_3) throw e_3.error; }
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
for (var want_1 = __values(want), want_1_1 = want_1.next(); !want_1_1.done; want_1_1 = want_1.next()) {
|
|
257
|
+
var id = want_1_1.value;
|
|
258
|
+
if (hidden.has(id))
|
|
259
|
+
continue;
|
|
260
|
+
view.setEntitySceneVisible(id, false);
|
|
261
|
+
hidden.add(id);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
265
|
+
finally {
|
|
266
|
+
try {
|
|
267
|
+
if (want_1_1 && !want_1_1.done && (_c = want_1.return)) _c.call(want_1);
|
|
268
|
+
}
|
|
269
|
+
finally { if (e_4) throw e_4.error; }
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
refreshPreview = function () {
|
|
273
|
+
var gen = ++generation;
|
|
274
|
+
clearPreview();
|
|
275
|
+
var accepted = session.candidatesForApply();
|
|
276
|
+
if (accepted.length === 0) {
|
|
277
|
+
updateVisibility();
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
// Preview must not call ensureStyle(): Cancel should leave the dim-style
|
|
281
|
+
// table untouched (same contract as pdfhatch / pdftext).
|
|
282
|
+
var created = acapPdfCreateDimensions(db, accepted, session.scale, function (candidate) { var _a; return (_a = entityById.get(candidate.text.id)) === null || _a === void 0 ? void 0 : _a.layer; }, session.workingStyleName, {
|
|
283
|
+
append: false,
|
|
284
|
+
appearanceFrom: session.appearanceFromStyle
|
|
285
|
+
});
|
|
286
|
+
if (gen !== generation) {
|
|
287
|
+
acapPdfDisposeDimensionPreviews(db, created);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
previews = created;
|
|
291
|
+
if (previews.length > 0)
|
|
292
|
+
view.addTransientEntity(previews);
|
|
293
|
+
updateVisibility();
|
|
294
|
+
};
|
|
295
|
+
schedulePreview = function () {
|
|
296
|
+
if (timer)
|
|
297
|
+
clearTimeout(timer);
|
|
298
|
+
timer = setTimeout(function () {
|
|
299
|
+
timer = undefined;
|
|
300
|
+
refreshPreview();
|
|
301
|
+
}, PREVIEW_DELAY);
|
|
302
|
+
};
|
|
303
|
+
focus = function (row, zoom) {
|
|
304
|
+
if (focused.length > 0)
|
|
305
|
+
view.unhighlight(focused);
|
|
306
|
+
focused = row ? __spreadArray([], __read(row.candidate.consumed), false) : [];
|
|
307
|
+
updateVisibility();
|
|
308
|
+
if (focused.length > 0)
|
|
309
|
+
view.highlight(focused);
|
|
310
|
+
if (!row || !zoom)
|
|
311
|
+
return;
|
|
312
|
+
var box = idsBox(row.candidate.consumed, entityById);
|
|
313
|
+
if (box) {
|
|
314
|
+
acapZoomToVisible(view, box, FOCUS_MARGIN, handle.coveredInsets(view.canvas));
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
finish = function () { };
|
|
318
|
+
result = new Promise(function (resolve) {
|
|
319
|
+
finish = function (apply) {
|
|
320
|
+
if (settled)
|
|
321
|
+
return;
|
|
322
|
+
settled = true;
|
|
323
|
+
resolve(apply);
|
|
324
|
+
};
|
|
325
|
+
});
|
|
326
|
+
panelHost = document.createElement('div');
|
|
327
|
+
handle = AcApPaletteService.open({
|
|
328
|
+
id: 'pdfdim',
|
|
329
|
+
title: acapPdfT('jig.pdfdim.panel.title'),
|
|
330
|
+
element: panelHost
|
|
331
|
+
}, { container: view.container });
|
|
332
|
+
handle.onClosed(function () { return finish(false); });
|
|
333
|
+
panel = new AcUiPdfDimPanel({
|
|
334
|
+
session: session,
|
|
335
|
+
hideStrokes: hideStrokes,
|
|
336
|
+
onChange: schedulePreview,
|
|
337
|
+
onFocusRow: focus,
|
|
338
|
+
onHideStrokes: function (hide) {
|
|
339
|
+
hideStrokes = hide;
|
|
340
|
+
updateVisibility();
|
|
341
|
+
},
|
|
342
|
+
onClose: function (apply) { return finish(apply); }
|
|
343
|
+
});
|
|
344
|
+
panelHost.appendChild(panel.element);
|
|
345
|
+
_a.label = 1;
|
|
346
|
+
case 1:
|
|
347
|
+
_a.trys.push([1, , 3, 4]);
|
|
348
|
+
panel.selectFirst();
|
|
349
|
+
refreshPreview();
|
|
350
|
+
return [4 /*yield*/, result];
|
|
351
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
352
|
+
case 3:
|
|
353
|
+
if (timer)
|
|
354
|
+
clearTimeout(timer);
|
|
355
|
+
generation++;
|
|
356
|
+
clearPreview();
|
|
357
|
+
if (focused.length > 0)
|
|
358
|
+
view.unhighlight(focused);
|
|
359
|
+
focused = [];
|
|
360
|
+
hideStrokes = false;
|
|
361
|
+
updateVisibility();
|
|
362
|
+
handle.close();
|
|
363
|
+
panel.destroy();
|
|
364
|
+
return [7 /*endfinally*/];
|
|
365
|
+
case 4: return [2 /*return*/];
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
});
|
|
369
|
+
};
|
|
370
|
+
return AcApPdfDimCmd;
|
|
371
|
+
}(AcEdCommand));
|
|
372
|
+
export { AcApPdfDimCmd };
|
|
373
|
+
function idsBox(ids, entityById) {
|
|
374
|
+
var e_5, _a;
|
|
375
|
+
var minX = Infinity;
|
|
376
|
+
var minY = Infinity;
|
|
377
|
+
var maxX = -Infinity;
|
|
378
|
+
var maxY = -Infinity;
|
|
379
|
+
try {
|
|
380
|
+
for (var ids_1 = __values(ids), ids_1_1 = ids_1.next(); !ids_1_1.done; ids_1_1 = ids_1.next()) {
|
|
381
|
+
var id = ids_1_1.value;
|
|
382
|
+
var entity = entityById.get(id);
|
|
383
|
+
if (!entity)
|
|
384
|
+
continue;
|
|
385
|
+
try {
|
|
386
|
+
var box = entity.geometricExtents;
|
|
387
|
+
if (!box)
|
|
388
|
+
continue;
|
|
389
|
+
minX = Math.min(minX, box.min.x);
|
|
390
|
+
minY = Math.min(minY, box.min.y);
|
|
391
|
+
maxX = Math.max(maxX, box.max.x);
|
|
392
|
+
maxY = Math.max(maxY, box.max.y);
|
|
393
|
+
}
|
|
394
|
+
catch (_b) {
|
|
395
|
+
// Fonts / empty geometry.
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
400
|
+
finally {
|
|
401
|
+
try {
|
|
402
|
+
if (ids_1_1 && !ids_1_1.done && (_a = ids_1.return)) _a.call(ids_1);
|
|
403
|
+
}
|
|
404
|
+
finally { if (e_5) throw e_5.error; }
|
|
405
|
+
}
|
|
406
|
+
if (!Number.isFinite(minX))
|
|
407
|
+
return undefined;
|
|
408
|
+
return new AcGeBox2d(new AcGePoint2d(minX, minY), new AcGePoint2d(maxX, maxY));
|
|
409
|
+
}
|
|
410
|
+
function formatScale(scale) {
|
|
411
|
+
return Number(scale.toPrecision(6)).toString();
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=AcApPdfDimCmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcApPdfDimCmd.js","sourceRoot":"","sources":["../src/AcApPdfDimCmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type AcDbDatabase, AcDbDimStyleTableRecord } from '@mlightcad/data-model';
|
|
2
|
+
import { PDF_DIM_STYLE } from './pdfDimensionConvert';
|
|
3
|
+
import { type PdfDimensionCandidate } from './recognition/pdfDimensionPattern';
|
|
4
|
+
export { PDF_DIM_STYLE };
|
|
5
|
+
/** One recovered dimension under review. */
|
|
6
|
+
export interface PdfDimRow<Id> {
|
|
7
|
+
readonly key: number;
|
|
8
|
+
candidate: PdfDimensionCandidate<Id>;
|
|
9
|
+
/** Editable dimension value / override text. */
|
|
10
|
+
text: string;
|
|
11
|
+
/** Whether the dimension is created on Apply. */
|
|
12
|
+
included: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Why a new dim style name is rejected. */
|
|
15
|
+
export type PdfDimStyleNameError = 'empty' | 'invalid' | 'exists';
|
|
16
|
+
/** Input of {@link AcApPdfDimSession}. */
|
|
17
|
+
export interface AcApPdfDimSessionInput<Id> {
|
|
18
|
+
db: AcDbDatabase;
|
|
19
|
+
candidates: PdfDimensionCandidate<Id>[];
|
|
20
|
+
/** Initial style name (existing or {@link PDF_DIM_STYLE}). */
|
|
21
|
+
styleName?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* State of a `pdfdim` review: recovered dimensions, editable texts, and the
|
|
25
|
+
* dim style to create them with. UI-free so the panel stays a thin view.
|
|
26
|
+
*/
|
|
27
|
+
export declare class AcApPdfDimSession<Id> {
|
|
28
|
+
readonly rows: PdfDimRow<Id>[];
|
|
29
|
+
readonly db: AcDbDatabase;
|
|
30
|
+
private nextKey;
|
|
31
|
+
private _styleName;
|
|
32
|
+
private _isNewStyle;
|
|
33
|
+
private readonly _baseStyleName;
|
|
34
|
+
constructor(options: AcApPdfDimSessionInput<Id>);
|
|
35
|
+
/** Rows created on Apply. */
|
|
36
|
+
get readyRows(): PdfDimRow<Id>[];
|
|
37
|
+
get styleName(): string;
|
|
38
|
+
get isNewStyle(): boolean;
|
|
39
|
+
/** Drawing scale implied by the included rows' texts. */
|
|
40
|
+
get scale(): number;
|
|
41
|
+
/**
|
|
42
|
+
* Style name written on created dimensions (preview and Apply). Recovered
|
|
43
|
+
* paper sizes are pinned via entity overrides, so picking an existing style
|
|
44
|
+
* does not rewrite that style's table record.
|
|
45
|
+
*/
|
|
46
|
+
get workingStyleName(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Style whose appearance is blended while baking dim blocks when the working
|
|
49
|
+
* style is not in the table yet (a newly named style before Apply). Existing
|
|
50
|
+
* picks use the style itself — no separate blend source.
|
|
51
|
+
*/
|
|
52
|
+
get appearanceFromStyle(): string | undefined;
|
|
53
|
+
/** Existing dim style names (skip anonymous `*…` records). */
|
|
54
|
+
styleNames(): string[];
|
|
55
|
+
setIncluded(row: PdfDimRow<Id>, included: boolean): void;
|
|
56
|
+
setText(row: PdfDimRow<Id>, text: string): void;
|
|
57
|
+
/** Selects an existing dim style. */
|
|
58
|
+
selectStyle(name: string): void;
|
|
59
|
+
/** Starts creating a new style (name empty until {@link commitNewStyleName}). */
|
|
60
|
+
beginNewStyle(): void;
|
|
61
|
+
validateNewStyleName(name: string): PdfDimStyleNameError | undefined;
|
|
62
|
+
/** Confirms the new style name; returns an error without changing state. */
|
|
63
|
+
commitNewStyleName(name: string): PdfDimStyleNameError | undefined;
|
|
64
|
+
/** Candidates ready to convert, with the edited text applied. */
|
|
65
|
+
candidatesForApply(): PdfDimensionCandidate<Id>[];
|
|
66
|
+
/**
|
|
67
|
+
* Style record for the palette SVG: the selected style's full appearance
|
|
68
|
+
* (arrows, colours, text placement) with only recovered paper sizes blended
|
|
69
|
+
* in. Metrics that encode recovered terminators (dimblk, dimtad, …) are not
|
|
70
|
+
* applied here — otherwise every style would look identical in the preview.
|
|
71
|
+
*/
|
|
72
|
+
previewStyleRecord(): AcDbDimStyleTableRecord;
|
|
73
|
+
/**
|
|
74
|
+
* Ensures the working dim style exists when it is {@link PDF_DIM_STYLE} or a
|
|
75
|
+
* newly created name (recovered sizes written into that record). An existing
|
|
76
|
+
* style the user picked is left untouched — sizes go on entity overrides.
|
|
77
|
+
* Returns the style name to assign on new dimensions.
|
|
78
|
+
*/
|
|
79
|
+
ensureStyle(): string;
|
|
80
|
+
private createStyleFromBase;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=AcApPdfDimSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcApPdfDimSession.d.ts","sourceRoot":"","sources":["../src/AcApPdfDimSession.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EACjB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAIL,aAAa,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,CAAA;AAExB,4CAA4C;AAC5C,MAAM,WAAW,SAAS,CAAC,EAAE;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAA;IACpC,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEjE,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB,CAAC,EAAE;IACxC,EAAE,EAAE,YAAY,CAAA;IAChB,UAAU,EAAE,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAA;IACvC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,iBAAiB,CAAC,EAAE;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAK;IACnC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAA;IACzB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAE3B,OAAO,EAAE,sBAAsB,CAAC,EAAE,CAAC;IAgB/C,6BAA6B;IAC7B,IAAI,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAE/B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,yDAAyD;IACzD,IAAI,KAAK,IAAI,MAAM,CAMlB;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAI5C;IAED,8DAA8D;IAC9D,UAAU,IAAI,MAAM,EAAE;IAWtB,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO;IAIjD,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM;IAIxC,qCAAqC;IACrC,WAAW,CAAC,IAAI,EAAE,MAAM;IAKxB,iFAAiF;IACjF,aAAa;IAKb,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAcpE,4EAA4E;IAC5E,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAQlE,iEAAiE;IACjE,kBAAkB,IAAI,qBAAqB,CAAC,EAAE,CAAC,EAAE;IAOjD;;;;;OAKG;IACH,kBAAkB,IAAI,uBAAuB;IA0B7C;;;;;OAKG;IACH,WAAW,IAAI,MAAM;IAsBrB,OAAO,CAAC,mBAAmB;CAS5B"}
|