C# CAD二次开发
用C#写了一个命令,其中需要获取对象ID,将获取ID过程封装在方法中;
获取ID的方法需要返回一个 ObjectId 类型的对象 ,该对象部门为 null
那么如果我在CAD中调用了该命令,该命令就会要求用户选取一个对象,用于get其图元ID
如果用户选择了一个正确类型的对象,那么命令可以正常执行,
但如果在执行命令后按了Esc键(通常在CAD中表示取消命令),CAD会直接崩溃,甚至不会弹出进程错误的窗口
那么为了CAD在该种情况下依然能够运行,我计划在该方法检测到“用户按下‘Esc’键”时,直接杀死主命令进程
或者还有其他更好的办法解决?
主命令代码如下
public class ClassPT
{
internal static Document doc = Application.DocumentManager.MdiActiveDocument;
internal static Database db = doc.Database;
static int b波胶 = 20;
static int f分段基数 = 1000;
static int w屏风宽度 = 80;
[CommandMethod("PT")]
public void AdskGreeting()
{
//选取道轨
ObjectId ID道轨 = db.I获取对象ID("选择导轨",typeof(Line));
}
}
方法代码如下
internal static ObjectId I获取对象ID(this Database db, string 提示信息, Type 选择类型)
{
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
PromptEntityOptions 用户输入 = new PromptEntityOptions(提示信息);
PromptEntityResult result = ed.GetEntity(用户输入);
if (result.Status == PromptStatus.Cancel) {
//kill(true); 这里希望杀死调用该方法的进程,如何编写代码?
}
if (用户输入 != null)
{
用户输入.SetRejectMessage("选择的图元类型错误,请重新选择" + 选择类型.ToString());
用户输入.AddAllowedClass(选择类型, true);
}
PromptEntityResult res = ClassPT.doc.Editor.GetEntity(用户输入);
return res.ObjectId;
}