优化:使透明命令能够直接执行,例如在命令执行中,我们可以切换视图(通过按钮运行视图切换命令)

rev_file_ver
ChenX 4 years ago
parent cc697507e4
commit 453328ad2c

@ -6,12 +6,23 @@ import { PromptStatus } from "../Editor/PromptResult";
export class ViewChange implements Command export class ViewChange implements Command
{ {
NoHistory = true;
Transparency = true;
constructor(private viewDir: Vector3, private useWCS = false) constructor(private viewDir: Vector3, private useWCS = false)
{ {
viewDir.normalize(); viewDir.normalize();
} }
//仅当不在布局空间时,才是无历史
get NoHistory()
{
return !app.Viewer.isLayout;
}
//仅当不在布局空间时,才能出发透明命令
get Transparency()
{
return !app.Viewer.isLayout;
}
async exec() async exec()
{ {
if (app.Viewer.isLayout) if (app.Viewer.isLayout)

@ -29,17 +29,6 @@ class CommandMachine
private _CommandNameList = new Set<string>(); private _CommandNameList = new Set<string>();
async ExecCommand(cmdName: string) async ExecCommand(cmdName: string)
{ {
if (CommandState.CommandIng)
{
app.Editor.Prompt("命令尚未结束,如果是程序错误,请按Ctrl+Alt+E强制结束命令!");
return;
}
if (app.Viewer.IsLookSelect)
{
app.Editor.Prompt("视图已经锁定,无法执行命令!(如果是程序出错,请按F12,在Console那边输入:app.Viewer.IsLookSelect = false");
return;
}
const server = CommandServer.GetInstance() as CommandServer; const server = CommandServer.GetInstance() as CommandServer;
if (server.CommandListMap.has(cmdName)) if (server.CommandListMap.has(cmdName))
cmdName = server.CommandListMap.get(cmdName); cmdName = server.CommandListMap.get(cmdName);
@ -57,6 +46,18 @@ class CommandMachine
return; return;
} }
//在透明命令判断完成,避免无法运行透明命令
if (CommandState.CommandIng)
{
app.Editor.Prompt("命令尚未结束,如果是程序错误,请按Ctrl+Alt+E强制结束命令!");
return;
}
if (app.Viewer.IsLookSelect)
{
app.Editor.Prompt("视图已经锁定,无法执行命令!(如果是程序出错,请按F12,在Console那边输入:app.Viewer.IsLookSelect = false");
return;
}
this.CommandStart(cmdName, cmd.NoHistory); this.CommandStart(cmdName, cmd.NoHistory);
app.Editor.SelectCtrl.RestState(); app.Editor.SelectCtrl.RestState();
let abort: boolean = true; let abort: boolean = true;

@ -89,6 +89,15 @@ export class ToolsBlock extends React.Component<ToolsBlockProps, {}>
const { execFun } = this.props; const { execFun } = this.props;
if (CommandState.CommandIng) if (CommandState.CommandIng)
{ {
//执行透明命令
let cmdC = commandMachine.CommandMap.get(cmd);
if (cmdC.Transparency)
{
await cmdC.exec();
app.Editor.UpdateScreen();
return;
}
//结束当前命令 //结束当前命令
app.Editor.Canel(); app.Editor.Canel();
await Sleep(10); await Sleep(10);

Loading…
Cancel
Save