Announcements
Welcome to the Revit Ideas Board! Before posting, please read the helpful tips here. Thank you for your Ideas!
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

hide elements in linked model

hide elements in linked model

This is a very important functionality that we need for our interior design firm.  We work on large hotel projects within the architect's linked model.  If we are working on a design option within the architects linked model, we need to be able to remove certain bits of the architectural work so we can draw our revised layout proposals.  This is extremely painful to do under the current circumstances.  It is crucial to our work to be able to hide and unhide elements within linked models.  This is not possible using the API either...believe me, I've tried:

 

https://forums.autodesk.com/t5/revit-api-forum/hide-elements-in-linked-file/td-p/5777305

 

James

39 Comments
james.levieux
Advocate

So is this impossible?  I feel like I'm shouting into the wind here but I'm just going to keep going on because my life is hell no matter what I do....

 

  1. Selection filters that work on linked models are ESSENTIAL for interiors work.
  2. The architect won't commit to changing their shell until we have approvals from ownership.  So we are FORCED to do all our presentation drawings by modifying their shell model using "hiding in view".
  3. Most Revit user who work with linked models know how stupidly difficult it is to select multiple elements in a linked model...and then have to do it over and over again IN EVERY VIEW so each view looks consistent.
  4. Rules filters are NOT adequate for the wide variety of elements that we may need to hide.
  5. Asking the architect to use additional worksets or design options is not an option.  We need to be able to hide  a wide selection or random objects unilaterally and globally or our life is hell using Revit.

