Overriding LayerTableRecord's visibility per View/ViewRecord

Overriding LayerTableRecord's visibility per View/ViewRecord

Anonymous
Not applicable
2,445 Views
10 Replies
Message 1 of 11

Overriding LayerTableRecord's visibility per View/ViewRecord

Anonymous
Not applicable

I am having problems with users with multiple viewports - changes in one window are affecting another. After some digging, I have established this is because I am changing the visibility of the layer table record on a global basis - I change one viewport and change the layer table records' visibility for it, but this is global and affects other open viewports. I've seen there is a .GetViewportOverrides method on the LayerTableRecord object but this doesn't seem to allow the .IsOff property to be overridden. Am I missing something?

0 Likes
Accepted solutions (1)
2,446 Views
10 Replies
Replies (10)
Message 2 of 11

Alexander.Rivilis
Mentor
Mentor

You can not off layer(s) in viewport, but can freeze layer(s) in viewport:

https://help.autodesk.com/view/ACD/2022/ENU/?guid=GUID-04F71808-2FFA-4BFE-A3C5-7FD418A63B4C

It can be done with help of Viewport.FreezeLayersInViewport  method.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 3 of 11

Anonymous
Not applicable

Thanks, that's helpful. I can't find a programmatic example though. The viewport overrides in C# seem to have options for Transparency, Line weight, etc but nothing for ffreezing?

0 Likes
Message 4 of 11

SENL1362
Advisor
Advisor

in short:

var layersToFreeze = new ObjectIdCollection();
var layersToThaw = new ObjectIdCollection();
//add layers to each collection
var pvp = (Viewport)tr.GetObject(vpId, OpenMode.ForWrite);
pvp.FreezeLayersInViewport(layersToFreeze.GetEnumerator());
pvp.ThawLayersInViewport(layersToThaw.GetEnumerator());
//Don't forget to dispose the Collections
0 Likes
Message 5 of 11

Anonymous
Not applicable

Thanks. I'm now stuck getting hold of the viewport instance (or the vpId in your example). Editor.CurrentViewportObjectId is 0; Editor.ActiveViewportId I can get a ViewTableRecord but not a Viewport; LayoutManager not returning anything either....

0 Likes
Message 6 of 11

Alexander.Rivilis
Mentor
Mentor

@Anonymous wrote:

Thanks. I'm now stuck getting hold of the viewport instance (or the vpId in your example). Editor.CurrentViewportObjectId is 0; Editor.ActiveViewportId I can get a ViewTableRecord but not a Viewport; LayoutManager not returning anything either....


Editor.CurrentViewportObjectId is 0 if you in ModelSpace. But if you in PaperSpace Editor.CurrentViewportObjectId is not 0.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 7 of 11

Anonymous
Not applicable

Ah, thanks. Yes, I'm in ModelSpace.

0 Likes
Message 8 of 11

Alexander.Rivilis
Mentor
Mentor

@Anonymous wrote:

Ah, thanks. Yes, I'm in ModelSpace.


But viewports are in PaperSpace...

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 9 of 11

Anonymous
Not applicable

Maybe I'm confused then. I have a DWG file open with the screen divided into two parts, side-by-side, with the split vertical. That's the 'Viewport Configuration' I set from that option on the View menu. ???

0 Likes
Message 10 of 11

Alexander.Rivilis
Mentor
Mentor
Accepted solution

You can only freeze/thaw layers in PaperSpace viewport, but not in ModelSpace viewport.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 11 of 11

Anonymous
Not applicable

Right, so everything I'm trying is pointless! Ok, thanks.

0 Likes