Anuncios
Welcome to the Revit Ideas Board! Before posting, please read the helpful tips here. Thank you for your Ideas!

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

Comentarios
Anonymous

Often when linking in models you get a second set of grids with bubbles. Usually I turn them off by managing worksets and closing the grids workset.  Alternatively you can go VG and turn off grids in the revit linked view. 

 

There should be a view option to just "show grids in my model only"  

 

 

Collaborator
Collaborator

I think the best way to tackle it would be being able to apply filters to links only (as suggested here) - that way it can be in as many templates as you need it without the tediousness (and potential effect on other graphics) of turning off worksets or managing each link individually.

Nice Idea.

I would like also to be a type property of the linked file. 

Advisor
Advisor

Not just Grids, but Levels (and probably Reference Planes), too. We currently turn off all annotation for all links in our View Templates (and leave a few working views with them on for coordination & using copy/monitor). The thing is, where do you draw the line? Maybe better as an add-in tool that will "turn off linked anno in all views", etc.?

I agree, adding all datums into the properties of the link is a good idea.

But I echo your concern about this idea, how far should it go? While you can use filters and prebuilt links in your view templates, we all know that will become complicated especially when any links gets added later in the process. Multiple View Templates need to be updated and all it takes is one miss and the documents suffer.

 

But I would propose like in V/G, where a link behaves by host view settings or be overridden by view, this idea would leverage the link's type property default's (turning grids, levels, reference planes off), but add settings at the view level to control those link properties (and add to view templates if necessary), and do away with filters for this type of control.

 

 

Anonymous

So why not just use V/G and turn off the annotation of the linked files? Yes, there may be a few extra steps, but...?

Because sometimes there should be some simple global settings in Revit to make life easier. Especially as it relates to linked models. But that's just my 2 cents. 

Collaborator
Collaborator

Modifying the visibility of items in each links V/G is not only time consuming (unless you have placeholder links it has to be done in each project, not in the template), but to modify one element you must take all control ALL model/annotation elements for that link separately from the host file. What if you want to have reference planes controlled by the host while modifying the levels? 

 

Since there is always a need for coordination, it's not likely that I'd want to turn off levels or reference planes globally.  Adding a way to target links in a filter would be the most flexible.

Advisor
Advisor
Anonymous

Just give the grids/ levels in your host model a unique name and use a filter in your view template to turn all others off. Takes 10 seconds. No need to waste time changing workset or Revit link visibility.

Advisor
Advisor

@Anonymous Awesome idea! I wish we could give kudos to Idea comments...

 

I tend to think about using Filters only if I can't get the control I need using the Categories (wanting finer control - such as for a couple types from a category), but often don't think that it can be used just as easily for coarser control of multiple categories, especially from multiple links! Thanks!

Advisor
Advisor

Also want to mention: while using a Filter solves this particular wish (and saves us a few steps with each link), we still need other link-related wish(es) because we still need to set Discipline to Coordination, check Halftone and Underlay, etc. for each link.

Anonymous

@Anonymous That is a good solution, thanks for chiming in.  In fact I've used that one in a few projects.  It's somewhat hard to explain to other folks in the office.  So I think a built in solution would be a lot better.  

 

 

Contributor
Contributor

Good idea - I'm constantly having to either put together custom filters specific to families in the linked models or worse just tab-click and do a "hide in view" brute force for certain items, multiplied by many different views.

 

Not having a ton of experience working with Design Options, it looks like all the elements for multiple design options show through on our plans (a partner put their matchlines on a different design option for instance, and they still show up). Perhaps there needs to be a "Design Option Mapping" function similar to the one for Phase Mapping between linked models (unless that is already a thing somewhere)? 

Advocate
Advocate

I agree that Design Option Mapping might be wonderful but I don't want to muddy the waters with that issue here.  We usually just want to do something small like show a door in a different position from the architect and we don't want to bother the architect (yet) with a coordination request.  It's such a common need that we tend to do DD drawings in AUTOCAD (horrors) because it's so difficult to manipulate the AOR model.  A truly infuriating fee bleed in my opinion.  It's probably Revit's biggest limitation for interior designers. Better hide-in-view capability (either in the editor or the API) would do us interior designers huge favor.  

 

