.NET
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Viewport Layer Freeze Display Issue
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
All,
The following code freezes LayerId in all viewports in all layouts except for LayoutToSkip. This all works well except for the fact that the layers do not correctly display, ie they all remain visible in all viewports. When I check the viewport layer settings they are all correct. If the drawing is saved, closed, and re-opened, then the layers correctly display. As you can see, I have tried vp.UpdateDisplay() and ed.UpdateTiledViewportsFromDatabase() which have no effect. Manually trying regen or regenall does not correct the display. Any thoughts? Thanks, Dale
<code>
// this works, but the display is not correct until dwg is re-opened
publicstatic void LayerFreezeAllViewports(ObjectId pLayerId, string pstrLayoutToSkip)
{
Document doc = AcadApp.DocumentManager.MdiActiveDocument;
Editored = doc.Editor;
Databasedb = doc.Database;
using(Transaction tr = db.TransactionManager.StartTransaction())
{
ObjectId[] ids = new ObjectId[1] { pLayerId };
DBDictionary layoutDict = tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;
// get current layout
string lstrCurrentLayout = LayoutManager.Current.CurrentLayout;
foreach(DBDictionaryEntry entry inlayoutDict)
{
if(entry.Key.ToUpper() != "MODEL")
{
Layout lay = tr.GetObject(entry.Value, OpenMode.ForWrite) asLayout;
// new layouts must be initialised - done at create
//if(lay.LayoutName.ToUpper() != lstrCurrentLayout.ToUpper())
//setCurrentLayoutTab(lay.LayoutName);
// check for layout matching param to leave layers on
if(lay.LayoutName.ToUpper() != pstrLayoutToSkip)
{
foreach(ObjectId vpId inlay.GetViewports())
{
Viewport vp = tr.GetObject(vpId, OpenMode.ForWrite) asViewport;
vp.FreezeLayersInViewport(ids.GetEnumerator());
// DESPERATE TRY
vp.UpdateDisplay();
// ??? save/close/open and all is correct
}}}}
tr.Commit();
}
// ed.UpdateTiledViewportsFromDatabase();
}
<code>
Re : Viewport Layer Freeze Display Issue
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi,
IMHO, this is not due to your code but to the current value of LAYOUTREGENCTRL while switching between tabs after you run your code.
Re: Viewport Layer Freeze Display Issue
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Thanks, I'll try that.
Regards, Dale
nb LAYOUTREGENCTL (not CTRL)
