最近对AutoCAD进行二次开发,遇到了一点问题,就是对象选择后会触发某个事件进行程序的处理,当退出该功能模块后进行卸载触发事件。具体如下所示:
使用Addselectchang加载
使用Removeselectchang卸载
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(Sample.ObjectErasedEvent))]
namespace Sample
{
public class ObjectErasedEvent
{
Autodesk.AutoCAD.EditorInput.Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
[CommandMethod("Addselectchang")]
public void AddDocEvent()
{
Document acDoc = Application.DocumentManager.MdiActiveDocument;
acDoc.ImpliedSelectionChanged += new EventHandler(doc_ImpliedSelectionChanged);
}
[CommandMethod("Removeselectchang")]
public void RemoveDocEvent()
{
// Get the current document
Document acDoc = Application.DocumentManager.MdiActiveDocument;
acDoc.ImpliedSelectionChanged -= new EventHandler(doc_ImpliedSelectionChanged);
}
public void doc_ImpliedSelectionChanged(object sender, EventArgs e)
{
PromptSelectionResult pkf = ed.SelectImplied();
if (pkf.Status != PromptStatus.OK) return;
ObjectId[] objIds = pkf.Value.GetObjectIds();
String oids = "";
foreach (ObjectId objId in objIds)
{
oids += "\n " + objId.ToString();
}
。。。。。。
}
}
}
对几个简单的事件进行说明:
BeginDocumentClose 当收到关闭文档的请求时触发
CloseAborted 当试图放弃关闭文档时触发
CloseWillStart 当BeginDocumentClose已被触发,并在文档关闭前触发
CommandCancelled 命令在执行完之前被取消后触发
CommandEnded 命令执行完后触发
CommandFailed 命令不是由于取消而执行失败后触发
CommandWillStart 命令被提交,但在执行前触发
ImpliedSelectionChanged 当前向选择集(pickfirst selection set)发生改变后触发
UnknownCommand 当命令行中收到不可知命令后触发