using SolidWorks.Interop.sldworks;
|
using System.Collections;
|
|
namespace PdmSwPlugin.Main.EventHandler
|
{
|
/// <summary>
|
/// 通用文档事件处理器
|
/// </summary>
|
public class BaseEventHandler
|
{
|
protected ISldWorks iSwApp;
|
protected ModelDoc2 document;
|
protected BaseAttacher userAddIn;
|
|
protected Hashtable openModelViews;
|
|
public BaseEventHandler(ModelDoc2 modDoc, BaseAttacher docEventHandler)
|
{
|
document = modDoc;
|
iSwApp = docEventHandler.SwApp;
|
userAddIn = docEventHandler;
|
openModelViews = new Hashtable();
|
}
|
|
/// <summary>
|
/// 附加事件
|
/// </summary>
|
/// <returns></returns>
|
virtual public bool AttachEventHandlers()
|
{
|
return true;
|
}
|
|
/// <summary>
|
/// 移除事件
|
/// </summary>
|
/// <returns></returns>
|
virtual public bool DetachEventHandlers()
|
{
|
return true;
|
}
|
|
/// <summary>
|
/// 附加视图事件
|
/// </summary>
|
/// <returns></returns>
|
public bool ConnectModelViews()
|
{
|
IModelView mView;
|
mView = (IModelView)document.GetFirstModelView();
|
|
while (mView != null)
|
{
|
if (!openModelViews.Contains(mView))
|
{
|
DocViewEventHandler dView = new DocViewEventHandler(userAddIn, mView, this);
|
dView.AttachEventHandlers();
|
openModelViews.Add(mView, dView);
|
}
|
mView = (IModelView)mView.GetNext();
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 移除视图事件
|
/// </summary>
|
/// <returns></returns>
|
public bool DisconnectModelViews()
|
{
|
//Close events on all currently open docs
|
DocViewEventHandler dView;
|
int numKeys;
|
numKeys = openModelViews.Count;
|
|
if (numKeys == 0)
|
{
|
return false;
|
}
|
|
object[] keys = new object[numKeys];
|
|
//Remove all ModelView event handlers
|
openModelViews.Keys.CopyTo(keys, 0);
|
foreach (ModelView key in keys)
|
{
|
dView = (DocViewEventHandler)openModelViews[key];
|
dView.DetachEventHandlers();
|
openModelViews.Remove(key);
|
dView = null;
|
}
|
return true;
|
}
|
|
public bool DetachModelViewEventHandler(ModelView mView)
|
{
|
DocViewEventHandler dView;
|
if (openModelViews.Contains(mView))
|
{
|
dView = (DocViewEventHandler)openModelViews[mView];
|
openModelViews.Remove(mView);
|
mView = null;
|
dView = null;
|
}
|
return true;
|
}
|
}
|
}
|