新增Break命令.

pull/80/head
ChenX 6 years ago
parent 2ebad079a4
commit 5e9308a959

@ -0,0 +1,89 @@
import { Vector3 } from "../../node_modules/@types/three";
import { app } from "../ApplicationServices/Application";
import { Circle } from "../DatabaseServices/Circle";
import { Curve } from "../DatabaseServices/Curve";
import { Command } from "../Editor/CommandMachine";
import { PromptStatus } from "../Editor/PromptResult";
export class Command_Break implements Command
{
async exec()
{
let cuRes = await app.m_Editor.GetEntity({
Msg: "请选择被打断的曲线:"
});
if (cuRes.Status !== PromptStatus.OK)
return;
let cu = cuRes.Entity as Curve;
if (!cu) return;
let breakPts: Vector3[] = [];
while (true)
{
let ptRes = await app.m_Editor.GetPoint({
Msg: "请点击被打断的点:"
, KeyWordList: breakPts.length === 0 ? [{ key: "D", msg: "等分打断" }, { key: "S", msg: "等分打断" }] : []
});
if (ptRes.Status === PromptStatus.OK)
{
breakPts.push(ptRes.Value);
continue;
}
//用户输入关键字
else if (ptRes.Status === PromptStatus.Keyword)
{
if (ptRes.StringResult === "D")
{
let divRes = await app.m_Editor.GetDistance({ Msg: "请输入等分个数:" });
if (divRes.Status !== PromptStatus.OK)
return;
if (divRes.Value === 0)
{
app.m_Editor.Prompt("个数不能为0!");
continue;
}
let lenDiv = cu.Length / divRes.Value;
for (let i = 1; i < divRes.Value; i++)
breakPts.push(cu.GetPointAtDistance(lenDiv * i));
}
else if (ptRes.StringResult === "S")
{
let divRes = await app.m_Editor.GetDistance({ Msg: "请输入等分距离:" });
if (divRes.Status !== PromptStatus.OK)
return;
if (divRes.Value === 0)
{
app.m_Editor.Prompt("个数不能为0!");
return;
}
let divCount = cu.Length / divRes.Value;
for (let i = 1; i < divCount; i++)
breakPts.push(cu.GetPointAtDistance(divRes.Value * i));
}
else
{
app.m_Editor.Prompt("未知输入!");
continue;
}
if (cu instanceof Circle)
breakPts.push(cu.StartPoint);
}
break;
}
if (breakPts.length > 0)
{
let cus = cu.GetSplitCurvesByPts(breakPts);
cu.Erase();
cus.forEach(c =>
{
app.m_Database.ModelSpace.Append(c);
});
}
}
}

@ -66,6 +66,7 @@ import { Command_DimTest } from '../DatabaseServices/Dimension/dimTest';
import { commandMachine } from './CommandMachine';
import { Sweep } from '../Add-on/Sweep';
import { Command_Scale } from '../Add-on/Scale';
import { Command_Break } from '../Add-on/Break';
export function registerCommand()
{
@ -96,7 +97,9 @@ export function registerCommand()
commandMachine.RegisterCommand("br", new Command_DrawBoard())
commandMachine.RegisterCommand("c0", new DrawCircle0())
commandMachine.RegisterCommand("c0", new DrawCircle0());
commandMachine.RegisterCommand("break", new Command_Break());
commandMachine.RegisterCommand("s", new Stretch())

Loading…
Cancel
Save