Quick C# version
[LispFunction("Netlsp-ChangeTextStyleName")]
public static ResultBuffer ChangeTextStyleName(ResultBuffer resultBufferIn)
{
TypedValue[] lispArgs = resultBufferIn.AsArray();
string textStyleName = (string)lispArgs[0].Value;
string newTextStyleName = (string)lispArgs[1].Value;
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trx = db.TransactionManager.StartTransaction())
{
TextStyleTable textStyleTbl = (TextStyleTable)trx.GetObject(db.TextStyleTableId, OpenMode.ForRead);
TextStyleTableRecord textStyleTableRecord = (TextStyleTableRecord)trx.GetObject(textStyleTbl[textStyleName], OpenMode.ForWrite);
textStyleTableRecord.Name = newTextStyleName;
trx.Commit();
return new ResultBuffer(new TypedValue((int)LispDataType.T_atom));
}
}
C# version that allows third parameter of T or nil.
If T it returns text explaining the error for example if:
parameters are wrong, the textsytle does not exist, the new name already exist etc......
if nil will return nil if errors ot if does not exist etc....
[LispFunction("Netlsp-ChangeTextStyleName")]
public static ResultBuffer ChangeTextStyleName(ResultBuffer resultBufferIn)
{
TypedValue[] lispArgs = resultBufferIn.AsArray();
bool returnErrorString = false;
if (lispArgs[2].TypeCode == (short)LispDataType.T_atom)
{
returnErrorString = true;
}
if (lispArgs.Length > 3 || lispArgs.Length < 2)
{
if (returnErrorString)
{
return new ResultBuffer(new TypedValue((int)LispDataType.Text, "Incorrect Number Paramteres"));
}
else
{
return new ResultBuffer(new TypedValue((int)LispDataType.Nil));
}
}
if (!(lispArgs[0].TypeCode == (short)LispDataType.Text))
{
if (returnErrorString)
{
return new ResultBuffer(new TypedValue((int)LispDataType.Text, "First Parameter is not a string"));
}
else
{
return new ResultBuffer(new TypedValue((int)LispDataType.Nil));
}
}
if (!(lispArgs[1].TypeCode == (short)LispDataType.Text))
{
if (returnErrorString)
{
return new ResultBuffer(new TypedValue((int)LispDataType.Text, "Second Parameter is not a string"));
}
else
{
return new ResultBuffer(new TypedValue((int)LispDataType.Nil));
}
}
string textStyleName = (string)lispArgs[0].Value;
string newTextStyleName = (string)lispArgs[1].Value;
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trx = db.TransactionManager.StartTransaction())
{
TextStyleTable textStyleTbl = (TextStyleTable)trx.GetObject(db.TextStyleTableId, OpenMode.ForRead);
if (!textStyleTbl.Has(textStyleName))
{
if (returnErrorString)
{
return new ResultBuffer(new TypedValue((int)LispDataType.Text, "The TextStye does not exist"));
}
else
{
return new ResultBuffer(new TypedValue((int)LispDataType.Nil));
}
}
if (textStyleTbl.Has(newTextStyleName))
{
if (returnErrorString)
{
return new ResultBuffer(new TypedValue((int)LispDataType.Text, "The TextStye already exist"));
}
else
{
return new ResultBuffer(new TypedValue((int)LispDataType.Nil));
}
}
TextStyleTableRecord textStyleTableRecord = (TextStyleTableRecord)trx.GetObject(textStyleTbl[textStyleName], OpenMode.ForWrite);
textStyleTableRecord.Name = newTextStyleName;
trx.Commit();
return new ResultBuffer(new TypedValue((int)LispDataType.T_atom));
}
}