Вопрос:
Я бы хотел изменить визуальный стиль из своей программы, желательно без вызова команды ТЕКВИЗСТИЛЬ (VSCURRENT). Как это можно сделать?
Ответ:
Визуальные стили сохраняются в специальном словаре (Visual Style Dictionary).
Также в каждой записи таблицы видовых экранов (Viewport Table Record) хранится идентификатор визуального стиля.
Для изменения текущего визуального стиля нужно: - найти требуемый стиль в словаре; - указать для требуемого видового экрана идентификатор найденного стиля.
Вот пример на C#:
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
Database db = HostApplicationServices.WorkingDatabase;
Transaction tr = db.TransactionManager.StartTransaction();
ViewportTable vt = (ViewportTable)tr.GetObject(db.ViewportTableId, OpenMode.ForRead);
ViewportTableRecord vtr = (ViewportTableRecord)tr.GetObject(vt["*Active"], OpenMode.ForWrite);
// Найдем текущий видовой экран
DBDictionary dict = (DBDictionary)tr.GetObject(db.VisualStyleDictionaryId, OpenMode.ForRead);
vtr.VisualStyleId = dict.GetAt("Realistic"); // Найдем реалистичный визуальный стиль
// и назначим его для нашего видового экрана
tr.Commit();
ed.UpdateTiledViewportsFromDatabase();