@mlightcad/cad-simple-viewer 1.4.12 → 1.4.13

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 (160) hide show
  1. package/dist/index.js +15901 -10590
  2. package/dist/index.umd.cjs +55 -48
  3. package/dist/libredwg-parser-worker.js +4724 -4762
  4. package/lib/app/AcApDocManager.d.ts +60 -4
  5. package/lib/app/AcApDocManager.d.ts.map +1 -1
  6. package/lib/app/AcApDocManager.js +160 -33
  7. package/lib/app/AcApDocManager.js.map +1 -1
  8. package/lib/command/AcApArcCmd.d.ts.map +1 -1
  9. package/lib/command/AcApArcCmd.js +1 -1
  10. package/lib/command/AcApArcCmd.js.map +1 -1
  11. package/lib/command/AcApCircleCmd.d.ts +59 -0
  12. package/lib/command/AcApCircleCmd.d.ts.map +1 -1
  13. package/lib/command/AcApCircleCmd.js +489 -18
  14. package/lib/command/AcApCircleCmd.js.map +1 -1
  15. package/lib/command/AcApConvertToPngCmd.d.ts +35 -0
  16. package/lib/command/AcApConvertToPngCmd.d.ts.map +1 -0
  17. package/lib/command/{AcApZoomToBoxCmd.js → AcApConvertToPngCmd.js} +50 -26
  18. package/lib/command/AcApConvertToPngCmd.js.map +1 -0
  19. package/lib/command/AcApEllipseCmd.d.ts +87 -0
  20. package/lib/command/AcApEllipseCmd.d.ts.map +1 -0
  21. package/lib/command/AcApEllipseCmd.js +583 -0
  22. package/lib/command/AcApEllipseCmd.js.map +1 -0
  23. package/lib/command/AcApHatchCmd.d.ts +210 -0
  24. package/lib/command/AcApHatchCmd.d.ts.map +1 -0
  25. package/lib/command/AcApHatchCmd.js +808 -0
  26. package/lib/command/AcApHatchCmd.js.map +1 -0
  27. package/lib/command/AcApLayerCmd.d.ts +217 -0
  28. package/lib/command/AcApLayerCmd.d.ts.map +1 -0
  29. package/lib/command/AcApLayerCmd.js +768 -0
  30. package/lib/command/AcApLayerCmd.js.map +1 -0
  31. package/lib/command/AcApLineCmd.d.ts +36 -1
  32. package/lib/command/AcApLineCmd.d.ts.map +1 -1
  33. package/lib/command/AcApLineCmd.js +157 -20
  34. package/lib/command/AcApLineCmd.js.map +1 -1
  35. package/lib/command/AcApMeasureAreaCmd.d.ts.map +1 -1
  36. package/lib/command/AcApMeasureAreaCmd.js +3 -0
  37. package/lib/command/AcApMeasureAreaCmd.js.map +1 -1
  38. package/lib/command/AcApMoveCmd.d.ts +16 -0
  39. package/lib/command/AcApMoveCmd.d.ts.map +1 -0
  40. package/lib/command/AcApMoveCmd.js +278 -0
  41. package/lib/command/AcApMoveCmd.js.map +1 -0
  42. package/lib/command/AcApPngConvertor.d.ts +95 -0
  43. package/lib/command/AcApPngConvertor.d.ts.map +1 -0
  44. package/lib/command/AcApPngConvertor.js +205 -0
  45. package/lib/command/AcApPngConvertor.js.map +1 -0
  46. package/lib/command/AcApPolygonCmd.d.ts +69 -0
  47. package/lib/command/AcApPolygonCmd.d.ts.map +1 -0
  48. package/lib/command/AcApPolygonCmd.js +422 -0
  49. package/lib/command/AcApPolygonCmd.js.map +1 -0
  50. package/lib/command/AcApRectCmd.d.ts +149 -4
  51. package/lib/command/AcApRectCmd.d.ts.map +1 -1
  52. package/lib/command/AcApRectCmd.js +716 -34
  53. package/lib/command/AcApRectCmd.js.map +1 -1
  54. package/lib/command/AcApRevCircleCmd.d.ts +8 -0
  55. package/lib/command/AcApRevCircleCmd.d.ts.map +1 -1
  56. package/lib/command/AcApRevCircleCmd.js +30 -6
  57. package/lib/command/AcApRevCircleCmd.js.map +1 -1
  58. package/lib/command/AcApRevRectCmd.d.ts +8 -0
  59. package/lib/command/AcApRevRectCmd.d.ts.map +1 -1
  60. package/lib/command/AcApRevRectCmd.js +78 -6
  61. package/lib/command/AcApRevRectCmd.js.map +1 -1
  62. package/lib/command/AcApSplineCmd.d.ts +66 -1
  63. package/lib/command/AcApSplineCmd.d.ts.map +1 -1
  64. package/lib/command/AcApSplineCmd.js +466 -59
  65. package/lib/command/AcApSplineCmd.js.map +1 -1
  66. package/lib/command/AcApZoomCmd.d.ts +91 -20
  67. package/lib/command/AcApZoomCmd.d.ts.map +1 -1
  68. package/lib/command/AcApZoomCmd.js +288 -23
  69. package/lib/command/AcApZoomCmd.js.map +1 -1
  70. package/lib/command/index.d.ts +7 -1
  71. package/lib/command/index.d.ts.map +1 -1
  72. package/lib/command/index.js +7 -1
  73. package/lib/command/index.js.map +1 -1
  74. package/lib/editor/command/AcEdCommandStack.d.ts +54 -1
  75. package/lib/editor/command/AcEdCommandStack.d.ts.map +1 -1
  76. package/lib/editor/command/AcEdCommandStack.js +207 -25
  77. package/lib/editor/command/AcEdCommandStack.js.map +1 -1
  78. package/lib/editor/input/AcEdSelectionFilter.d.ts +79 -0
  79. package/lib/editor/input/AcEdSelectionFilter.d.ts.map +1 -0
  80. package/lib/editor/input/AcEdSelectionFilter.js +231 -0
  81. package/lib/editor/input/AcEdSelectionFilter.js.map +1 -0
  82. package/lib/editor/input/AcEditor.d.ts +20 -2
  83. package/lib/editor/input/AcEditor.d.ts.map +1 -1
  84. package/lib/editor/input/AcEditor.js +66 -0
  85. package/lib/editor/input/AcEditor.js.map +1 -1
  86. package/lib/editor/input/index.d.ts +1 -0
  87. package/lib/editor/input/index.d.ts.map +1 -1
  88. package/lib/editor/input/index.js +1 -0
  89. package/lib/editor/input/index.js.map +1 -1
  90. package/lib/editor/input/prompt/AcEdKeywordCollection.d.ts +47 -0
  91. package/lib/editor/input/prompt/AcEdKeywordCollection.d.ts.map +1 -1
  92. package/lib/editor/input/prompt/AcEdKeywordCollection.js +19 -0
  93. package/lib/editor/input/prompt/AcEdKeywordCollection.js.map +1 -1
  94. package/lib/editor/input/prompt/AcEdPromptAngleOptions.d.ts +7 -0
  95. package/lib/editor/input/prompt/AcEdPromptAngleOptions.d.ts.map +1 -1
  96. package/lib/editor/input/prompt/AcEdPromptAngleOptions.js +17 -0
  97. package/lib/editor/input/prompt/AcEdPromptAngleOptions.js.map +1 -1
  98. package/lib/editor/input/prompt/AcEdPromptEntityOptions.d.ts +17 -0
  99. package/lib/editor/input/prompt/AcEdPromptEntityOptions.d.ts.map +1 -1
  100. package/lib/editor/input/prompt/AcEdPromptEntityOptions.js +30 -3
  101. package/lib/editor/input/prompt/AcEdPromptEntityOptions.js.map +1 -1
  102. package/lib/editor/input/prompt/AcEdPromptOptions.d.ts +6 -1
  103. package/lib/editor/input/prompt/AcEdPromptOptions.d.ts.map +1 -1
  104. package/lib/editor/input/prompt/AcEdPromptOptions.js +7 -0
  105. package/lib/editor/input/prompt/AcEdPromptOptions.js.map +1 -1
  106. package/lib/editor/input/session/AcEdKeywordSession.d.ts +65 -0
  107. package/lib/editor/input/session/AcEdKeywordSession.d.ts.map +1 -1
  108. package/lib/editor/input/session/AcEdKeywordSession.js +71 -0
  109. package/lib/editor/input/session/AcEdKeywordSession.js.map +1 -1
  110. package/lib/editor/input/ui/AcEdCommandLine.d.ts +23 -0
  111. package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
  112. package/lib/editor/input/ui/AcEdCommandLine.js +42 -6
  113. package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
  114. package/lib/editor/input/ui/AcEdFloatingInput.d.ts +1 -0
  115. package/lib/editor/input/ui/AcEdFloatingInput.d.ts.map +1 -1
  116. package/lib/editor/input/ui/AcEdFloatingInput.js +8 -2
  117. package/lib/editor/input/ui/AcEdFloatingInput.js.map +1 -1
  118. package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts +23 -1
  119. package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts.map +1 -1
  120. package/lib/editor/input/ui/AcEdFloatingInputBoxes.js +32 -9
  121. package/lib/editor/input/ui/AcEdFloatingInputBoxes.js.map +1 -1
  122. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts +28 -0
  123. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts.map +1 -1
  124. package/lib/editor/input/ui/AcEdInputManager.d.ts +356 -16
  125. package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
  126. package/lib/editor/input/ui/AcEdInputManager.js +964 -529
  127. package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
  128. package/lib/editor/input/ui/AcEdRubberBand.d.ts +15 -1
  129. package/lib/editor/input/ui/AcEdRubberBand.d.ts.map +1 -1
  130. package/lib/editor/input/ui/AcEdRubberBand.js +42 -10
  131. package/lib/editor/input/ui/AcEdRubberBand.js.map +1 -1
  132. package/lib/i18n/en/command.d.ts +21 -3
  133. package/lib/i18n/en/command.d.ts.map +1 -1
  134. package/lib/i18n/en/command.js +21 -3
  135. package/lib/i18n/en/command.js.map +1 -1
  136. package/lib/i18n/en/jig.d.ts +443 -0
  137. package/lib/i18n/en/jig.d.ts.map +1 -1
  138. package/lib/i18n/en/jig.js +452 -9
  139. package/lib/i18n/en/jig.js.map +1 -1
  140. package/lib/i18n/zh/command.d.ts +21 -3
  141. package/lib/i18n/zh/command.d.ts.map +1 -1
  142. package/lib/i18n/zh/command.js +21 -3
  143. package/lib/i18n/zh/command.js.map +1 -1
  144. package/lib/i18n/zh/jig.d.ts +443 -0
  145. package/lib/i18n/zh/jig.d.ts.map +1 -1
  146. package/lib/i18n/zh/jig.js +452 -9
  147. package/lib/i18n/zh/jig.js.map +1 -1
  148. package/lib/plugin/AcApPluginManager.d.ts.map +1 -1
  149. package/lib/plugin/AcApPluginManager.js.map +1 -1
  150. package/lib/view/AcTrLayer.d.ts.map +1 -1
  151. package/lib/view/AcTrLayer.js +5 -3
  152. package/lib/view/AcTrLayer.js.map +1 -1
  153. package/lib/view/AcTrView2d.d.ts +0 -1
  154. package/lib/view/AcTrView2d.d.ts.map +1 -1
  155. package/lib/view/AcTrView2d.js +17 -4
  156. package/lib/view/AcTrView2d.js.map +1 -1
  157. package/package.json +11 -9
  158. package/lib/command/AcApZoomToBoxCmd.d.ts +0 -29
  159. package/lib/command/AcApZoomToBoxCmd.d.ts.map +0 -1
  160. package/lib/command/AcApZoomToBoxCmd.js.map +0 -1
