Handling the life cycle of SOLIDWORKS macro feature
MacroFeatureEx{TParams, THandler} Class overload of macro feature allows defining the handler class which will be created for each feature. This provides a simple way to track the macro feature lifecycle (i.e. creation time and deletion time).
using CodeStack.SwEx.MacroFeature;
using CodeStack.SwEx.MacroFeature.Base;
using SolidWorks.Interop.sldworks;
using System.Runtime.InteropServices;
namespace CodeStack.SwEx
{
public class LifecycleMacroFeatureParams
{
}
public class LifecycleMacroFeatureHandler : IMacroFeatureHandler
{
public void Init(ISldWorks app, IModelDoc2 model, IFeature feat)
{
//feature is created or loaded
}
public void Unload(MacroFeatureUnloadReason_e reason)
{
switch (reason)
{
case MacroFeatureUnloadReason_e.Deleted:
//feature is deleted
break;
case MacroFeatureUnloadReason_e.ModelClosed:
//model is closed
break;
}
}
}
[ComVisible(true)]
public class LifecycleMacroFeature : MacroFeatureEx<LifecycleMacroFeatureParams, LifecycleMacroFeatureHandler>
{
protected override MacroFeatureRebuildResult OnRebuild(LifecycleMacroFeatureHandler handler, LifecycleMacroFeatureParams parameters)
{
//TODO: access handler to extract feature specific data
return MacroFeatureRebuildResult.FromStatus(true);
}
}
}
Instance of the handler class will be created and disposed by framework. This approach is useful when macro feature needs to monitor the events of a specific file it resides.