Rotating a Family After Placing

Hi @process.aw,

As @Czaja showed in its video addFamilyInstanceByLocation takes a plane as an input.
The component honors the plane orientation when inserting new instances.
It had a bug and didn’t work well the first time it creates the family instance.
Now it’s fixed, so could you please update and confirm is fixed on your side as well?

1 Like

I noticed the same “lag” with populating windows inside walls.

I am having similar issues with rotating a family. I am testing some of the features and attempting to populate a vertical surface with an individual brick family I created. I am getting the error “Can’t rotate element into this position.” I tried using the host parameter by inputting the individual planes for the rotated bricks then using the center point of those planes for the location, but that also did not work. The example image is just using the planes as the input location.

The brick family is at 0,0,0 and oriented in the same direction as they are on the surface. They just aren’t rotating when pushed to Revit. I have edited the family to be “work plane based” and that also did not work. They stay vertical with no rotation. Any ideas why they wouldn’t be rotating?


See this discussion

Did anyone come across a solution for rotating columns?

If i place with a curve then there is no way to control the rotation, if i place with Family then rotation is there but not way to create the height. Tried to add a set parameter to set Top Level but it didn’t work?

Thanks

Dear all,

I recognized that the “Add Family Instance” component changed after the last update.
Before it was possible to use a “SketchPlane” as host element to place families that are rotated in space.
Now I get the error message “Data conversion failed from Revit Sketch Plane to Revit Host”.

Is there any other way to place families that are rotated three-dimensionally?
The family I want to place is a work plane based family.

Thanks in advance!

Not sure this is helpful, but the place component takes a rhino plane for insert. Here is how I did it in the past: https://www.rhino3d.com/inside/revit/beta/samples/column-family-along-curve

Hi Scott,

thanks for your reply, the problem with my panels is that they are not only rotated but also tilted.
If I try it with a plane only, the component complains that it can’t rotate the element into that position.

I see the problem, you are seeing in the image. But can you send the definition?

When working with panels I tend to use Adaptive components to place panels in 3d space. Then Rhino has complete control of the corner points. And then you do not have to rely on the a hosting object. Here is an adaptive component sample: https://www.rhino3d.com/inside/revit/beta/samples/adaptive-components-with-grasshopper

I am sure there is some way to do the rotation in 3d like you are working on, but determining that from a series of 2d rotations can be a real challenge. I would need to look at the specific model and give it a run ourselves.

Also to follow along with @eirannejad answer up above. There is an Issue that we have fixed here: https://github.com/mcneel/rhino.inside-revit/issues/139

It would require the latest build, from yesterday. Have you updated lately?

In addition @kike has been updating the components too and may have more information about this specific issue.

There is a new installer available with a fix for this.

I guess you are using a Work Plane-Based family.

Now this should work.

1 Like

Thanks a lot, it works now.
Amazing!

Hi again,

The family placement still works great, but I’m currently running into a performance issue, since I have to place a huge amount of elements (50000+). It currently takes a few hours to do so, does anyone have a tip on how to speed up the process?

We would have to benchmark the process.

But determining the best approach based on the specific situation helps too.

For instance:

  1. is it 50000 separate families each instance is different form?
  2. Is it 50000 family instances of the same form?
  3. Could an adaptive component be made to adapt to each situation and then use Grasshopper to simply place the 50000 examples?
  4. Could a smarter Revit Family definition be made to adapt to all the conditions? Then use Grasshopper to simply place and write a few parameter values?
1 Like

Hi Scott,

thanks for your fast reply.

Currently I’m placing 6 different Families, they are all work-plane based generic models similar to the ones shown in the screenshot I posted a few weeks ago.

To create the Family I basically convert a Rhino block into a Revit family using the Rhino.Inside create family component.

I would benchmark this a bit. See where the time is being spent.

  1. If the 6 Families are created by one Grasshopper definition. Then turn that off. Then have a definition that places the 50,000 instances without having to create the New families. See how fast that is. That eliminates the Rhino > Revit Geometry conversion from the equation.
  2. Second test is to create 6 different simple box families. Then using the very simple box familiy place the 50,000. It is possible the geometry in the Family is too complicated. There are situations you would keep the highly accurate 6 objects in Rhino for fabrication and use a simplified geometry in Revit to produce drawings and schedules of the overall building. Then send the Rhino model to the contractor to be able to produce the accurate part.

@kike , does that mean I would have to tick “Work Plane-Based” for each family created manually?
Or is there an option to do that within Grasshopper?

Create a new family template file to use

Generic Model_WP.rft in this example

image

@rickson, I see.
This means I will use this as a template when creating future families. Cool, thanks!

Is there a way to access this option via C# or Python? I have zero experience with the API in Revit, so this might be a nightmare for me.

The standard way to make a new template is to create a new family (generic model) then make your changes, save the family (.rfa) then rename to .rft and place in the template folder. If my memory serves me correct.