@@ -76,51 +76,94 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
76
76
  };
77
77
  import { AcDbSpline, AcGePoint2d, AcGePoint3d } from '@mlightcad/data-model';
78
78
  import { AcApDocManager } from '../app';
79
- import { AcEdCommand, AcEdOpenMode, AcEdPreviewJig, AcEdPromptPointOptions, AcEdPromptStatus } from '../editor';
79
+ import { AcEdCommand, AcEdOpenMode, AcEdPreviewJig, AcEdPromptIntegerOptions, AcEdPromptKeywordOptions, AcEdPromptPointOptions, AcEdPromptStateMachine, AcEdPromptStatus } from '../editor';
80
80
  import { AcApI18n } from '../i18n';
81
+ /**
82
+ * Dynamic preview jig for SPLINE command.
83
+ *
84
+ * Reuses a transient spline entity and rebuilds it on each cursor move.
85
+ */
81
86
  var AcApSplineJig = /** @class */ (function (_super) {
82
87
  __extends(AcApSplineJig, _super);
83
- function AcApSplineJig(view, points) {
88
+ /**
89
+ * Creates a dynamic spline preview jig.
90
+ *
91
+ * @param view - Active editor view.
92
+ * @param points - Accepted points before the dynamic cursor point.
93
+ * @param settings - Current method/degree/knots settings.
94
+ * @param closed - Closed flag used for preview behavior.
95
+ */
96
+ function AcApSplineJig(view, points, settings, closed) {
84
97
  var _this = _super.call(this, view) || this;
85
98
  _this._points = points;
99
+ _this._settings = settings;
100
+ _this._closed = closed;
86
101
  _this._spline = _this.createSpline(points);
87
102
  return _this;
88
103
  }
89
104
  Object.defineProperty(AcApSplineJig.prototype, "entity", {
105
+ /**
106
+ * Gets transient spline entity used by this jig.
107
+ */
90
108
  get: function () {
91
109
  return this._spline;
92
110
  },
93
111
  enumerable: false,
94
112
  configurable: true
95
113
  });
114
+ /**
115
+ * Rebuilds preview spline by combining fixed points with cursor point.
116
+ *
117
+ * @param point - Current cursor/input point.
118
+ */
96
119
  AcApSplineJig.prototype.update = function (point) {
97
- var newPoints = __spreadArray(__spreadArray([], __read(this._points), false), [new AcGePoint2d(point)], false);
98
- this.rebuildSpline(newPoints);
120
+ var dynamicPoint = new AcGePoint2d(point);
121
+ var lastPoint = this._points[this._points.length - 1];
122
+ var hasDistinctDynamicPoint = !lastPoint || !isNearlySamePoint2d(lastPoint, dynamicPoint);
123
+ var newPoints = hasDistinctDynamicPoint
124
+ ? __spreadArray(__spreadArray([], __read(this._points), false), [dynamicPoint], false) : __spreadArray([], __read(this._points), false);
125
+ try {
126
+ this.rebuildSpline(newPoints);
127
+ }
128
+ catch (_a) {
129
+ // Keep the command alive even when temporary preview points
130
+ // produce a degenerate interpolation system.
131
+ this.rebuildSpline(this._points);
132
+ }
99
133
  };
134
+ /**
135
+ * Creates initial spline entity from current settings.
136
+ *
137
+ * @param points - Initial fixed points.
138
+ * @returns New spline entity.
139
+ */
100
140
  AcApSplineJig.prototype.createSpline = function (points) {
101
- if (points.length < 2) {
102
- var defaultPoints = [new AcGePoint3d(0, 0, 0), new AcGePoint3d(1, 1, 0)];
103
- var degree_1 = 1;
104
- var knots_1 = createKnots(defaultPoints.length, degree_1);
105
- return new AcDbSpline(defaultPoints, knots_1, undefined, degree_1, false);
106
- }
107
- var points3d = points.map(function (p) { return new AcGePoint3d(p.x, p.y, 0); });
108
- var degree = Math.min(3, Math.max(1, points3d.length - 1));
109
- var knots = createKnots(points3d.length, degree);
110
- return new AcDbSpline(points3d, knots, undefined, degree, false);
141
+ return buildSplineEntity(points, this._settings, this._closed);
111
142
  };
143
+ /**
144
+ * Rebuilds existing transient spline without replacing entity instance.
145
+ *
146
+ * @param points - Point list used for rebuild.
147
+ */
112
148
  AcApSplineJig.prototype.rebuildSpline = function (points) {
113
149
  if (points.length < 2) {
114
150
  var defaultPoints = [new AcGePoint3d(0, 0, 0), new AcGePoint3d(1, 1, 0)];
115
- var degree = 1;
116
- var knots = createKnots(defaultPoints.length, degree);
117
- this._spline.rebuild(defaultPoints, knots, undefined, degree, false);
151
+ var defaultDegree = 1;
152
+ var defaultKnots = createKnots(defaultPoints.length, defaultDegree);
153
+ this._spline.rebuild(defaultPoints, defaultKnots, undefined, defaultDegree);
154
+ return;
118
155
  }
119
- else {
120
- var points3d = points.map(function (p) { return new AcGePoint3d(p.x, p.y, 0); });
121
- var degree = Math.min(3, Math.max(1, points3d.length - 1));
122
- var knots = createKnots(points3d.length, degree);
123
- this._spline.rebuild(points3d, knots, undefined, degree, false);
156
+ var points3d = points.map(function (p) { return new AcGePoint3d(p.x, p.y, 0); });
157
+ var degree = resolveSplineDegree(points3d.length, this._settings);
158
+ var isClosed = this._closed && points3d.length >= 3;
159
+ if (this._settings.method === 'fit') {
160
+ this._spline.rebuild(points3d, mapKnotsTypeToParameterization(this._settings.knotsType), degree, isClosed);
161
+ return;
162
+ }
163
+ var knots = createKnots(points3d.length, degree);
164
+ this._spline.rebuild(points3d, knots, undefined, degree, false);
165
+ if (isClosed) {
166
+ this._spline.closed = true;
124
167
  }
125
168
  };
126
169
  return AcApSplineJig;
@@ -131,59 +174,314 @@ export { AcApSplineJig };
131
174
  */
132
175
  var AcApSplineCmd = /** @class */ (function (_super) {
133
176
  __extends(AcApSplineCmd, _super);
177
+ /**
178
+ * Creates SPLINE command instance.
179
+ */
134
180
  function AcApSplineCmd() {
135
181
  var _this = _super.call(this) || this;
136
182
  _this.mode = AcEdOpenMode.Write;
137
183
  return _this;
138
184
  }
185
+ /**
186
+ * Command entry point.
187
+ *
188
+ * Uses a point-prompt state machine to support Fit/CV workflows, dynamic
189
+ * method switching, undo, close, and option prompts.
190
+ *
191
+ * @param context - Current application/document context.
192
+ */
139
193
  AcApSplineCmd.prototype.execute = function (context) {
140
194
  return __awaiter(this, void 0, void 0, function () {
141
- var points, currentPoint, firstPointPrompt, firstPointResult, nextPointPrompt, nextPointResult, _a, db, points3d, degree, knots, spline;
142
- return __generator(this, function (_b) {
143
- switch (_b.label) {
195
+ var points, settings, closed, appendPoint, undoLast, getCurrentPoint, canClose, createPreviewJig, createStaticJig, promptMethod, promptKnotsType, promptDegree, applyCommonPromptOptions, FitState, CvState, firstPointPrompt, firstPointResult, changed, machine, db, spline;
196
+ var _this = this;
197
+ return __generator(this, function (_a) {
198
+ switch (_a.label) {
144
199
  case 0:
145
200
  points = [];
146
- firstPointPrompt = new AcEdPromptPointOptions(AcApI18n.t('jig.spline.firstPoint'));
147
- return [4 /*yield*/, AcApDocManager.instance.editor.getPoint(firstPointPrompt)];
201
+ settings = {
202
+ method: 'fit',
203
+ knotsType: 'chord',
204
+ degree: 3
205
+ };
206
+ closed = false;
207
+ appendPoint = function (point) {
208
+ points.push(new AcGePoint2d(point));
209
+ };
210
+ undoLast = function () {
211
+ if (points.length <= 1)
212
+ return;
213
+ points.pop();
214
+ };
215
+ getCurrentPoint = function () { return points[points.length - 1]; };
216
+ canClose = function () { return points.length >= 3; };
217
+ createPreviewJig = function () {
218
+ return new AcApSplineJig(context.view, points, settings, closed);
219
+ };
220
+ createStaticJig = function () {
221
+ return new AcApSplineStaticJig(context.view, points, settings, closed);
222
+ };
223
+ promptMethod = function () { return __awaiter(_this, void 0, void 0, function () {
224
+ var methodPrompt, methodResult;
225
+ return __generator(this, function (_a) {
226
+ switch (_a.label) {
227
+ case 0:
228
+ methodPrompt = new AcEdPromptKeywordOptions(AcApI18n.t('jig.spline.methodPrompt'));
229
+ methodPrompt.keywords.add(AcApI18n.t('jig.spline.keywords.fit.display'), AcApI18n.t('jig.spline.keywords.fit.global'), AcApI18n.t('jig.spline.keywords.fit.local'));
230
+ methodPrompt.keywords.add(AcApI18n.t('jig.spline.keywords.cv.display'), AcApI18n.t('jig.spline.keywords.cv.global'), AcApI18n.t('jig.spline.keywords.cv.local'));
231
+ return [4 /*yield*/, AcApDocManager.instance.editor.getKeywords(methodPrompt)];
232
+ case 1:
233
+ methodResult = _a.sent();
234
+ if (methodResult.status !== AcEdPromptStatus.OK)
235
+ return [2 /*return*/, false];
236
+ if (methodResult.stringResult === 'Fit') {
237
+ settings.method = 'fit';
238
+ }
239
+ else if (methodResult.stringResult === 'CV') {
240
+ settings.method = 'cv';
241
+ }
242
+ return [2 /*return*/, true];
243
+ }
244
+ });
245
+ }); };
246
+ promptKnotsType = function () { return __awaiter(_this, void 0, void 0, function () {
247
+ var knotsPrompt, knotsResult;
248
+ return __generator(this, function (_a) {
249
+ switch (_a.label) {
250
+ case 0:
251
+ knotsPrompt = new AcEdPromptKeywordOptions(AcApI18n.t('jig.spline.knotsPrompt'));
252
+ knotsPrompt.jig = createStaticJig();
253
+ knotsPrompt.keywords.add(AcApI18n.t('jig.spline.keywords.chord.display'), AcApI18n.t('jig.spline.keywords.chord.global'), AcApI18n.t('jig.spline.keywords.chord.local'));
254
+ knotsPrompt.keywords.add(AcApI18n.t('jig.spline.keywords.sqrtChord.display'), AcApI18n.t('jig.spline.keywords.sqrtChord.global'), AcApI18n.t('jig.spline.keywords.sqrtChord.local'));
255
+ knotsPrompt.keywords.add(AcApI18n.t('jig.spline.keywords.uniform.display'), AcApI18n.t('jig.spline.keywords.uniform.global'), AcApI18n.t('jig.spline.keywords.uniform.local'));
256
+ return [4 /*yield*/, AcApDocManager.instance.editor.getKeywords(knotsPrompt)];
257
+ case 1:
258
+ knotsResult = _a.sent();
259
+ if (knotsResult.status !== AcEdPromptStatus.OK)
260
+ return [2 /*return*/, false];
261
+ if (knotsResult.stringResult === 'Chord') {
262
+ settings.knotsType = 'chord';
263
+ }
264
+ else if (knotsResult.stringResult === 'SqrtChord') {
265
+ settings.knotsType = 'sqrtChord';
266
+ }
267
+ else if (knotsResult.stringResult === 'Uniform') {
268
+ settings.knotsType = 'uniform';
269
+ }
270
+ return [2 /*return*/, true];
271
+ }
272
+ });
273
+ }); };
274
+ promptDegree = function () { return __awaiter(_this, void 0, void 0, function () {
275
+ var degreePrompt, degreeResult, degree;
276
+ var _a;
277
+ return __generator(this, function (_b) {
278
+ switch (_b.label) {
279
+ case 0:
280
+ degreePrompt = new AcEdPromptIntegerOptions(AcApI18n.t('jig.spline.degreePrompt'), 1, 10);
281
+ degreePrompt.jig = createStaticJig();
282
+ return [4 /*yield*/, AcApDocManager.instance.editor.getInteger(degreePrompt)];
283
+ case 1:
284
+ degreeResult = _b.sent();
285
+ if (degreeResult.status !== AcEdPromptStatus.OK)
286
+ return [2 /*return*/, false];
287
+ degree = Math.floor((_a = degreeResult.value) !== null && _a !== void 0 ? _a : settings.degree);
288
+ settings.degree = Math.max(1, degree);
289
+ return [2 /*return*/, true];
290
+ }
291
+ });
292
+ }); };
293
+ applyCommonPromptOptions = function (prompt) {
294
+ prompt.useDashedLine = true;
295
+ prompt.useBasePoint = true;
296
+ var basePoint = getCurrentPoint();
297
+ if (basePoint) {
298
+ prompt.basePoint = new AcGePoint3d(basePoint);
299
+ }
300
+ prompt.jig = createPreviewJig();
301
+ };
302
+ FitState = /** @class */ (function () {
303
+ /**
304
+ * Creates Fit state.
305
+ *
306
+ * @param machine - Owning prompt state machine.
307
+ */
308
+ function FitState(machine) {
309
+ this.machine = machine;
310
+ }
311
+ /**
312
+ * Builds point prompt for fit workflow.
313
+ *
314
+ * @returns Configured point prompt with fit-related keywords.
315
+ */
316
+ FitState.prototype.buildPrompt = function () {
317
+ var prompt = new AcEdPromptPointOptions(AcApI18n.t('jig.spline.nextPointWithFitOptions'));
318
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.method.display'), AcApI18n.t('jig.spline.keywords.method.global'), AcApI18n.t('jig.spline.keywords.method.local'));
319
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.knots.display'), AcApI18n.t('jig.spline.keywords.knots.global'), AcApI18n.t('jig.spline.keywords.knots.local'));
320
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.undo.display'), AcApI18n.t('jig.spline.keywords.undo.global'), AcApI18n.t('jig.spline.keywords.undo.local'));
321
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.close.display'), AcApI18n.t('jig.spline.keywords.close.global'), AcApI18n.t('jig.spline.keywords.close.local'));
322
+ applyCommonPromptOptions(prompt);
323
+ return prompt;
324
+ };
325
+ /**
326
+ * Handles fit-state prompt result and returns next state-machine action.
327
+ *
328
+ * @param result - Point prompt result.
329
+ * @returns State-machine step result.
330
+ */
331
+ FitState.prototype.handleResult = function (result) {
332
+ return __awaiter(this, void 0, void 0, function () {
333
+ var keyword, changed, changed;
334
+ var _a;
335
+ return __generator(this, function (_b) {
336
+ switch (_b.label) {
337
+ case 0:
338
+ if (result.status === AcEdPromptStatus.OK) {
339
+ appendPoint(result.value);
340
+ return [2 /*return*/, 'continue'];
341
+ }
342
+ if (result.status !== AcEdPromptStatus.Keyword)
343
+ return [2 /*return*/, 'finish'];
344
+ keyword = (_a = result.stringResult) !== null && _a !== void 0 ? _a : '';
345
+ if (!(keyword === 'Method')) return [3 /*break*/, 2];
346
+ return [4 /*yield*/, promptMethod()];
347
+ case 1:
348
+ changed = _b.sent();
349
+ if (!changed)
350
+ return [2 /*return*/, 'finish'];
351
+ if (settings.method === 'cv') {
352
+ this.machine.setState(new CvState(this.machine));
353
+ }
354
+ return [2 /*return*/, 'continue'];
355
+ case 2:
356
+ if (!(keyword === 'Knots')) return [3 /*break*/, 4];
357
+ return [4 /*yield*/, promptKnotsType()];
358
+ case 3:
359
+ changed = _b.sent();
360
+ return [2 /*return*/, changed ? 'continue' : 'finish'];
361
+ case 4:
362
+ if (keyword === 'Undo') {
363
+ undoLast();
364
+ return [2 /*return*/, 'continue'];
365
+ }
366
+ if (keyword === 'Close' && canClose()) {
367
+ closed = true;
368
+ return [2 /*return*/, 'finish'];
369
+ }
370
+ return [2 /*return*/, 'continue'];
371
+ }
372
+ });
373
+ });
374
+ };
375
+ return FitState;
376
+ }());
377
+ CvState = /** @class */ (function () {
378
+ /**
379
+ * Creates CV state.
380
+ *
381
+ * @param machine - Owning prompt state machine.
382
+ */
383
+ function CvState(machine) {
384
+ this.machine = machine;
385
+ }
386
+ /**
387
+ * Builds point prompt for CV workflow.
388
+ *
389
+ * @returns Configured point prompt with CV-related keywords.
390
+ */
391
+ CvState.prototype.buildPrompt = function () {
392
+ var prompt = new AcEdPromptPointOptions(AcApI18n.t('jig.spline.nextPointWithCvOptions'));
393
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.method.display'), AcApI18n.t('jig.spline.keywords.method.global'), AcApI18n.t('jig.spline.keywords.method.local'));
394
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.degree.display'), AcApI18n.t('jig.spline.keywords.degree.global'), AcApI18n.t('jig.spline.keywords.degree.local'));
395
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.undo.display'), AcApI18n.t('jig.spline.keywords.undo.global'), AcApI18n.t('jig.spline.keywords.undo.local'));
396
+ prompt.keywords.add(AcApI18n.t('jig.spline.keywords.close.display'), AcApI18n.t('jig.spline.keywords.close.global'), AcApI18n.t('jig.spline.keywords.close.local'));
397
+ applyCommonPromptOptions(prompt);
398
+ return prompt;
399
+ };
400
+ /**
401
+ * Handles CV-state prompt result and returns next state-machine action.
402
+ *
403
+ * @param result - Point prompt result.
404
+ * @returns State-machine step result.
405
+ */
406
+ CvState.prototype.handleResult = function (result) {
407
+ return __awaiter(this, void 0, void 0, function () {
408
+ var keyword, changed, changed;
409
+ var _a;
410
+ return __generator(this, function (_b) {
411
+ switch (_b.label) {
412
+ case 0:
413
+ if (result.status === AcEdPromptStatus.OK) {
414
+ appendPoint(result.value);
415
+ return [2 /*return*/, 'continue'];
416
+ }
417
+ if (result.status !== AcEdPromptStatus.Keyword)
418
+ return [2 /*return*/, 'finish'];
419
+ keyword = (_a = result.stringResult) !== null && _a !== void 0 ? _a : '';
420
+ if (!(keyword === 'Method')) return [3 /*break*/, 2];
421
+ return [4 /*yield*/, promptMethod()];
422
+ case 1:
423
+ changed = _b.sent();
424
+ if (!changed)
425
+ return [2 /*return*/, 'finish'];
426
+ if (settings.method === 'fit') {
427
+ this.machine.setState(new FitState(this.machine));
428
+ }
429
+ return [2 /*return*/, 'continue'];
430
+ case 2:
431
+ if (!(keyword === 'Degree')) return [3 /*break*/, 4];
432
+ return [4 /*yield*/, promptDegree()];
433
+ case 3:
434
+ changed = _b.sent();
435
+ return [2 /*return*/, changed ? 'continue' : 'finish'];
436
+ case 4:
437
+ if (keyword === 'Undo') {
438
+ undoLast();
439
+ return [2 /*return*/, 'continue'];
440
+ }
441
+ if (keyword === 'Close' && canClose()) {
442
+ closed = true;
443
+ return [2 /*return*/, 'finish'];
444
+ }
445
+ return [2 /*return*/, 'continue'];
446
+ }
447
+ });
448
+ });
449
+ };
450
+ return CvState;
451
+ }());
452
+ _a.label = 1;
148
453
  case 1:
149
- firstPointResult = _b.sent();
150
- if (firstPointResult.status !== AcEdPromptStatus.OK)
151
- return [2 /*return*/];
152
- currentPoint = firstPointResult.value;
153
- points.push(new AcGePoint2d(currentPoint));
154
- _b.label = 2;
454
+ if (!(points.length === 0)) return [3 /*break*/, 5];
455
+ firstPointPrompt = new AcEdPromptPointOptions(AcApI18n.t('jig.spline.firstPointWithOptions'));
456
+ firstPointPrompt.keywords.add(AcApI18n.t('jig.spline.keywords.method.display'), AcApI18n.t('jig.spline.keywords.method.global'), AcApI18n.t('jig.spline.keywords.method.local'));
457
+ return [4 /*yield*/, AcApDocManager.instance.editor.getPoint(firstPointPrompt)];
155
458
  case 2:
156
- if (!true) return [3 /*break*/, 7];
157
- nextPointPrompt = new AcEdPromptPointOptions(AcApI18n.t('jig.spline.nextPoint'));
158
- nextPointPrompt.useDashedLine = true;
159
- nextPointPrompt.useBasePoint = true;
160
- nextPointPrompt.jig = new AcApSplineJig(context.view, points);
161
- _b.label = 3;
162
- case 3:
163
- _b.trys.push([3, 5, , 6]);
164
- return [4 /*yield*/, AcApDocManager.instance.editor.getPoint(nextPointPrompt)];
165
- case 4:
166
- nextPointResult = _b.sent();
167
- if (nextPointResult.status !== AcEdPromptStatus.OK) {
168
- // User canceled or pressed Enter, exit loop
169
- return [3 /*break*/, 7];
459
+ firstPointResult = _a.sent();
460
+ if (firstPointResult.status === AcEdPromptStatus.OK) {
461
+ appendPoint(firstPointResult.value);
462
+ return [3 /*break*/, 5];
170
463
  }
171
- currentPoint = nextPointResult.value;
172
- points.push(new AcGePoint2d(currentPoint));
173
- return [3 /*break*/, 6];
464
+ if (!(firstPointResult.status === AcEdPromptStatus.Keyword &&
465
+ firstPointResult.stringResult === 'Method')) return [3 /*break*/, 4];
466
+ return [4 /*yield*/, promptMethod()];
467
+ case 3:
468
+ changed = _a.sent();
469
+ if (!changed)
470
+ return [2 /*return*/];
471
+ return [3 /*break*/, 1];
472
+ case 4: return [2 /*return*/];
174
473
  case 5:
175
- _a = _b.sent();
176
- // User canceled, exit loop
177
- return [3 /*break*/, 7];
178
- case 6: return [3 /*break*/, 2];
179
- case 7:
474
+ machine = new AcEdPromptStateMachine();
475
+ machine.setState(settings.method === 'fit' ? new FitState(machine) : new CvState(machine));
476
+ return [4 /*yield*/, machine.run(function (prompt) { return AcApDocManager.instance.editor.getPoint(prompt); })
477
+ // Create spline if we have at least two points
478
+ ];
479
+ case 6:
480
+ _a.sent();
180
481
  // Create spline if we have at least two points
181
482
  if (points.length >= 2) {
182
483
  db = context.doc.database;
183
- points3d = points.map(function (p) { return new AcGePoint3d(p.x, p.y, 0); });
184
- degree = Math.min(3, Math.max(1, points3d.length - 1));
185
- knots = createKnots(points3d.length, degree);
186
- spline = new AcDbSpline(points3d, knots, undefined, degree, false);
484
+ spline = buildSplineEntity(points, settings, closed);
187
485
  db.tables.blockTable.modelSpace.appendEntity(spline);
188
486
  }
189
487
  return [2 /*return*/];
@@ -194,6 +492,115 @@ var AcApSplineCmd = /** @class */ (function (_super) {
194
492
  return AcApSplineCmd;
195
493
  }(AcEdCommand));
196
494
  export { AcApSplineCmd };
495
+ /**
496
+ * Static spline preview jig used by non-point option prompts.
497
+ *
498
+ * @typeParam T - Prompt value type bound to this jig.
499
+ */
500
+ var AcApSplineStaticJig = /** @class */ (function (_super) {
501
+ __extends(AcApSplineStaticJig, _super);
502
+ /**
503
+ * Creates static spline preview jig.
504
+ *
505
+ * @param view - Active editor view.
506
+ * @param points - Current accepted spline points.
507
+ * @param settings - Current method/degree/knots settings.
508
+ * @param closed - Closed flag for preview.
509
+ */
510
+ function AcApSplineStaticJig(view, points, settings, closed) {
511
+ var _this = _super.call(this, view) || this;
512
+ _this._spline = buildSplineEntity(points, settings, closed);
513
+ return _this;
514
+ }
515
+ Object.defineProperty(AcApSplineStaticJig.prototype, "entity", {
516
+ /**
517
+ * Gets transient static spline entity.
518
+ */
519
+ get: function () {
520
+ return this._spline;
521
+ },
522
+ enumerable: false,
523
+ configurable: true
524
+ });
525
+ /**
526
+ * No-op update hook for static preview jig.
527
+ *
528
+ * @param _value - Prompt value (unused).
529
+ */
530
+ AcApSplineStaticJig.prototype.update = function (_value) {
531
+ // Static preview only.
532
+ };
533
+ return AcApSplineStaticJig;
534
+ }(AcEdPreviewJig));
535
+ function buildSplineEntity(points, settings, closed) {
536
+ if (points.length < 2) {
537
+ var fallbackPoints = [new AcGePoint3d(0, 0, 0), new AcGePoint3d(1, 1, 0)];
538
+ var fallbackDegree = 1;
539
+ var fallbackKnots = createKnots(fallbackPoints.length, fallbackDegree);
540
+ return new AcDbSpline(fallbackPoints, fallbackKnots, undefined, fallbackDegree);
541
+ }
542
+ var points3dRaw = points.map(function (p) { return new AcGePoint3d(p.x, p.y, 0); });
543
+ var points3d = settings.method === 'fit'
544
+ ? dedupeConsecutivePoints(points3dRaw)
545
+ : points3dRaw;
546
+ if (points3d.length < 2) {
547
+ var fallbackPoints = [new AcGePoint3d(0, 0, 0), new AcGePoint3d(1, 1, 0)];
548
+ var fallbackDegree = 1;
549
+ var fallbackKnots = createKnots(fallbackPoints.length, fallbackDegree);
550
+ return new AcDbSpline(fallbackPoints, fallbackKnots, undefined, fallbackDegree);
551
+ }
552
+ var degree = resolveSplineDegree(points3d.length, settings);
553
+ var isClosed = closed && points3d.length >= 3;
554
+ if (settings.method === 'fit') {
555
+ return new AcDbSpline(points3d, mapKnotsTypeToParameterization(settings.knotsType), degree, isClosed);
556
+ }
557
+ var knots = createKnots(points3d.length, degree);
558
+ var spline = new AcDbSpline(points3d, knots, undefined, degree, false);
559
+ if (isClosed) {
560
+ spline.closed = true;
561
+ }
562
+ return spline;
563
+ }
564
+ function resolveSplineDegree(numPoints, settings) {
565
+ var maxDegree = Math.max(1, numPoints - 1);
566
+ if (settings.method === 'fit') {
567
+ return Math.min(3, maxDegree);
568
+ }
569
+ return Math.min(Math.max(1, settings.degree), maxDegree);
570
+ }
571
+ function dedupeConsecutivePoints(points) {
572
+ if (points.length <= 1)
573
+ return points;
574
+ var deduped = [new AcGePoint3d(points[0])];
575
+ for (var i = 1; i < points.length; i++) {
576
+ var last = deduped[deduped.length - 1];
577
+ var current = points[i];
578
+ if (!isNearlySamePoint3d(last, current)) {
579
+ deduped.push(new AcGePoint3d(current));
580
+ }
581
+ }
582
+ return deduped;
583
+ }
584
+ function isNearlySamePoint2d(a, b) {
585
+ return Math.hypot(a.x - b.x, a.y - b.y) <= 1e-9;
586
+ }
587
+ function isNearlySamePoint3d(a, b) {
588
+ var _a, _b;
589
+ var az = (_a = a.z) !== null && _a !== void 0 ? _a : 0;
590
+ var bz = (_b = b.z) !== null && _b !== void 0 ? _b : 0;
591
+ return Math.hypot(a.x - b.x, a.y - b.y, az - bz) <= 1e-9;
592
+ }
593
+ function mapKnotsTypeToParameterization(knotsType) {
594
+ switch (knotsType) {
595
+ case 'chord':
596
+ return 'Chord';
597
+ case 'sqrtChord':
598
+ return 'SqrtChord';
599
+ case 'uniform':
600
+ default:
601
+ return 'Uniform';
602
+ }
603
+ }
197
604
  function createKnots(numControlPoints, degree) {
198
605
  var knots = [];
199
606
  var numKnots = numControlPoints + degree + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"AcApSplineCmd.js","sourceRoot":"","sources":["../../src/command/AcApSplineCmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcApSplineCmd.js","sourceRoot":"","sources":["../../src/command/AcApSplineCmd.ts"],"names":[],"mappings":"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"}