diff --git a/src/Add-on/FindBoardModelingKnife.ts b/src/Add-on/FindBoardModelingKnife.ts new file mode 100644 index 000000000..52dad982c --- /dev/null +++ b/src/Add-on/FindBoardModelingKnife.ts @@ -0,0 +1,35 @@ +import { app } from "../ApplicationServices/Application"; +import { Board } from "../DatabaseServices/Entity/Board"; +import { Command } from "../Editor/CommandMachine"; +import { PromptStatus } from "../Editor/PromptResult"; +import { equaln } from "../Geometry/GeUtils"; + +export class Command_FindBoardModelingKnife implements Command +{ + async exec() + { + let knifRadiusRes = await app.Editor.GetDistance({ Msg: "输入要查找的刀半径:" }); + + if (knifRadiusRes.Status !== PromptStatus.OK) return; + + let knifeRadius = knifRadiusRes.Distance; + + let brRes = await app.Editor.GetSelection({ + Msg: "选择搜索的板:", + Filter: { + filterFunction: (obj, ent) => + { + if (ent instanceof Board && ent.Grooves.length > 0) + { + if (ent.Grooves.length && ent.Grooves.some(g => equaln(g.KnifeRadius, knifeRadius, 0.1))) + return true; + + if (ent.RelevanceKnifs.length && ent.RelevanceKnifs.some(g => g.Object && equaln((g.Object).KnifeRadius, knifeRadius, 0.1))) + return true; + } + return false; + } + }, + }); + } +} diff --git a/src/Editor/CommandRegister.ts b/src/Editor/CommandRegister.ts index 34cb32064..76c381e89 100644 --- a/src/Editor/CommandRegister.ts +++ b/src/Editor/CommandRegister.ts @@ -47,6 +47,8 @@ import { DrawSpecialShapedBoardByContour } from "../Add-on/DrawBoard/DrawSpecial import { DrawTopBottomBoard } from "../Add-on/DrawBoard/DrawTopBottomBoard"; import { DrawVerticalBoard } from "../Add-on/DrawBoard/DrawVerticalBoard"; import { EditorBoardTemplate } from '../Add-on/DrawBoard/EditorBoardTempate'; +import { FindMaxOrMinSizeBoard } from "../Add-on/DrawBoard/FindMaxSizeBoard"; +import { SetHoleNoneType } from "../Add-on/DrawBoard/SetHoleType"; import { DrawCircle } from "../Add-on/DrawCircle"; import { DrawCylineder } from "../Add-on/DrawCylinder"; import { Command_AutoDimBrs } from "../Add-on/DrawDim/AutoDimBrs"; @@ -104,6 +106,7 @@ import { Command_ExportSTL } from "../Add-on/Exports/ExportSTL"; import { Command_Extend } from "../Add-on/Extends"; import { Command_OpenHistory } from "../Add-on/File/OpenHistory"; import { CommandFillet } from "../Add-on/Fillet"; +import { Command_FindBoardModelingKnife } from "../Add-on/FindBoardModelingKnife"; import { Command_Group, Command_UnGroup } from "../Add-on/Group"; import { Command_HideSelected, Command_HideUnselected, Command_ShowAll, Command_SwitchDoor, SelectAll } from "../Add-on/HideSelected"; import { Command_Insert } from "../Add-on/Insert"; @@ -200,8 +203,6 @@ import { BuyMaterial } from './../Add-on/BuyMaterial'; import { Interfere } from './../Add-on/interfere'; import { ShowKinfeManageModal } from './../Add-on/showModal/ShowKnifeManageModal'; import { commandMachine } from './CommandMachine'; -import { SetHoleNoneType } from "../Add-on/DrawBoard/SetHoleType"; -import { FindMaxOrMinSizeBoard } from "../Add-on/DrawBoard/FindMaxSizeBoard"; export function registerCommand() { @@ -565,6 +566,7 @@ export function registerCommand() commandMachine.RegisterCommand(CommandNames.SetHoleNoneType, new SetHoleNoneType()); commandMachine.RegisterCommand(CommandNames.FindMaxSizeBoard, new FindMaxOrMinSizeBoard()); commandMachine.RegisterCommand(CommandNames.FindMinSizeBoard, new FindMaxOrMinSizeBoard(false)); + commandMachine.RegisterCommand("FindBoardModelingKnife", new Command_FindBoardModelingKnife()); } export async function RegistCustomCommand()