@mlightcad/cad-simple-viewer 1.4.11 → 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.
- package/dist/index.js +20139 -12511
- package/dist/index.umd.cjs +102 -94
- package/dist/libredwg-parser-worker.js +6958 -12596
- package/lib/app/AcApAnnotation.d.ts.map +1 -1
- package/lib/app/AcApAnnotation.js +3 -3
- package/lib/app/AcApAnnotation.js.map +1 -1
- package/lib/app/AcApDocManager.d.ts +61 -4
- package/lib/app/AcApDocManager.d.ts.map +1 -1
- package/lib/app/AcApDocManager.js +162 -29
- package/lib/app/AcApDocManager.js.map +1 -1
- package/lib/app/AcApDocument.d.ts +6 -0
- package/lib/app/AcApDocument.d.ts.map +1 -1
- package/lib/app/AcApDocument.js +12 -0
- package/lib/app/AcApDocument.js.map +1 -1
- package/lib/app/AcApProgress.d.ts.map +1 -1
- package/lib/app/AcApProgress.js +3 -3
- package/lib/app/AcApProgress.js.map +1 -1
- package/lib/app/AcApSettingManager.d.ts.map +1 -1
- package/lib/app/AcApSettingManager.js +3 -1
- package/lib/app/AcApSettingManager.js.map +1 -1
- package/lib/app/AcDbOpenDatabaseOptions.d.ts.map +1 -1
- package/lib/command/AcApArcCmd.d.ts +140 -0
- package/lib/command/AcApArcCmd.d.ts.map +1 -0
- package/lib/command/AcApArcCmd.js +1009 -0
- package/lib/command/AcApArcCmd.js.map +1 -0
- package/lib/command/AcApCircleCmd.d.ts +59 -0
- package/lib/command/AcApCircleCmd.d.ts.map +1 -1
- package/lib/command/AcApCircleCmd.js +490 -13
- package/lib/command/AcApCircleCmd.js.map +1 -1
- package/lib/command/AcApClearMeasurementsCmd.d.ts +1 -1
- package/lib/command/AcApClearMeasurementsCmd.d.ts.map +1 -1
- package/lib/command/AcApClearMeasurementsCmd.js +2 -4
- package/lib/command/AcApClearMeasurementsCmd.js.map +1 -1
- package/lib/command/AcApConvertToDxfCmd.d.ts +9 -0
- package/lib/command/AcApConvertToDxfCmd.d.ts.map +1 -0
- package/lib/command/{AcApZoomToBoxCmd.js → AcApConvertToDxfCmd.js} +14 -40
- package/lib/command/AcApConvertToDxfCmd.js.map +1 -0
- package/lib/command/AcApConvertToPngCmd.d.ts +35 -0
- package/lib/command/AcApConvertToPngCmd.d.ts.map +1 -0
- package/lib/command/AcApConvertToPngCmd.js +127 -0
- package/lib/command/AcApConvertToPngCmd.js.map +1 -0
- package/lib/command/AcApDimLinearCmd.d.ts.map +1 -1
- package/lib/command/AcApDimLinearCmd.js +14 -5
- package/lib/command/AcApDimLinearCmd.js.map +1 -1
- package/lib/command/AcApDxfConvertor.d.ts +12 -0
- package/lib/command/AcApDxfConvertor.d.ts.map +1 -0
- package/lib/command/AcApDxfConvertor.js +37 -0
- package/lib/command/AcApDxfConvertor.js.map +1 -0
- package/lib/command/AcApEllipseCmd.d.ts +87 -0
- package/lib/command/AcApEllipseCmd.d.ts.map +1 -0
- package/lib/command/AcApEllipseCmd.js +583 -0
- package/lib/command/AcApEllipseCmd.js.map +1 -0
- package/lib/command/AcApEraseCmd.d.ts.map +1 -1
- package/lib/command/AcApEraseCmd.js +10 -6
- package/lib/command/AcApEraseCmd.js.map +1 -1
- package/lib/command/AcApHatchCmd.d.ts +210 -0
- package/lib/command/AcApHatchCmd.d.ts.map +1 -0
- package/lib/command/AcApHatchCmd.js +808 -0
- package/lib/command/AcApHatchCmd.js.map +1 -0
- package/lib/command/AcApLayerCmd.d.ts +217 -0
- package/lib/command/AcApLayerCmd.d.ts.map +1 -0
- package/lib/command/AcApLayerCmd.js +768 -0
- package/lib/command/AcApLayerCmd.js.map +1 -0
- package/lib/command/AcApLineCmd.d.ts +36 -1
- package/lib/command/AcApLineCmd.d.ts.map +1 -1
- package/lib/command/AcApLineCmd.js +159 -16
- package/lib/command/AcApLineCmd.js.map +1 -1
- package/lib/command/AcApMTextCmd.d.ts.map +1 -1
- package/lib/command/AcApMTextCmd.js +6 -3
- package/lib/command/AcApMTextCmd.js.map +1 -1
- package/lib/command/AcApMeasureAngleCmd.d.ts.map +1 -1
- package/lib/command/AcApMeasureAngleCmd.js +134 -123
- package/lib/command/AcApMeasureAngleCmd.js.map +1 -1
- package/lib/command/AcApMeasureArcCmd.d.ts.map +1 -1
- package/lib/command/AcApMeasureArcCmd.js +165 -147
- package/lib/command/AcApMeasureArcCmd.js.map +1 -1
- package/lib/command/AcApMeasureAreaCmd.d.ts.map +1 -1
- package/lib/command/AcApMeasureAreaCmd.js +186 -175
- package/lib/command/AcApMeasureAreaCmd.js.map +1 -1
- package/lib/command/AcApMeasureDistanceCmd.d.ts.map +1 -1
- package/lib/command/AcApMeasureDistanceCmd.js +51 -39
- package/lib/command/AcApMeasureDistanceCmd.js.map +1 -1
- package/lib/command/AcApMoveCmd.d.ts +16 -0
- package/lib/command/AcApMoveCmd.d.ts.map +1 -0
- package/lib/command/AcApMoveCmd.js +278 -0
- package/lib/command/AcApMoveCmd.js.map +1 -0
- package/lib/command/AcApPngConvertor.d.ts +95 -0
- package/lib/command/AcApPngConvertor.d.ts.map +1 -0
- package/lib/command/AcApPngConvertor.js +205 -0
- package/lib/command/AcApPngConvertor.js.map +1 -0
- package/lib/command/AcApPolygonCmd.d.ts +69 -0
- package/lib/command/AcApPolygonCmd.d.ts.map +1 -0
- package/lib/command/AcApPolygonCmd.js +422 -0
- package/lib/command/AcApPolygonCmd.js.map +1 -0
- package/lib/command/AcApPolylineCmd.d.ts +71 -0
- package/lib/command/AcApPolylineCmd.d.ts.map +1 -0
- package/lib/command/AcApPolylineCmd.js +569 -0
- package/lib/command/AcApPolylineCmd.js.map +1 -0
- package/lib/command/AcApRectCmd.d.ts +149 -4
- package/lib/command/AcApRectCmd.d.ts.map +1 -1
- package/lib/command/AcApRectCmd.js +717 -29
- package/lib/command/AcApRectCmd.js.map +1 -1
- package/lib/command/AcApRevCircleCmd.d.ts +8 -0
- package/lib/command/AcApRevCircleCmd.d.ts.map +1 -1
- package/lib/command/AcApRevCircleCmd.js +30 -6
- package/lib/command/AcApRevCircleCmd.js.map +1 -1
- package/lib/command/AcApRevCloudCmd.d.ts.map +1 -1
- package/lib/command/AcApRevCloudCmd.js +10 -4
- package/lib/command/AcApRevCloudCmd.js.map +1 -1
- package/lib/command/AcApRevRectCmd.d.ts +8 -0
- package/lib/command/AcApRevRectCmd.d.ts.map +1 -1
- package/lib/command/AcApRevRectCmd.js +78 -6
- package/lib/command/AcApRevRectCmd.js.map +1 -1
- package/lib/command/AcApSketchCmd.d.ts.map +1 -1
- package/lib/command/AcApSketchCmd.js +11 -7
- package/lib/command/AcApSketchCmd.js.map +1 -1
- package/lib/command/AcApSplineCmd.d.ts +85 -0
- package/lib/command/AcApSplineCmd.d.ts.map +1 -0
- package/lib/command/AcApSplineCmd.js +620 -0
- package/lib/command/AcApSplineCmd.js.map +1 -0
- package/lib/command/AcApSysVarCmd.d.ts.map +1 -1
- package/lib/command/AcApSysVarCmd.js +6 -3
- package/lib/command/AcApSysVarCmd.js.map +1 -1
- package/lib/command/AcApZoomCmd.d.ts +91 -20
- package/lib/command/AcApZoomCmd.d.ts.map +1 -1
- package/lib/command/AcApZoomCmd.js +288 -23
- package/lib/command/AcApZoomCmd.js.map +1 -1
- package/lib/command/index.d.ts +12 -1
- package/lib/command/index.d.ts.map +1 -1
- package/lib/command/index.js +12 -1
- package/lib/command/index.js.map +1 -1
- package/lib/editor/command/AcEdCommandIterator.d.ts.map +1 -1
- package/lib/editor/command/AcEdCommandIterator.js.map +1 -1
- package/lib/editor/command/AcEdCommandStack.d.ts +54 -1
- package/lib/editor/command/AcEdCommandStack.d.ts.map +1 -1
- package/lib/editor/command/AcEdCommandStack.js +207 -25
- package/lib/editor/command/AcEdCommandStack.js.map +1 -1
- package/lib/editor/global/AcEdUiTheme.d.ts +4 -0
- package/lib/editor/global/AcEdUiTheme.d.ts.map +1 -0
- package/lib/editor/global/AcEdUiTheme.js +44 -0
- package/lib/editor/global/AcEdUiTheme.js.map +1 -0
- package/lib/editor/global/index.d.ts +1 -0
- package/lib/editor/global/index.d.ts.map +1 -1
- package/lib/editor/global/index.js +1 -0
- package/lib/editor/global/index.js.map +1 -1
- package/lib/editor/input/AcEdCursorManager.d.ts +10 -0
- package/lib/editor/input/AcEdCursorManager.d.ts.map +1 -1
- package/lib/editor/input/AcEdCursorManager.js +24 -4
- package/lib/editor/input/AcEdCursorManager.js.map +1 -1
- package/lib/editor/input/AcEdInputModifiers.d.ts +39 -0
- package/lib/editor/input/AcEdInputModifiers.d.ts.map +1 -0
- package/lib/editor/input/AcEdInputModifiers.js +2 -0
- package/lib/editor/input/AcEdInputModifiers.js.map +1 -0
- package/lib/editor/input/AcEdInputToggles.d.ts +24 -0
- package/lib/editor/input/AcEdInputToggles.d.ts.map +1 -0
- package/lib/editor/input/AcEdInputToggles.js +2 -0
- package/lib/editor/input/AcEdInputToggles.js.map +1 -0
- package/lib/editor/input/AcEdPromptStateMachine.d.ts +110 -0
- package/lib/editor/input/AcEdPromptStateMachine.d.ts.map +1 -0
- package/lib/editor/input/AcEdPromptStateMachine.js +147 -0
- package/lib/editor/input/AcEdPromptStateMachine.js.map +1 -0
- package/lib/editor/input/AcEdSelectionFilter.d.ts +79 -0
- package/lib/editor/input/AcEdSelectionFilter.d.ts.map +1 -0
- package/lib/editor/input/AcEdSelectionFilter.js +231 -0
- package/lib/editor/input/AcEdSelectionFilter.js.map +1 -0
- package/lib/editor/input/AcEditor.d.ts +77 -10
- package/lib/editor/input/AcEditor.d.ts.map +1 -1
- package/lib/editor/input/AcEditor.js +162 -1
- package/lib/editor/input/AcEditor.js.map +1 -1
- package/lib/editor/input/index.d.ts +4 -0
- package/lib/editor/input/index.d.ts.map +1 -1
- package/lib/editor/input/index.js +4 -0
- package/lib/editor/input/index.js.map +1 -1
- package/lib/editor/input/marker/AcEdMarker.d.ts.map +1 -1
- package/lib/editor/input/marker/AcEdMarker.js +3 -3
- package/lib/editor/input/marker/AcEdMarker.js.map +1 -1
- package/lib/editor/input/prompt/AcEdKeywordCollection.d.ts +47 -0
- package/lib/editor/input/prompt/AcEdKeywordCollection.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdKeywordCollection.js +30 -4
- package/lib/editor/input/prompt/AcEdKeywordCollection.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptAngleOptions.d.ts +8 -1
- package/lib/editor/input/prompt/AcEdPromptAngleOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptAngleOptions.js +19 -2
- package/lib/editor/input/prompt/AcEdPromptAngleOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptBoxResult.d.ts +12 -0
- package/lib/editor/input/prompt/AcEdPromptBoxResult.d.ts.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptBoxResult.js +30 -0
- package/lib/editor/input/prompt/AcEdPromptBoxResult.js.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptDoubleResult.d.ts +9 -0
- package/lib/editor/input/prompt/AcEdPromptDoubleResult.d.ts.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptDoubleResult.js +28 -0
- package/lib/editor/input/prompt/AcEdPromptDoubleResult.js.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptEntityOptions.d.ts +18 -1
- package/lib/editor/input/prompt/AcEdPromptEntityOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptEntityOptions.js +32 -5
- package/lib/editor/input/prompt/AcEdPromptEntityOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptEntityResult.d.ts +14 -0
- package/lib/editor/input/prompt/AcEdPromptEntityResult.d.ts.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptEntityResult.js +31 -0
- package/lib/editor/input/prompt/AcEdPromptEntityResult.js.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptIntegerResult.d.ts +9 -0
- package/lib/editor/input/prompt/AcEdPromptIntegerResult.d.ts.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptIntegerResult.js +28 -0
- package/lib/editor/input/prompt/AcEdPromptIntegerResult.js.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptKeywordOptions.d.ts +1 -1
- package/lib/editor/input/prompt/AcEdPromptKeywordOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptKeywordOptions.js +2 -2
- package/lib/editor/input/prompt/AcEdPromptKeywordOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptNumericalOptions.d.ts +1 -1
- package/lib/editor/input/prompt/AcEdPromptNumericalOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptNumericalOptions.js +2 -2
- package/lib/editor/input/prompt/AcEdPromptNumericalOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptOptions.d.ts +9 -3
- package/lib/editor/input/prompt/AcEdPromptOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptOptions.js +22 -4
- package/lib/editor/input/prompt/AcEdPromptOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptPointOptions.d.ts +1 -1
- package/lib/editor/input/prompt/AcEdPromptPointOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptPointOptions.js +2 -2
- package/lib/editor/input/prompt/AcEdPromptPointOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptPointResult.d.ts +3 -3
- package/lib/editor/input/prompt/AcEdPromptSelectionOptions.d.ts +1 -1
- package/lib/editor/input/prompt/AcEdPromptSelectionOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptSelectionOptions.js +2 -2
- package/lib/editor/input/prompt/AcEdPromptSelectionOptions.js.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptSelectionResult.d.ts +12 -0
- package/lib/editor/input/prompt/AcEdPromptSelectionResult.d.ts.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptSelectionResult.js +30 -0
- package/lib/editor/input/prompt/AcEdPromptSelectionResult.js.map +1 -0
- package/lib/editor/input/prompt/AcEdPromptStringOptions.d.ts +1 -1
- package/lib/editor/input/prompt/AcEdPromptStringOptions.d.ts.map +1 -1
- package/lib/editor/input/prompt/AcEdPromptStringOptions.js +2 -2
- package/lib/editor/input/prompt/AcEdPromptStringOptions.js.map +1 -1
- package/lib/editor/input/prompt/index.d.ts +9 -0
- package/lib/editor/input/prompt/index.d.ts.map +1 -1
- package/lib/editor/input/prompt/index.js +9 -0
- package/lib/editor/input/prompt/index.js.map +1 -1
- package/lib/editor/input/session/AcEdKeywordSession.d.ts +67 -1
- package/lib/editor/input/session/AcEdKeywordSession.d.ts.map +1 -1
- package/lib/editor/input/session/AcEdKeywordSession.js +78 -1
- package/lib/editor/input/session/AcEdKeywordSession.js.map +1 -1
- package/lib/editor/input/ui/AcEdCommandLine.d.ts +27 -1
- package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdCommandLine.js +75 -10
- package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInput.d.ts +24 -1
- package/lib/editor/input/ui/AcEdFloatingInput.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInput.js +147 -27
- package/lib/editor/input/ui/AcEdFloatingInput.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputBox.d.ts +2 -0
- package/lib/editor/input/ui/AcEdFloatingInputBox.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputBox.js +4 -0
- package/lib/editor/input/ui/AcEdFloatingInputBox.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts +30 -1
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.js +46 -15
- package/lib/editor/input/ui/AcEdFloatingInputBoxes.js.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts +33 -0
- package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingMessage.d.ts +12 -0
- package/lib/editor/input/ui/AcEdFloatingMessage.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdFloatingMessage.js +61 -2
- package/lib/editor/input/ui/AcEdFloatingMessage.js.map +1 -1
- package/lib/editor/input/ui/AcEdInputManager.d.ts +403 -29
- package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdInputManager.js +1313 -414
- package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
- package/lib/editor/input/ui/AcEdRubberBand.d.ts +15 -1
- package/lib/editor/input/ui/AcEdRubberBand.d.ts.map +1 -1
- package/lib/editor/input/ui/AcEdRubberBand.js +43 -11
- package/lib/editor/input/ui/AcEdRubberBand.js.map +1 -1
- package/lib/editor/view/AcEdBaseView.d.ts +66 -0
- package/lib/editor/view/AcEdBaseView.d.ts.map +1 -1
- package/lib/editor/view/AcEdBaseView.js +170 -0
- package/lib/editor/view/AcEdBaseView.js.map +1 -1
- package/lib/editor/view/AcEdSpatialQueryResult.d.ts.map +1 -1
- package/lib/i18n/en/command.d.ts +36 -3
- package/lib/i18n/en/command.d.ts.map +1 -1
- package/lib/i18n/en/command.js +36 -3
- package/lib/i18n/en/command.js.map +1 -1
- package/lib/i18n/en/jig.d.ts +553 -0
- package/lib/i18n/en/jig.d.ts.map +1 -1
- package/lib/i18n/en/jig.js +557 -4
- package/lib/i18n/en/jig.js.map +1 -1
- package/lib/i18n/zh/command.d.ts +36 -3
- package/lib/i18n/zh/command.d.ts.map +1 -1
- package/lib/i18n/zh/command.js +36 -3
- package/lib/i18n/zh/command.js.map +1 -1
- package/lib/i18n/zh/jig.d.ts +553 -0
- package/lib/i18n/zh/jig.d.ts.map +1 -1
- package/lib/i18n/zh/jig.js +557 -4
- package/lib/i18n/zh/jig.js.map +1 -1
- package/lib/plugin/AcApPluginManager.d.ts.map +1 -1
- package/lib/plugin/AcApPluginManager.js.map +1 -1
- package/lib/util/AcApMeasurementElementGenerator.d.ts +36 -0
- package/lib/util/AcApMeasurementElementGenerator.d.ts.map +1 -0
- package/lib/util/AcApMeasurementElementGenerator.js +92 -0
- package/lib/util/AcApMeasurementElementGenerator.js.map +1 -0
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/view/AcTrLayer.d.ts.map +1 -1
- package/lib/view/AcTrLayer.js +5 -3
- package/lib/view/AcTrLayer.js.map +1 -1
- package/lib/view/AcTrLayoutView.d.ts +6 -0
- package/lib/view/AcTrLayoutView.d.ts.map +1 -1
- package/lib/view/AcTrLayoutView.js +20 -0
- package/lib/view/AcTrLayoutView.js.map +1 -1
- package/lib/view/AcTrView2d.d.ts +0 -1
- package/lib/view/AcTrView2d.d.ts.map +1 -1
- package/lib/view/AcTrView2d.js +103 -50
- package/lib/view/AcTrView2d.js.map +1 -1
- package/package.json +15 -13
- package/lib/command/AcApZoomToBoxCmd.d.ts +0 -29
- package/lib/command/AcApZoomToBoxCmd.d.ts.map +0 -1
- package/lib/command/AcApZoomToBoxCmd.js.map +0 -1
- package/lib/util/AcApMeasurementUtils.d.ts +0 -12
- package/lib/util/AcApMeasurementUtils.d.ts.map +0 -1
- package/lib/util/AcApMeasurementUtils.js +0 -36
- package/lib/util/AcApMeasurementUtils.js.map +0 -1
|
@@ -0,0 +1,808 @@
|
|
|
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 __read = (this && this.__read) || function (o, n) {
|
|
53
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
54
|
+
if (!m) return o;
|
|
55
|
+
var i = m.call(o), r, ar = [], e;
|
|
56
|
+
try {
|
|
57
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
58
|
+
}
|
|
59
|
+
catch (error) { e = { error: error }; }
|
|
60
|
+
finally {
|
|
61
|
+
try {
|
|
62
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
63
|
+
}
|
|
64
|
+
finally { if (e) throw e.error; }
|
|
65
|
+
}
|
|
66
|
+
return ar;
|
|
67
|
+
};
|
|
68
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
69
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
70
|
+
if (ar || !(i in from)) {
|
|
71
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
72
|
+
ar[i] = from[i];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
76
|
+
};
|
|
77
|
+
var __values = (this && this.__values) || function(o) {
|
|
78
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
79
|
+
if (m) return m.call(o);
|
|
80
|
+
if (o && typeof o.length === "number") return {
|
|
81
|
+
next: function () {
|
|
82
|
+
if (o && i >= o.length) o = void 0;
|
|
83
|
+
return { value: o && o[i++], done: !o };
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
87
|
+
};
|
|
88
|
+
import { AcDbArc, AcDbCircle, AcDbHatch, AcDbHatchPatternType, AcDbHatchStyle, AcDbLine, AcDbPolyline, AcGeCircArc2d, AcGeLine2d, AcGeLoop2d } from '@mlightcad/data-model';
|
|
89
|
+
import { AcApDocManager } from '../app';
|
|
90
|
+
import { AcEdCommand, AcEdOpenMode, AcEdPromptDoubleOptions, AcEdPromptEntityOptions, AcEdPromptKeywordOptions, AcEdPromptPointOptions, AcEdPromptSelectionOptions, AcEdPromptStatus, AcEdPromptStringOptions } from '../editor';
|
|
91
|
+
import { AcApI18n } from '../i18n';
|
|
92
|
+
/**
|
|
93
|
+
* Command-line HATCH command (no dialog), inspired by AutoCAD flow.
|
|
94
|
+
*
|
|
95
|
+
* Current scope:
|
|
96
|
+
* - Build hatch boundaries from selected objects.
|
|
97
|
+
* - Support command-line option branches (pattern/scale/angle/style/associative).
|
|
98
|
+
* - No island-detection refinement beyond loop construction.
|
|
99
|
+
*/
|
|
100
|
+
var AcApHatchCmd = /** @class */ (function (_super) {
|
|
101
|
+
__extends(AcApHatchCmd, _super);
|
|
102
|
+
/**
|
|
103
|
+
* Creates one HATCH command instance and marks it as write-mode only.
|
|
104
|
+
*/
|
|
105
|
+
function AcApHatchCmd() {
|
|
106
|
+
var _this = _super.call(this) || this;
|
|
107
|
+
_this.mode = AcEdOpenMode.Write;
|
|
108
|
+
return _this;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Normalizes pattern name input.
|
|
112
|
+
*
|
|
113
|
+
* @param value Raw user-entered pattern name.
|
|
114
|
+
* @returns Trimmed name, or `ANSI31` when input is empty.
|
|
115
|
+
*/
|
|
116
|
+
AcApHatchCmd.prototype.normalizePatternName = function (value) {
|
|
117
|
+
var name = value.trim();
|
|
118
|
+
return name.length > 0 ? name : 'ANSI31';
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Converts hatch style enum to command keyword string.
|
|
122
|
+
*
|
|
123
|
+
* @param style Hatch style enum value.
|
|
124
|
+
* @returns Command keyword name used by keyword prompts.
|
|
125
|
+
*/
|
|
126
|
+
AcApHatchCmd.prototype.styleToKeyword = function (style) {
|
|
127
|
+
switch (style) {
|
|
128
|
+
case AcDbHatchStyle.Outer:
|
|
129
|
+
return 'Outer';
|
|
130
|
+
case AcDbHatchStyle.Ignore:
|
|
131
|
+
return 'Ignore';
|
|
132
|
+
case AcDbHatchStyle.Normal:
|
|
133
|
+
default:
|
|
134
|
+
return 'Normal';
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Converts command keyword string to hatch style enum.
|
|
139
|
+
*
|
|
140
|
+
* @param keyword Keyword returned by prompt API.
|
|
141
|
+
* @returns Matching hatch style enum, defaulting to `Normal`.
|
|
142
|
+
*/
|
|
143
|
+
AcApHatchCmd.prototype.keywordToStyle = function (keyword) {
|
|
144
|
+
switch (keyword) {
|
|
145
|
+
case 'Outer':
|
|
146
|
+
return AcDbHatchStyle.Outer;
|
|
147
|
+
case 'Ignore':
|
|
148
|
+
return AcDbHatchStyle.Ignore;
|
|
149
|
+
case 'Normal':
|
|
150
|
+
default:
|
|
151
|
+
return AcDbHatchStyle.Normal;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Converts a closed polyline entity into a boundary-edge sequence.
|
|
156
|
+
*
|
|
157
|
+
* The function keeps arc segments by reading per-vertex bulge values.
|
|
158
|
+
* If runtime bulge data is unavailable, vertices fall back to straight edges.
|
|
159
|
+
*
|
|
160
|
+
* @param entity Input polyline entity.
|
|
161
|
+
* @returns Ordered boundary edges or empty array if not hatchable.
|
|
162
|
+
*/
|
|
163
|
+
AcApHatchCmd.prototype.buildEdgesFromPolyline = function (entity) {
|
|
164
|
+
var _a, _b;
|
|
165
|
+
if (!entity.closed || entity.numberOfVertices < 2)
|
|
166
|
+
return [];
|
|
167
|
+
// Runtime polyline geometry keeps bulge data; typed API does not expose it.
|
|
168
|
+
var runtimeVertices = (_a = entity._geo) === null || _a === void 0 ? void 0 : _a.vertices;
|
|
169
|
+
var vertices = runtimeVertices && runtimeVertices.length > 1
|
|
170
|
+
? runtimeVertices.map(function (v) { return ({ x: v.x, y: v.y, bulge: v.bulge }); })
|
|
171
|
+
: Array.from({ length: entity.numberOfVertices }, function (_, i) {
|
|
172
|
+
var p = entity.getPoint2dAt(i);
|
|
173
|
+
return { x: p.x, y: p.y, bulge: 0 };
|
|
174
|
+
});
|
|
175
|
+
if (vertices.length < 2)
|
|
176
|
+
return [];
|
|
177
|
+
var edges = [];
|
|
178
|
+
for (var i = 0; i < vertices.length; i++) {
|
|
179
|
+
var start = vertices[i];
|
|
180
|
+
var end = vertices[(i + 1) % vertices.length];
|
|
181
|
+
var bulge = (_b = start.bulge) !== null && _b !== void 0 ? _b : 0;
|
|
182
|
+
if (Math.abs(bulge) > 1e-12) {
|
|
183
|
+
edges.push(new AcGeCircArc2d(start, end, bulge));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
edges.push(new AcGeLine2d(start, end));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return edges;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Converts a supported boundary entity into one or more boundary edges.
|
|
193
|
+
*
|
|
194
|
+
* Supported entities:
|
|
195
|
+
* - `AcDbPolyline` (closed)
|
|
196
|
+
* - `AcDbCircle`
|
|
197
|
+
* - `AcDbArc` (closed only)
|
|
198
|
+
* - `AcDbLine`
|
|
199
|
+
*
|
|
200
|
+
* @param entity Input entity from model space.
|
|
201
|
+
* @returns Edge list consumable by loop builder.
|
|
202
|
+
*/
|
|
203
|
+
AcApHatchCmd.prototype.buildEdgesFromEntity = function (entity) {
|
|
204
|
+
if (entity instanceof AcDbPolyline) {
|
|
205
|
+
return this.buildEdgesFromPolyline(entity);
|
|
206
|
+
}
|
|
207
|
+
if (entity instanceof AcDbCircle) {
|
|
208
|
+
var center = entity.center;
|
|
209
|
+
return [
|
|
210
|
+
new AcGeCircArc2d({ x: center.x, y: center.y }, entity.radius, 0, Math.PI * 2, false)
|
|
211
|
+
];
|
|
212
|
+
}
|
|
213
|
+
if (entity instanceof AcDbArc) {
|
|
214
|
+
if (!entity.closed)
|
|
215
|
+
return [];
|
|
216
|
+
var center = entity.center;
|
|
217
|
+
return [
|
|
218
|
+
new AcGeCircArc2d({ x: center.x, y: center.y }, entity.radius, entity.startAngle, entity.endAngle, false)
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
if (entity instanceof AcDbLine) {
|
|
222
|
+
return [new AcGeLine2d(entity.startPoint, entity.endPoint)];
|
|
223
|
+
}
|
|
224
|
+
return [];
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Builds closed loops from explicit object ids.
|
|
228
|
+
*
|
|
229
|
+
* @param context Active command context.
|
|
230
|
+
* @param ids Object ids selected by the user.
|
|
231
|
+
* @returns Closed loops ready for hatch creation.
|
|
232
|
+
*/
|
|
233
|
+
AcApHatchCmd.prototype.collectLoopsFromIds = function (context, ids) {
|
|
234
|
+
var _this = this;
|
|
235
|
+
var modelSpace = context.doc.database.tables.blockTable.modelSpace;
|
|
236
|
+
var edges = [];
|
|
237
|
+
ids.forEach(function (id) {
|
|
238
|
+
var entity = modelSpace.getIdAt(id);
|
|
239
|
+
if (!entity)
|
|
240
|
+
return;
|
|
241
|
+
edges.push.apply(edges, __spreadArray([], __read(_this.buildEdgesFromEntity(entity)), false));
|
|
242
|
+
});
|
|
243
|
+
return this.buildLoopsFromEdges(edges);
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* Scans model space and builds closed loops from all supported boundaries.
|
|
247
|
+
*
|
|
248
|
+
* This is used by pick-points mode so a seed point can be resolved against
|
|
249
|
+
* all potential loops in the drawing.
|
|
250
|
+
*
|
|
251
|
+
* @param context Active command context.
|
|
252
|
+
* @returns Closed loops derived from all hatchable entities.
|
|
253
|
+
*/
|
|
254
|
+
AcApHatchCmd.prototype.collectLoopsFromAllBoundaries = function (context) {
|
|
255
|
+
var e_1, _a;
|
|
256
|
+
var modelSpace = context.doc.database.tables.blockTable.modelSpace;
|
|
257
|
+
var edges = [];
|
|
258
|
+
try {
|
|
259
|
+
for (var _b = __values(modelSpace.newIterator()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
260
|
+
var entity = _c.value;
|
|
261
|
+
edges.push.apply(edges, __spreadArray([], __read(this.buildEdgesFromEntity(entity)), false));
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
265
|
+
finally {
|
|
266
|
+
try {
|
|
267
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
268
|
+
}
|
|
269
|
+
finally { if (e_1) throw e_1.error; }
|
|
270
|
+
}
|
|
271
|
+
return this.buildLoopsFromEdges(edges);
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* Builds best-effort closed loops from boundary edges.
|
|
275
|
+
*
|
|
276
|
+
* The loop solver is retried with increasing tolerance values and the best
|
|
277
|
+
* (largest) closed-loop result set is returned.
|
|
278
|
+
*
|
|
279
|
+
* @param edges Input boundary edge set.
|
|
280
|
+
* @returns Closed loops produced by the best tolerance attempt.
|
|
281
|
+
*/
|
|
282
|
+
AcApHatchCmd.prototype.buildLoopsFromEdges = function (edges) {
|
|
283
|
+
var e_2, _a;
|
|
284
|
+
if (edges.length === 0)
|
|
285
|
+
return [];
|
|
286
|
+
// Try from strict to loose tolerance, and keep the best closed-loop result.
|
|
287
|
+
var tolerances = [1e-6, 1e-5, 1e-4, 1e-3];
|
|
288
|
+
var best = [];
|
|
289
|
+
try {
|
|
290
|
+
for (var tolerances_1 = __values(tolerances), tolerances_1_1 = tolerances_1.next(); !tolerances_1_1.done; tolerances_1_1 = tolerances_1.next()) {
|
|
291
|
+
var tolerance = tolerances_1_1.value;
|
|
292
|
+
var loops = AcGeLoop2d.buildFromEdges(edges, tolerance).filter(function (loop) { return loop.closed && loop.numberOfEdges > 0; });
|
|
293
|
+
if (loops.length > best.length) {
|
|
294
|
+
best = loops;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
299
|
+
finally {
|
|
300
|
+
try {
|
|
301
|
+
if (tolerances_1_1 && !tolerances_1_1.done && (_a = tolerances_1.return)) _a.call(tolerances_1);
|
|
302
|
+
}
|
|
303
|
+
finally { if (e_2) throw e_2.error; }
|
|
304
|
+
}
|
|
305
|
+
return best;
|
|
306
|
+
};
|
|
307
|
+
/**
|
|
308
|
+
* Calculates polygon signed area using the shoelace formula.
|
|
309
|
+
*
|
|
310
|
+
* @param points Polygon vertices.
|
|
311
|
+
* @returns Signed area; positive/negative sign depends on winding direction.
|
|
312
|
+
*/
|
|
313
|
+
AcApHatchCmd.prototype.signedArea = function (points) {
|
|
314
|
+
if (points.length < 3)
|
|
315
|
+
return 0;
|
|
316
|
+
var sum = 0;
|
|
317
|
+
for (var i = 0, j = points.length - 1; i < points.length; j = i++) {
|
|
318
|
+
var p1 = points[j];
|
|
319
|
+
var p2 = points[i];
|
|
320
|
+
sum += p1.x * p2.y - p2.x * p1.y;
|
|
321
|
+
}
|
|
322
|
+
return sum * 0.5;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Tests whether one point lies on a finite segment within a tolerance.
|
|
326
|
+
*
|
|
327
|
+
* @param px Test point X.
|
|
328
|
+
* @param py Test point Y.
|
|
329
|
+
* @param ax Segment start X.
|
|
330
|
+
* @param ay Segment start Y.
|
|
331
|
+
* @param bx Segment end X.
|
|
332
|
+
* @param by Segment end Y.
|
|
333
|
+
* @param tolerance Distance tolerance.
|
|
334
|
+
* @returns `true` if point is on segment; otherwise `false`.
|
|
335
|
+
*/
|
|
336
|
+
AcApHatchCmd.prototype.isPointOnSegment = function (px, py, ax, ay, bx, by, tolerance) {
|
|
337
|
+
if (tolerance === void 0) { tolerance = 1e-8; }
|
|
338
|
+
var abx = bx - ax;
|
|
339
|
+
var aby = by - ay;
|
|
340
|
+
var apx = px - ax;
|
|
341
|
+
var apy = py - ay;
|
|
342
|
+
var cross = Math.abs(abx * apy - aby * apx);
|
|
343
|
+
if (cross > tolerance)
|
|
344
|
+
return false;
|
|
345
|
+
var dot = apx * abx + apy * aby;
|
|
346
|
+
if (dot < -tolerance)
|
|
347
|
+
return false;
|
|
348
|
+
var len2 = abx * abx + aby * aby;
|
|
349
|
+
if (dot - len2 > tolerance)
|
|
350
|
+
return false;
|
|
351
|
+
return true;
|
|
352
|
+
};
|
|
353
|
+
/**
|
|
354
|
+
* Determines whether a point is inside (or on boundary of) a polygon.
|
|
355
|
+
*
|
|
356
|
+
* Boundary points are treated as inside to keep seed-point behavior stable
|
|
357
|
+
* near loop edges.
|
|
358
|
+
*
|
|
359
|
+
* @param point Test point.
|
|
360
|
+
* @param polygon Polygon vertices.
|
|
361
|
+
* @returns `true` when inside or on boundary.
|
|
362
|
+
*/
|
|
363
|
+
AcApHatchCmd.prototype.isPointInPolygon = function (point, polygon) {
|
|
364
|
+
if (polygon.length < 3)
|
|
365
|
+
return false;
|
|
366
|
+
for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
|
367
|
+
var a = polygon[j];
|
|
368
|
+
var b = polygon[i];
|
|
369
|
+
if (this.isPointOnSegment(point.x, point.y, a.x, a.y, b.x, b.y)) {
|
|
370
|
+
return true;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
var inside = false;
|
|
374
|
+
for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
|
375
|
+
var xi = polygon[i].x;
|
|
376
|
+
var yi = polygon[i].y;
|
|
377
|
+
var xj = polygon[j].x;
|
|
378
|
+
var yj = polygon[j].y;
|
|
379
|
+
var intersects = yi > point.y !== yj > point.y &&
|
|
380
|
+
point.x < ((xj - xi) * (point.y - yi)) / (yj - yi + Number.EPSILON) + xi;
|
|
381
|
+
if (intersects)
|
|
382
|
+
inside = !inside;
|
|
383
|
+
}
|
|
384
|
+
return inside;
|
|
385
|
+
};
|
|
386
|
+
/**
|
|
387
|
+
* Builds loop metadata and parent/child containment relationships.
|
|
388
|
+
*
|
|
389
|
+
* @param loops Candidate closed loops.
|
|
390
|
+
* @returns Loop info array with area and hierarchy metadata.
|
|
391
|
+
*/
|
|
392
|
+
AcApHatchCmd.prototype.buildLoopInfos = function (loops) {
|
|
393
|
+
var _this = this;
|
|
394
|
+
var infos = [];
|
|
395
|
+
loops.forEach(function (loop) {
|
|
396
|
+
var points = loop.getPoints(128).map(function (p) { return ({ x: p.x, y: p.y }); });
|
|
397
|
+
if (points.length < 3)
|
|
398
|
+
return;
|
|
399
|
+
infos.push({
|
|
400
|
+
loop: loop,
|
|
401
|
+
points: points,
|
|
402
|
+
area: Math.abs(_this.signedArea(points)),
|
|
403
|
+
parent: null,
|
|
404
|
+
children: []
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
for (var i = 0; i < infos.length; i++) {
|
|
408
|
+
var sample = infos[i].points[0];
|
|
409
|
+
var parentIndex = null;
|
|
410
|
+
var parentArea = Number.POSITIVE_INFINITY;
|
|
411
|
+
for (var j = 0; j < infos.length; j++) {
|
|
412
|
+
if (i === j)
|
|
413
|
+
continue;
|
|
414
|
+
if (infos[j].area <= infos[i].area)
|
|
415
|
+
continue;
|
|
416
|
+
if (!this.isPointInPolygon(sample, infos[j].points))
|
|
417
|
+
continue;
|
|
418
|
+
if (infos[j].area < parentArea) {
|
|
419
|
+
parentArea = infos[j].area;
|
|
420
|
+
parentIndex = j;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
infos[i].parent = parentIndex;
|
|
424
|
+
if (parentIndex != null) {
|
|
425
|
+
infos[parentIndex].children.push(i);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return infos;
|
|
429
|
+
};
|
|
430
|
+
/**
|
|
431
|
+
* Resolves which loops should be used for one pick-point seed.
|
|
432
|
+
*
|
|
433
|
+
* Strategy:
|
|
434
|
+
* - Find the smallest containing loop as target.
|
|
435
|
+
* - Include direct children as holes unless style is `Ignore`.
|
|
436
|
+
*
|
|
437
|
+
* @param point Seed point selected by user.
|
|
438
|
+
* @param loops Candidate loops.
|
|
439
|
+
* @returns Ordered loop set to append into one hatch entity.
|
|
440
|
+
*/
|
|
441
|
+
AcApHatchCmd.prototype.resolveLoopsForPickPoint = function (point, loops) {
|
|
442
|
+
var _this = this;
|
|
443
|
+
var infos = this.buildLoopInfos(loops);
|
|
444
|
+
if (!infos.length)
|
|
445
|
+
return [];
|
|
446
|
+
var containing = infos
|
|
447
|
+
.map(function (info, index) {
|
|
448
|
+
return _this.isPointInPolygon(point, info.points) ? index : -1;
|
|
449
|
+
})
|
|
450
|
+
.filter(function (index) { return index >= 0; });
|
|
451
|
+
if (!containing.length)
|
|
452
|
+
return [];
|
|
453
|
+
containing.sort(function (a, b) { return infos[a].area - infos[b].area; });
|
|
454
|
+
var target = containing[0];
|
|
455
|
+
var selected = new Set([target]);
|
|
456
|
+
// Pick-points mode should hatch the region connected to the picked seed.
|
|
457
|
+
// Use target loop as outer boundary and its direct children as holes.
|
|
458
|
+
if (AcApHatchCmd._lastSettings.style !== AcDbHatchStyle.Ignore) {
|
|
459
|
+
infos[target].children.forEach(function (child) { return selected.add(child); });
|
|
460
|
+
}
|
|
461
|
+
return __spreadArray([], __read(selected), false).map(function (index) { return infos[index].loop; });
|
|
462
|
+
};
|
|
463
|
+
/**
|
|
464
|
+
* Creates and appends one hatch entity from computed loops.
|
|
465
|
+
*
|
|
466
|
+
* @param context Active command context.
|
|
467
|
+
* @param loops Boundary loops to be added to the hatch.
|
|
468
|
+
* @returns `true` when hatch entity was created; otherwise `false`.
|
|
469
|
+
*/
|
|
470
|
+
AcApHatchCmd.prototype.appendHatch = function (context, loops) {
|
|
471
|
+
if (!loops.length)
|
|
472
|
+
return false;
|
|
473
|
+
var hatch = new AcDbHatch();
|
|
474
|
+
var settings = AcApHatchCmd._lastSettings;
|
|
475
|
+
hatch.patternName = settings.patternName;
|
|
476
|
+
hatch.patternType = AcDbHatchPatternType.Predefined;
|
|
477
|
+
hatch.patternScale = settings.patternScale;
|
|
478
|
+
hatch.patternAngle = (settings.patternAngleDeg * Math.PI) / 180;
|
|
479
|
+
hatch.hatchStyle = settings.style;
|
|
480
|
+
hatch.isSolidFill = settings.patternName.toUpperCase() === 'SOLID';
|
|
481
|
+
loops.forEach(function (loop) { return hatch.add(loop); });
|
|
482
|
+
context.doc.database.tables.blockTable.modelSpace.appendEntity(hatch);
|
|
483
|
+
return true;
|
|
484
|
+
};
|
|
485
|
+
/**
|
|
486
|
+
* Prompts for pattern name and updates persisted command settings.
|
|
487
|
+
*
|
|
488
|
+
* @returns Promise resolved when prompt flow completes.
|
|
489
|
+
*/
|
|
490
|
+
AcApHatchCmd.prototype.promptPatternName = function () {
|
|
491
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
492
|
+
var strOptions, result;
|
|
493
|
+
var _a;
|
|
494
|
+
return __generator(this, function (_b) {
|
|
495
|
+
switch (_b.label) {
|
|
496
|
+
case 0:
|
|
497
|
+
strOptions = new AcEdPromptStringOptions(AcApI18n.t('jig.hatch.patternName'));
|
|
498
|
+
strOptions.allowEmpty = false;
|
|
499
|
+
strOptions.defaultValue = AcApHatchCmd._lastSettings.patternName;
|
|
500
|
+
strOptions.useDefaultValue = true;
|
|
501
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getString(strOptions)];
|
|
502
|
+
case 1:
|
|
503
|
+
result = _b.sent();
|
|
504
|
+
if (result.status !== AcEdPromptStatus.OK)
|
|
505
|
+
return [2 /*return*/];
|
|
506
|
+
AcApHatchCmd._lastSettings.patternName = this.normalizePatternName((_a = result.stringResult) !== null && _a !== void 0 ? _a : strOptions.defaultValue);
|
|
507
|
+
return [2 /*return*/];
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
});
|
|
511
|
+
};
|
|
512
|
+
/**
|
|
513
|
+
* Prompts for pattern scale and updates persisted command settings.
|
|
514
|
+
*
|
|
515
|
+
* @returns Promise resolved when prompt flow completes.
|
|
516
|
+
*/
|
|
517
|
+
AcApHatchCmd.prototype.promptPatternScale = function () {
|
|
518
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
519
|
+
var options, result, value;
|
|
520
|
+
var _a;
|
|
521
|
+
return __generator(this, function (_b) {
|
|
522
|
+
switch (_b.label) {
|
|
523
|
+
case 0:
|
|
524
|
+
options = new AcEdPromptDoubleOptions(AcApI18n.t('jig.hatch.scale'));
|
|
525
|
+
options.allowNone = true;
|
|
526
|
+
options.allowNegative = false;
|
|
527
|
+
options.allowZero = false;
|
|
528
|
+
options.defaultValue = AcApHatchCmd._lastSettings.patternScale;
|
|
529
|
+
options.useDefaultValue = true;
|
|
530
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getDouble(options)];
|
|
531
|
+
case 1:
|
|
532
|
+
result = _b.sent();
|
|
533
|
+
if (result.status !== AcEdPromptStatus.OK)
|
|
534
|
+
return [2 /*return*/];
|
|
535
|
+
value = (_a = result.value) !== null && _a !== void 0 ? _a : options.defaultValue;
|
|
536
|
+
if (value > 0) {
|
|
537
|
+
AcApHatchCmd._lastSettings.patternScale = value;
|
|
538
|
+
}
|
|
539
|
+
return [2 /*return*/];
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
});
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* Prompts for pattern angle (degrees) and updates persisted settings.
|
|
546
|
+
*
|
|
547
|
+
* @returns Promise resolved when prompt flow completes.
|
|
548
|
+
*/
|
|
549
|
+
AcApHatchCmd.prototype.promptPatternAngle = function () {
|
|
550
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
551
|
+
var options, result;
|
|
552
|
+
var _a;
|
|
553
|
+
return __generator(this, function (_b) {
|
|
554
|
+
switch (_b.label) {
|
|
555
|
+
case 0:
|
|
556
|
+
options = new AcEdPromptDoubleOptions(AcApI18n.t('jig.hatch.angle'));
|
|
557
|
+
options.allowNone = true;
|
|
558
|
+
options.allowNegative = true;
|
|
559
|
+
options.allowZero = true;
|
|
560
|
+
options.defaultValue = AcApHatchCmd._lastSettings.patternAngleDeg;
|
|
561
|
+
options.useDefaultValue = true;
|
|
562
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getDouble(options)];
|
|
563
|
+
case 1:
|
|
564
|
+
result = _b.sent();
|
|
565
|
+
if (result.status !== AcEdPromptStatus.OK)
|
|
566
|
+
return [2 /*return*/];
|
|
567
|
+
AcApHatchCmd._lastSettings.patternAngleDeg =
|
|
568
|
+
(_a = result.value) !== null && _a !== void 0 ? _a : options.defaultValue;
|
|
569
|
+
return [2 /*return*/];
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
});
|
|
573
|
+
};
|
|
574
|
+
/**
|
|
575
|
+
* Prompts for hatch style (`Normal` / `Outer` / `Ignore`).
|
|
576
|
+
*
|
|
577
|
+
* @returns Promise resolved when prompt flow completes.
|
|
578
|
+
*/
|
|
579
|
+
AcApHatchCmd.prototype.promptStyle = function () {
|
|
580
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
581
|
+
var current, options, result;
|
|
582
|
+
return __generator(this, function (_a) {
|
|
583
|
+
switch (_a.label) {
|
|
584
|
+
case 0:
|
|
585
|
+
current = this.styleToKeyword(AcApHatchCmd._lastSettings.style);
|
|
586
|
+
options = new AcEdPromptKeywordOptions("".concat(AcApI18n.t('jig.hatch.style'), " <").concat(current, ">"));
|
|
587
|
+
options.allowNone = true;
|
|
588
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.normal.display'), AcApI18n.t('jig.hatch.keywords.normal.global'), AcApI18n.t('jig.hatch.keywords.normal.local'));
|
|
589
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.outer.display'), AcApI18n.t('jig.hatch.keywords.outer.global'), AcApI18n.t('jig.hatch.keywords.outer.local'));
|
|
590
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.ignore.display'), AcApI18n.t('jig.hatch.keywords.ignore.global'), AcApI18n.t('jig.hatch.keywords.ignore.local'));
|
|
591
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getKeywords(options)];
|
|
592
|
+
case 1:
|
|
593
|
+
result = _a.sent();
|
|
594
|
+
if (result.status === AcEdPromptStatus.Keyword && result.stringResult) {
|
|
595
|
+
AcApHatchCmd._lastSettings.style = this.keywordToStyle(result.stringResult);
|
|
596
|
+
}
|
|
597
|
+
return [2 /*return*/];
|
|
598
|
+
}
|
|
599
|
+
});
|
|
600
|
+
});
|
|
601
|
+
};
|
|
602
|
+
/**
|
|
603
|
+
* Prompts for associative mode switch (`Yes` / `No`).
|
|
604
|
+
*
|
|
605
|
+
* @returns Promise resolved when prompt flow completes.
|
|
606
|
+
*/
|
|
607
|
+
AcApHatchCmd.prototype.promptAssociative = function () {
|
|
608
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
609
|
+
var current, options, result;
|
|
610
|
+
return __generator(this, function (_a) {
|
|
611
|
+
switch (_a.label) {
|
|
612
|
+
case 0:
|
|
613
|
+
current = AcApHatchCmd._lastSettings.associative ? 'Yes' : 'No';
|
|
614
|
+
options = new AcEdPromptKeywordOptions("".concat(AcApI18n.t('jig.hatch.associative'), " <").concat(current, ">"));
|
|
615
|
+
options.allowNone = true;
|
|
616
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.yes.display'), AcApI18n.t('jig.hatch.keywords.yes.global'), AcApI18n.t('jig.hatch.keywords.yes.local'));
|
|
617
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.no.display'), AcApI18n.t('jig.hatch.keywords.no.global'), AcApI18n.t('jig.hatch.keywords.no.local'));
|
|
618
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getKeywords(options)];
|
|
619
|
+
case 1:
|
|
620
|
+
result = _a.sent();
|
|
621
|
+
if (result.status === AcEdPromptStatus.Keyword) {
|
|
622
|
+
AcApHatchCmd._lastSettings.associative = result.stringResult === 'Yes';
|
|
623
|
+
}
|
|
624
|
+
return [2 /*return*/];
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
});
|
|
628
|
+
};
|
|
629
|
+
/**
|
|
630
|
+
* Executes object-selection branch of HATCH.
|
|
631
|
+
*
|
|
632
|
+
* @param context Active command context.
|
|
633
|
+
* @returns `true` if a hatch was created from selected objects.
|
|
634
|
+
*/
|
|
635
|
+
AcApHatchCmd.prototype.doSelectObjects = function (context) {
|
|
636
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
637
|
+
var options, result, loops;
|
|
638
|
+
return __generator(this, function (_a) {
|
|
639
|
+
switch (_a.label) {
|
|
640
|
+
case 0:
|
|
641
|
+
options = new AcEdPromptSelectionOptions(AcApI18n.t('jig.hatch.select'));
|
|
642
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getSelection(options)];
|
|
643
|
+
case 1:
|
|
644
|
+
result = _a.sent();
|
|
645
|
+
if (result.status !== AcEdPromptStatus.OK || !result.value)
|
|
646
|
+
return [2 /*return*/, false];
|
|
647
|
+
loops = this.collectLoopsFromIds(context, result.value.ids);
|
|
648
|
+
if (!loops.length)
|
|
649
|
+
return [2 /*return*/, false];
|
|
650
|
+
return [2 /*return*/, this.appendHatch(context, loops)];
|
|
651
|
+
}
|
|
652
|
+
});
|
|
653
|
+
});
|
|
654
|
+
};
|
|
655
|
+
/**
|
|
656
|
+
* Executes pick-points branch of HATCH.
|
|
657
|
+
*
|
|
658
|
+
* The user can place multiple seed points. Each accepted point attempts
|
|
659
|
+
* one hatch creation, and pressing Enter terminates this branch.
|
|
660
|
+
*
|
|
661
|
+
* @param context Active command context.
|
|
662
|
+
* @returns `true` if at least one hatch was created.
|
|
663
|
+
*/
|
|
664
|
+
AcApHatchCmd.prototype.doPickPoints = function (context) {
|
|
665
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
666
|
+
var sourceLoops, created, pointOptions, pointResult, loops;
|
|
667
|
+
return __generator(this, function (_a) {
|
|
668
|
+
switch (_a.label) {
|
|
669
|
+
case 0:
|
|
670
|
+
sourceLoops = this.collectLoopsFromAllBoundaries(context);
|
|
671
|
+
if (!sourceLoops.length)
|
|
672
|
+
return [2 /*return*/, false];
|
|
673
|
+
created = false;
|
|
674
|
+
_a.label = 1;
|
|
675
|
+
case 1:
|
|
676
|
+
if (!true) return [3 /*break*/, 3];
|
|
677
|
+
pointOptions = new AcEdPromptPointOptions(AcApI18n.t('jig.hatch.pickPoint'));
|
|
678
|
+
pointOptions.allowNone = true;
|
|
679
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getPoint(pointOptions)];
|
|
680
|
+
case 2:
|
|
681
|
+
pointResult = _a.sent();
|
|
682
|
+
if (pointResult.status !== AcEdPromptStatus.OK || !pointResult.value)
|
|
683
|
+
return [3 /*break*/, 3];
|
|
684
|
+
loops = this.resolveLoopsForPickPoint(pointResult.value, sourceLoops);
|
|
685
|
+
if (!loops.length)
|
|
686
|
+
return [3 /*break*/, 1];
|
|
687
|
+
if (this.appendHatch(context, loops)) {
|
|
688
|
+
created = true;
|
|
689
|
+
}
|
|
690
|
+
return [3 /*break*/, 1];
|
|
691
|
+
case 3: return [2 /*return*/, created];
|
|
692
|
+
}
|
|
693
|
+
});
|
|
694
|
+
});
|
|
695
|
+
};
|
|
696
|
+
/**
|
|
697
|
+
* Runs the interactive command-line HATCH workflow.
|
|
698
|
+
*
|
|
699
|
+
* Main loop behavior:
|
|
700
|
+
* - Direct entity pick: hatch from picked boundary object.
|
|
701
|
+
* - Keyword branches: pick-points, select-objects, or option editing.
|
|
702
|
+
* - Enter/Cancel: exits command.
|
|
703
|
+
*
|
|
704
|
+
* @param context Active command context.
|
|
705
|
+
* @returns Promise resolved when command ends.
|
|
706
|
+
*/
|
|
707
|
+
AcApHatchCmd.prototype.execute = function (context) {
|
|
708
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
709
|
+
var running, options, result, loops, keyword;
|
|
710
|
+
var _a;
|
|
711
|
+
return __generator(this, function (_b) {
|
|
712
|
+
switch (_b.label) {
|
|
713
|
+
case 0:
|
|
714
|
+
running = true;
|
|
715
|
+
_b.label = 1;
|
|
716
|
+
case 1:
|
|
717
|
+
if (!running) return [3 /*break*/, 18];
|
|
718
|
+
options = new AcEdPromptEntityOptions(AcApI18n.t('jig.hatch.prompt'));
|
|
719
|
+
options.allowNone = true;
|
|
720
|
+
options.setRejectMessage(AcApI18n.t('jig.hatch.invalidBoundary'));
|
|
721
|
+
options.addAllowedClass('Polyline');
|
|
722
|
+
options.addAllowedClass('Circle');
|
|
723
|
+
options.addAllowedClass('Arc');
|
|
724
|
+
options.addAllowedClass('Line');
|
|
725
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.pick.display'), AcApI18n.t('jig.hatch.keywords.pick.global'), AcApI18n.t('jig.hatch.keywords.pick.local'));
|
|
726
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.select.display'), AcApI18n.t('jig.hatch.keywords.select.global'), AcApI18n.t('jig.hatch.keywords.select.local'));
|
|
727
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.pattern.display'), AcApI18n.t('jig.hatch.keywords.pattern.global'), AcApI18n.t('jig.hatch.keywords.pattern.local'));
|
|
728
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.scale.display'), AcApI18n.t('jig.hatch.keywords.scale.global'), AcApI18n.t('jig.hatch.keywords.scale.local'));
|
|
729
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.angle.display'), AcApI18n.t('jig.hatch.keywords.angle.global'), AcApI18n.t('jig.hatch.keywords.angle.local'));
|
|
730
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.style.display'), AcApI18n.t('jig.hatch.keywords.style.global'), AcApI18n.t('jig.hatch.keywords.style.local'));
|
|
731
|
+
options.keywords.add(AcApI18n.t('jig.hatch.keywords.associative.display'), AcApI18n.t('jig.hatch.keywords.associative.global'), AcApI18n.t('jig.hatch.keywords.associative.local'));
|
|
732
|
+
return [4 /*yield*/, AcApDocManager.instance.editor.getEntity(options)];
|
|
733
|
+
case 2:
|
|
734
|
+
result = _b.sent();
|
|
735
|
+
if (result.status === AcEdPromptStatus.OK && result.objectId) {
|
|
736
|
+
loops = this.collectLoopsFromIds(context, [result.objectId]);
|
|
737
|
+
if (!loops.length) {
|
|
738
|
+
return [3 /*break*/, 1];
|
|
739
|
+
}
|
|
740
|
+
this.appendHatch(context, loops);
|
|
741
|
+
return [3 /*break*/, 1];
|
|
742
|
+
}
|
|
743
|
+
if (!(result.status === AcEdPromptStatus.Keyword)) return [3 /*break*/, 17];
|
|
744
|
+
keyword = (_a = result.stringResult) !== null && _a !== void 0 ? _a : '';
|
|
745
|
+
if (!(keyword === 'PickPoints')) return [3 /*break*/, 4];
|
|
746
|
+
return [4 /*yield*/, this.doPickPoints(context)];
|
|
747
|
+
case 3:
|
|
748
|
+
_b.sent();
|
|
749
|
+
return [3 /*break*/, 16];
|
|
750
|
+
case 4:
|
|
751
|
+
if (!(keyword === 'SelectObjects')) return [3 /*break*/, 6];
|
|
752
|
+
return [4 /*yield*/, this.doSelectObjects(context)];
|
|
753
|
+
case 5:
|
|
754
|
+
_b.sent();
|
|
755
|
+
return [3 /*break*/, 16];
|
|
756
|
+
case 6:
|
|
757
|
+
if (!(keyword === 'Pattern')) return [3 /*break*/, 8];
|
|
758
|
+
return [4 /*yield*/, this.promptPatternName()];
|
|
759
|
+
case 7:
|
|
760
|
+
_b.sent();
|
|
761
|
+
return [3 /*break*/, 16];
|
|
762
|
+
case 8:
|
|
763
|
+
if (!(keyword === 'Scale')) return [3 /*break*/, 10];
|
|
764
|
+
return [4 /*yield*/, this.promptPatternScale()];
|
|
765
|
+
case 9:
|
|
766
|
+
_b.sent();
|
|
767
|
+
return [3 /*break*/, 16];
|
|
768
|
+
case 10:
|
|
769
|
+
if (!(keyword === 'Angle')) return [3 /*break*/, 12];
|
|
770
|
+
return [4 /*yield*/, this.promptPatternAngle()];
|
|
771
|
+
case 11:
|
|
772
|
+
_b.sent();
|
|
773
|
+
return [3 /*break*/, 16];
|
|
774
|
+
case 12:
|
|
775
|
+
if (!(keyword === 'HatchStyle')) return [3 /*break*/, 14];
|
|
776
|
+
return [4 /*yield*/, this.promptStyle()];
|
|
777
|
+
case 13:
|
|
778
|
+
_b.sent();
|
|
779
|
+
return [3 /*break*/, 16];
|
|
780
|
+
case 14:
|
|
781
|
+
if (!(keyword === 'AssociativeMode')) return [3 /*break*/, 16];
|
|
782
|
+
return [4 /*yield*/, this.promptAssociative()];
|
|
783
|
+
case 15:
|
|
784
|
+
_b.sent();
|
|
785
|
+
_b.label = 16;
|
|
786
|
+
case 16: return [3 /*break*/, 1];
|
|
787
|
+
case 17:
|
|
788
|
+
running = false;
|
|
789
|
+
return [3 /*break*/, 1];
|
|
790
|
+
case 18: return [2 /*return*/];
|
|
791
|
+
}
|
|
792
|
+
});
|
|
793
|
+
});
|
|
794
|
+
};
|
|
795
|
+
/**
|
|
796
|
+
* Last-used command settings shared by all `AcApHatchCmd` instances.
|
|
797
|
+
*/
|
|
798
|
+
AcApHatchCmd._lastSettings = {
|
|
799
|
+
patternName: 'ANSI31',
|
|
800
|
+
patternScale: 1,
|
|
801
|
+
patternAngleDeg: 0,
|
|
802
|
+
style: AcDbHatchStyle.Normal,
|
|
803
|
+
associative: true
|
|
804
|
+
};
|
|
805
|
+
return AcApHatchCmd;
|
|
806
|
+
}(AcEdCommand));
|
|
807
|
+
export { AcApHatchCmd };
|
|
808
|
+
//# sourceMappingURL=AcApHatchCmd.js.map
|