As a side note, I'd ask all ID people to speak up about this.  All the other consultant get lots of special tools to do what they do...and interiors, we're just lumped in with the architects as if we do exactly the same thing in exactly the same way.  Everyone in the AEC community and our clients would benefit if our workflow was smoothed.

 

James

 

 

Autodesk
Autodesk

I just discussed this idea with the development team, and they reply: As a work-around they could try to select the linked elements in the file and run the postable command 'HideElements', which would effectively be the UI version thereof, and will work on the given view and the given view only. Generally speaking, "hide in view" is a silly command to run via the UI outside of the occasional work-around, and something to be avoid in the API as it introduces BULK changes which can take MONTHS (sadly not a joke - I had a bad experience once) to track down in the UI. The use of a filter would be preferable here, and likely fits well. If they were able to bulk select the elements via the API, then it's likely that a filter would work just as well, and give the benefit of being easily applied to new views without needing an add-in, and quick to disable on any one (or many) views.

Advocate
Advocate

Thank you for your inquiry Jeremy. 

 

There is absolutely no doubt that using a selection filter would be the best solution.  Hide in views is a nightmare.  I may have misunderstood, but the person in dev seems to think that it's possible to select linked model items and add them to a selection filter.  That is not possible in the UI.

 

I could certainly write an API program to bulk select elements, but after that, it would not allow me to save the selection so that I could apply a filter.

Autodesk
Autodesk

Thank you for the clarification. I pointed this out to the devteam and await their explanation...

Advocate
Advocate

Disappointing not to hear back from the dev team yet.  I thought I'd take some time to describe how much extra work is required by us interior architects to use Revit as a design tool. 

 

In the following example, imagine a large hotel project, where the architect has already been working on the model for 4 years.  We're hired to design the lobby, restaurant, bar, ballroom, meeting rooms, and club.  There are two public restroom that we are going to design.  The architect has drawn restrooms but it's a placeholder for permitting purposes.  The kitchen is drawn but we need to make changes since we've changed the restaurant program a bit.  So we've basically wiped out everything on level 1 except the BOH offices....

 

In a perfect world:

  1. Add selected elements of a linked model to a selection filter
  2. Apply filter and make not visible
  3. Draw whatever you want in the blank space and the rest of the linked model remains up-to-date.
  4. Eventually, after the architect adds the new architectural wall and doors following our new design, delete the filter.

In this world:

  1.  Two modes are required.  The current arch linked model and a custom arch linked model
  2.  Make copy of current arch model to use as our new custom linked model.
  3.   Create a new workset in custom model for items to remove and close workset so items aren't visible.
  4.   Assign all items (walls, casework, ceiling, doors, etc) that we want to hide to the new workset.
  5.   For curtain walls, if we need to add or move a door, we must hide remove the entire curtain wall.
  6.   This is the worst part....The architect will update the model from time to time.  They don't use BIM360 so they post updates every week, so we need compare models every week AND make updates to our custom linked model.  In order to do that:
    1. link the current arch model into our custom model.
    2. create view template that shows all current model elements in a different color.
    3. Identify elements (on 3 separate levels) that have changed and copy new elements into custom model.  Select the new items in the linked model (very tedious method using ctrl+pick to select individual elements. can't use window selection), then copy, then paste "in same place".  Delete or move other elements.
  7. Draw whatever you want in the blank space and repeat step 6 every week.
  8. Eventually, after the architect adds the new architectural wall and doors following our new design, we'll reload the link from the current model.

 

See the difference?  This is only HALF the reason why Revit is not popular with ID.  Don't get me started about not being able to apply wall finishes to a linked model!  

 

 

The ID discipline needs some focused attention and dedicated tools.

Autodesk
Autodesk

Thank you again! I passed this on to the devteam and asked them to take a look at it for you.

Advocate
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

Autodesk
Autodesk

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.

Advocate
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.

 

Enthusiast
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

Advocate
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.

Enthusiast
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));

 

Advocate
Advocate

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

Advocate
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

Advocate
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.

Advocate
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!

Autodesk
Autodesk

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.

Advocate
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

Advocate
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

 

 

Enthusiast
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!

Advocate
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.

 

Advocate
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.

Advocate
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