Just having a little fun
namespace ExecMethod
{
using System;
using System.Collections.Generic;
using Autodesk.AutoCAD.DatabaseServices;
using AcAp = Autodesk.AutoCAD.ApplicationServices;
using SysVar = System.Collections.Generic.KeyValuePair<string, object>;
public class SysVars
{
// Fields
private Stack<SysVar> _varStack;
public SysVars()
{
this._varStack = new Stack<SysVar>();
}
// Properties
public Stack<SysVar> VarStack
{
get { return this._varStack; }
}
// Methods
public void SetVar(string name, object value)
{
if (value == null)
{
throw new ArgumentNullException("Value");
}
object o = AcAp.Application.GetSystemVariable(name);
AcAp.Application.SetSystemVariable(name, value);
this._varStack.Push(new SysVar(name, o));
}
public SysVar Pop(bool set)
{
SysVar var = this._varStack.Pop();
if (set)
{
AcAp.Application.SetSystemVariable(var.Key, var.Value);
}
return var;
}
public void PopAll(bool set)
{
if (set)
{
foreach (SysVar var in this._varStack)
{
AcAp.Application.SetSystemVariable(var.Key, var.Value);
}
}
this._varStack.Clear();
}
}
}
and then
[CommandMethod("doit")]
public static void doit()
{
SysVars vars = new SysVars();
try
{
vars.SetVar("CLAYER", "0");
//do stuff
}
catch
{
//catch stuff
}
finally
{
vars.PopAll(true); //reset the vars
}
}