Since, I think, Revit 2013 we've been having issues with Families being hosted to Floors, even though the Family is NOT hosted. It will host to the Level when the Family is placed not over a Floor. If I make the Family "Work Plane-Based" then the user has to select "Place on Work Plane", because the default is to place "Work Plane-Based" Families "Place on Vertical Face", even though the Family is set to "Always vertical". This sounds like a BUG to me, but it hasn't been fixed in YEARS, so I want to have a solution for my users.
So here's the issue with trying to create an API workaround:
The Revit properties window shows the FamilyInstance with:
Level == 1ST LEVEL
Host == Floor : Concrete-4
However, the FamilyInstance.Host == Null && FamilyInstance.HostFace == Null && FamilyInstance.HostParameter == Null, BUT the FamilyInstance.get_Parameter(BuiltInParameter.INSTANCE_FREE_HOST_PARAM).AsString() == "Floor : Concrete-4", which is Read-Only. I can use this Parameter to determine the "Host" so I know which FamilyInstance will need to be fixed.
How do I assign the Level as the new "Host" to the FamilyInstance?
Hello,
I need a little bit of clarification. It seems to me that you are saying that the original problem is that Family Instances that should not be hosted in architectural elements are being forcibly hosted in Architectural elements like floors. Am I correct? I suppose you are placing these family instances through the UI?
Thanks
Gopinath
Yes, your assumption is correct. When I place a family via the UI, it automatically hosts to the floor, if a floor is in the area I'm placing the component at, which is about 95% of the time. The problem is, this doesn't allow me to copy that FamilyInstance to another level because the copied FamilyInstance is on the correct level, but is still hosted to the original floor (throwing a duplicate elements in the same place warning). When we have a multi-story building, this is a HUGE pain in the butt.
To correct it, I'd like to have the component correct itself to the Level instead of the Floor, but I don't see any API that allows me to change the host, when it's not a hosted family. I am able to fix this by just creating a new FamilyInstance in the same place, with the same rotation, coping the parameters to the new FamilyInstance, and then deleting the original FamilyInstance. However, I just don't want to go that route if I can just correct the host.
Thanks!
Hello,
Sincere apologies for the delay in getting back to you. I am consulting engg about this. I will get back to you as soon as I have something.
Cheers
Gopinath
Hello,
Thanks for your patience.
One of my Autodesk colleagues suggested this: "I believe they can place the instance away from the building and it will host to the level. They can then move the instance to the spot they want".
Have you already tried this?
Thanks
Gopinath
Yes. I can add the component out in space away from the floor and have the components host to the Level. I know this works, and this is our workaround now, for "fixing" improperly hosted components. However, this is clearly a workaround and I'm trying to find a better solution. Which is why I thought, using a DMU, or other API, I could change the Host of the component. Using a DMU won't work because the Transaction doesn't close until after the all components are placed when placing them. So I just created a button that will take the elements a user has selected, place duplicate instances in the same place (which won't have a Host) copy the parameters and then delete the original selection.
Hello,
Thanks for the feedback.
Like I mentioned in my private response to you, I logged a change request for API to be able to change the host for copied instances. Please feel free to check back with us from time to time on the status of the request.
Best Regards
Gopinath
Hello,
I Know this is an old topic but I couldn't find any resent one.
Iam currently facing the same problem , Is there any update or change brought with API 2016?
Regards,
Basiony
Dear Atiefenbach,
Do you know the number of the development issue that Gopi submitted for this?
It is not mentioned in his answer above.
I could check its status and prompt the development team for some news.
Thank you!
Cheers,
Jeremy
Dear Atiefenbach,
Thank you.
The number you gave has changed, because the issue was converted from a change request to a wish list item.
Please make a note of the new number for future reference: CF-1521 [Unable to re-host a family instance when copied through the API].
I linked it to the more general wish list item CF-3268 [API wish: set level of element], asked the development team for an update on these, and will let when I hear back from them.
Cheers,
Jeremy
Hi,
Just to say we have come across the same issue using the API, and it has taken a while to find out that API placed families get hosted to floors whereas others don't.
Look forward to getting this fixed.
Dear Andrewharle8552,
Could you provide a reproducible case to prove this behaviour?
http://thebuildingcoder.typepad.com/blog/about-the-author.html#1b
Then I could submit that as an issue for the development team to explore.
It could be classified as a change request and not as a wish list item like the issues mentioned above.
Thank you!
Cheers,
Jeremy
Hi,
I can send you the .DLL file which basically does a keyword search of loaded families and types and allows the user to pick and place a family instance in the current window.
Would prefer to email rather than post here if that's OK.
The DLL on its own is not much use.
Everything we need to reproduce and analyse the issue is listed here:
http://thebuildingcoder.typepad.com/blog/about-the-author.html#1b
Thank you!
Cheers,
Jeremy
For the time being, placing floors on secondary design options all the time forces everyone to place these families on a workplane. Openings and families that do actually cut the floors are placed into the option that houses the floors. The visibility of the secondary design option would have to be managed in all of your views and view templates. Floors tend to get deleted and moved around and it shouldn't impact the established elevation of these placed families without warning you.
Please just make Place on Work Plane the default Placement option when a Family is Work Plane-Based.
I am still having this issue as well. In Revit 2017 even when placing pipe fittings in Revit, not with the API, if you are over a floor it hosts the NON-HOSTED element to the floor (ex. Conc - 6"). This causes copying assemblies or fittings connected to pipe to not work. It will throw the fittings off of the assembly but still think it's connected. It's impossible to copy and it seems as though the Host parameter is non-editable and read only.
Please advise.
Thanks,
It's mind-boggling that this issue hasn't been fixed after so many years. The work- around I use is to have a plan view and section view open at the same time. Select the element in plan, click re-host element (pick new), then switch over to section view and click on the level marker.
This will host the element onto a level rather than a floor and allows you to copy-paste to other floors without issue.