I love Revit but I hate this shortcoming just as much.  It makes me sad that this wonderful product does not deliver for us.  We will still use Revit (because that's how we get some of our jobs) but we don't LIKE it.

 

James

jeremy_tammik
Alumni

Thank you for your perseverance and passion. I passed this on as well. I'm sure you will be heard sooner or later. Looking forward to hearing their response.

Mbruno-JDB
Advocate

@james.levieux ,

 

I'd just like to say that I work in Foodservice consulting.  We have same issues with hiding walls in linked models, drawing in our own to show the architect where we want them.  Then we have to check updated models to see if the hidden walls have been fixed, then unhide them and delete our walls.  If we still have to hide walls once we're into CDs, it's so many more views that have to be manipulated.

I've been trying to come up with a better process, but so far it's eluded me.

 

erikhianke
Contributor

Dear Revit Team,

 

Currently, when dealing with linked files, the common practice is to hide and later try to reveal some elements. However, this approach can be quite inefficient, especially when multiple files are overlapping, making it difficult to accurately select and display the desired elements.

 

We suggest adding functionality that allows you to temporarily hide elements that are part of links in Revit, with the ability to quickly restart the display of these elements when necessary. This tool would provide greater flexibility and efficiency in managing the visibility of linked elements, simplifying the work process for users.

 

We believe that this functionality would bring significant benefits, especially in complex projects that involve multiple links. This temporary hiding capability would make it easier to navigate and select specific elements, improving user experience and optimizing workflow.

 

Best regards,
Erik Hianke

lvirone
Enthusiast

Hello everyone,

 

I've found a solution:

//Select elements using UIDocument and then use PostCommand "HideElements"

//elemsFromRevitLinkInstance is "List<Element>", there are the elements you want to hide in the link
var refs = elemsFromRevitLinkInstance.Select(x => new Reference(x).CreateLinkReference(revitLinkInstance)).ToList();

uidoc.Selection.SetReferences(refs);

uidoc.Application.PostCommand(RevitCommandId.LookupPostableCommandId(PostableCommand.HideElements));

 

I've posted the solution in this thread too: https://forums.autodesk.com/t5/revit-api-forum/hide-elements-in-linked-file/td-p/5777305

rmc9WR3X
Advocate

This should be basic functionality. In our industry we send out RVT models and our clients often take our custom elements and reposition them as they wish then send back their site model including our elements. This is handy for knowing exactly where they want things, but is a massive headache because Revit has no way to target and hide our elements since all the target words like Manufacturer field and description also apply to our newly placed elements in the current revision. So we have to manually Hide Elements in every view by individually clicking on every one of them. This is unbearable.

lvirone
Enthusiast

Hello,

 

You don't need to select elements one by one manually, it's fully automatic!

 

Here is an example without asking the user to select anything :

 

Select the first RevitLinkInstance, retrieve the floors, hide the floors

                //Get a link
                var filter = new ElementClassFilter(typeof(RevitLinkInstance));
                var firstInstanceLink = (RevitLinkInstance)new FilteredElementCollector(doc).WherePasses(filter).ToElements().First();

                //Get its floors
                filter = new ElementClassFilter(typeof(Floor));
                var elemsFromRevitLinkInstance = new FilteredElementCollector(firstInstanceLink.GetLinkDocument()).WherePasses(filter).ToElements();

                //Isolate them
                var refs = elemsFromRevitLinkInstance.Select(x => new Reference(x).CreateLinkReference(firstInstanceLink)).ToList();

                uidoc.Selection.SetReferences(refs);
                uidoc.Application.PostCommand(RevitCommandId.LookupPostableCommandId(PostableCommand.HideElements));

 

rmc9WR3X
Advocate

@lvirone Thank you for the code snippet. Have you built this into an Add-in that can simply be installed?

james.levieux
Advocate

Hi fellow sufferers,

 

I want to chime in a bit here because Autodesk has provided some tiny relief that is available via that API...but even though I've written a working program that leverages this new capability, it's not enough.  This issue is STILL the biggest problem in my BIM life. 

 

The problem is this: With projects of massive scale and complexity, you will need show the same linked walls doors and windows at several different scales and for many different plan types (floor plan, RCP, power plan, lighting plan, FFE plan, etc).  If you're unfortunate enough to be an interior designer, we need to do it in our ELEVATIONS TOO!  Im forced to hide these items over and over and over in different plans and elevations.  It is unacceptably time consuming and we're frankly losing our shirt...and that other word too (without the r).

 

It is simply not enough to be able to hide items just in a single view. We need to be able to apply a selection using some vehicle similar to a view template.  I thoroughly understand AND accept that the members of such a selection set within a linked model might disappear and that I have no control over it.  I have zero problem with that, as long as the "broken" selection can be repaired to update all the necessary views.

 

If implementing this affects performance, perhaps it's a performance hit worth taking for some users... just make it a feature that can be turned on or off for those that need it.

 

Autodesk, would you please hire me to tell you what interior designers need?  It seems like you don't know.  It would improve my life to be working on a solution than suffering daily from the lack thereof.

 

James

Mbruno-JDB
Advocate

@james.levieux 

As Foodservice Consultants, we have many of the same issues as you do. 

Architects, Interior Architects, and Designers will place their own foodservice equipment in our spaces as they are doing preliminary renderings, or they want to show where they want the equipment.  Which we need to hide in all of our views.

We also have to hide their walls and put in our own where we want them to be.  Sometimes, they never fix their models.

More often than not, they are doing all of their work in one workset, even workset1.

We're trying to be more firm and requesting that if they are putting their own representations of our equipment in their models, that they put it into a workset we can turn off. We get requests from architects all the time to put things into special worksets, beyond the worksets we already use to try and make things easier for them.  We always comply.

james.levieux
Advocate

Thanks for that comment Mbruno

 

My thinking is this: 

 

First: I feel sorry for the Architect!  First they take a call from you asking them for certain walls to be on a certain separate workset...and then I call and ask for something else to be on another workset, and then they have their own internal workset needs that might be totally incompatible with ours.  I can totally understand why they may resist our requests. 

 

Second: YES!   We constantly battle with them copying our work into their model and then we have to hide even MORE crappola.  I'm going to start being firm with that too!

jeremy_tammik
Alumni

Wouldn't it be possible to add a marker to certain elements plus define a list of views and automatically hide all the marked elements in all of the listed views? That sounds like a trivial project that anyone could easily implement. Sorry if I am completely missing the point.

james.levieux
Advocate

Hi Jeremy,

 

Thank you for your attention again on this.  I know you've spoken to the dev team about this on my behalf before.  What exactly do you mean by "add a marker" to the linked elements?  They're read only. Do you mean store a list of element IDs from the linked model inside of my model?   Then figure out a way to visually add and subtract elements from that set?  

 

James

james.levieux
Advocate

Sadly, I discovered that there's no postable command to "UnhideElements". 

 

I unhide elements as much as I hide them because, when our changes are approved by the client, the architect will finally update their layout.  When this happens I usually delete our layout elements and manually unhide the architects elements (in plans AND elevations too!!!)  so that we're are 100% coordinated.

 

It's truly WAY more work than anyone should have to do.  We interiors people have it the worst because we draw more interior elevations than any other discipline.  

 

James

 

 

lvirone
Enthusiast

Hi @james.levieux,

 

You can mimic the behavior of Revit's hide and unhide features by creating a new view, hiding elements using the PostCommand, and then deleting the view when you need to unhide them. While it's not optimal—since, as mentioned by another user, the Revit API lacks an Unhide command for references instead of ElementId—it does work.

 

Process :

I hope it helps!

Mbruno-JDB
Advocate

We have had limited success using filters to hide things.

It's easiest when the architect is using a custom family with something unique in the family name, like their initials.

However, we do have some cases, where we just cannot get a filter to work.

 

james.levieux
Advocate

Thank you Ivirone.  If I understand you correctly, it would be impossible for us to revert back to an older view in the way you have suggested. By the time the architect has updated their model, we have developed our interior plans and elevations to a point that simply deleting  our plans and elevations is simply out of the question.  We add very many tweaks to the architects model using the linework tool and many annotations which would all be lost by reverting back to an older view.

 

A working solution is necessary.

james.levieux
Advocate

Yes,  thank you Mbruno.  I often use filters when I can, but walls and doors are hard because usually you need to hide selected doors and selected walls.  So this is also, effectively, not a solution.

 

There is no getting around the fact that we need to be able to store a selection of linked elements somehow.

 

Short of that, at least provide a built-in hide and unhide tool specifically for linked models (and that can be applied to selected views as Jeremy suggested!) so that the lives of interior architects aren't quite as horrible as they are now.

 

James

arq_42
Advocate

Groups have a feature called "Exclude element from group," where you can individually select an element within a group instance and "delete" that element from only that group instance. It still appears in the other groups, and if you want to recover what was deleted from that instance, you can.

 

Well, my suggestion is to do the same, but with linked Revit models.

 

Sometimes you have linked models with multiple instances (for example, a repeated apartment building, or a typical home in a residential development), but it often happens that one of those instances is slightly different.


Until now, the way to act in these cases is to duplicate models or go view by view, manually hiding the element in question.

It would be great if you could work with these instances just like with groups, deleting elements from a single instance without having to modify or duplicate the original model.

Tags (4)

Can't find what you're looking for? Ask the community or share your knowledge.

Submit Idea