Community
Hi,
I need to save the current view/zoom of the current document and then restore it.
How I can do this?
Thanks
Solved! Go to Solution.
Solved by _gile. Go to Solution.
Hi,
It seems to me the simplest way is to create a named view (ViewTableRecord).
static void SaveCurrentView(Document doc, string viewName) { var db = doc.Database; var ed = doc.Editor; using (var tr = new OpenCloseTransaction()) using (var currentView = ed.GetCurrentView()) { var viewTable = (ViewTable)tr.GetObject(db.ViewTableId, OpenMode.ForRead); ViewTableRecord view; if (viewTable.Has(viewName)) { view = (ViewTableRecord)tr.GetObject(viewTable[viewName], OpenMode.ForWrite); } else { viewTable.UpgradeOpen(); view = new ViewTableRecord(); viewTable.Add(view); tr.AddNewlyCreatedDBObject(view, true); } view.CopyFrom(currentView); view.Name = viewName; tr.Commit(); } } static void RestoreView(Document doc, string viewName) { var db = doc.Database; var ed = doc.Editor; using (var tr = new OpenCloseTransaction()) { var viewTable = (ViewTable)tr.GetObject(db.ViewTableId, OpenMode.ForRead); ViewTableRecord view; if (viewTable.Has(viewName)) { view = (ViewTableRecord)tr.GetObject(viewTable[viewName], OpenMode.ForWrite); ed.SetCurrentView(view); } tr.Commit(); } }
Can't find what you're looking for? Ask the community or share your knowledge.