У меня получалось переключать сменой файла таблиц, как у вас в примере. Но я делала через PlotSettingsValidator и для этого способа нужно создавать набор параметров листа:
private void ChangePlotStyleTable()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database db = doc.Database;
ObjectId CurrentSpaceId = db.CurrentSpaceId; // Использовать, если нужно добавлять объекты в текущий лист, вместо ModelSpace
using (Transaction trans = db.TransactionManager.StartTransaction())
{
DBDictionary pSettingsDict = trans.GetObject(db.PlotSettingsDictionaryId, OpenMode.ForWrite) as DBDictionary;
LayoutManager layoutMngr = LayoutManager.Current;
Layout currentLayout = trans.GetObject(layoutMngr.GetLayoutId(layoutMngr.CurrentLayout), OpenMode.ForWrite) as Layout;
PlotSettings pSettings = default(PlotSettings);
if(!pSettingsDict.Contains("PlotSettings1"))
{
pSettings = new PlotSettings(currentLayout.ModelType);
pSettings.CopyFrom(currentLayout);
pSettings.PlotSettingsName = "PlotSettings1";
pSettings.AddToPlotSettingsDictionary(db);
trans.AddNewlyCreatedDBObject(pSettings,true);
}
else
{
pSettings = pSettingsDict.GetAt("PlotSettings1").GetObject(OpenMode.ForWrite) as PlotSettings;
}
PlotSettingsValidator validator = PlotSettingsValidator.Current;
validator.SetCurrentStyleSheet(pSettings, "ncad.stb");
currentLayout.CopyFrom(pSettings);
currentLayout.UpgradeOpen();
trans.Commit();
}
doc.Editor.Regen();
}