diff --git a/src/Add-on/DrawBoard/FixIntersectSelfContour.ts b/src/Add-on/DrawBoard/FixIntersectSelfContour.ts index c6d2a6ba2..c714b5e81 100644 --- a/src/Add-on/DrawBoard/FixIntersectSelfContour.ts +++ b/src/Add-on/DrawBoard/FixIntersectSelfContour.ts @@ -4,7 +4,7 @@ import { Intent } from "../../Common/Toaster"; import { Board } from "../../DatabaseServices/Entity/Board"; import { Polyline } from "../../DatabaseServices/Entity/Polyline"; import { Command } from "../../Editor/CommandMachine"; -import { PromptStatus } from "../../Editor/PromptResult"; +import { PromptSsgetResult, PromptStatus } from "../../Editor/PromptResult"; import { CreateContour2 } from "../../Geometry/CreateContour2"; import { AppToaster } from "../../UI/Components/Toaster"; @@ -12,11 +12,33 @@ export class FixIntersectSelfContour implements Command { async exec() { - let brRes = await app.Editor.GetSelection({ - Msg: "选择板件", - Filter: { filterTypes: [Board] }, - UseSelect: true, - }); + let forceMode = false; + + let brRes: PromptSsgetResult; + while (true) + { + brRes = await app.Editor.GetSelection({ + Msg: "选择板件", + Filter: { filterTypes: [Board] }, + UseSelect: true, + KeyWordList: [{ key: "Q", msg: forceMode ? "关闭强制修正模式!" : "开启强制修正模式!" }] + }); + + if (brRes.Status === PromptStatus.Keyword) + { + if (brRes.StringResult === "Q") + { + forceMode = !forceMode; + AppToaster.show({ + message: `成功切换到${forceMode ? "强制修正" : "非强制修正"}模式`, + timeout: 5000, + intent: Intent.SUCCESS, + }); + } + continue; + } + break; + } if (brRes.Status === PromptStatus.Cancel) return; @@ -28,7 +50,7 @@ export class FixIntersectSelfContour implements Command { let contour = br.ContourCurve; if (contour instanceof Polyline && - (contour.TempData?.IntSelf || contour.IsIntersectSelf())) + (forceMode || contour.TempData?.IntSelf || contour.IsIntersectSelf())) { let newContor = CreateContour2(contour.Explode()); if (newContor)