Align Family to 3D Curve


#1

Hi “Good peoples”

I know that this topic is repeating but I did not find solution for the problem that I have.

I have successfully prepared script to place and rotate families (in xy plane) to a 3D curve. The problem that I have is how to rotate a placed family also in XZ plane.

In general I would like to rotate my Family Instances from point X (x1,y1,z1) to Y (x2,y2,z3)!

Any tips how to add rotation around Y axis to my script?

Any help would be very appreciated!
BOX Rotation_v5.rvt (1.6 MB)
Example_place families with rotation.dyn (76.8 KB)

Best Regards,
Adnan


#2

It feels like a adaptive component issue.


#3

Hi Jeff,

I know about that options but I would not like to use adaptive family.

BR


#4

but I suppose even if their transform is ok, there should be gaps between them. Is that what you want? you probably will go for adaptive component in the end.


#5

I do not want to gaps. In an point two elements (boxes) should come together (ending point of an element is starting point of another element).

Adaptive families means for me more work in Dynamo and preparation of families then to rotate them in Revit manually and that currently does not make any sense…


#6

Is this in relation to this post?

Because it shouldn’t be too complicated to extend that to even distribution of oriented objects.
I’m not exactly clear on what you’re looking for, though. Something like this:

Or more like this:


#7

Hi Avz,

The first picture is what I am searching for. I have already try with your solution but I did not get the right resolut.

Is it possible that you share with me the script or make a screenshot of the nodes for creation of the first picture?

BR


#8

Of course, however it’s using geometry elements, not families.
curvepointdirection3D.dyn (36.8 KB)

You could then send those geometries to Revit using ImportInstance.ByGeometries. There is also a Springs node that lets you create Family Instances from geometry, Springs.FamilyInstance.ByGeometry though I haven’t used that so I can’t tell you exactly how it works.

I’m not sure if it’s possible to arbitrarily rotate Family Instances except maybe with Python (which I’m not familiar enough with). The only way I can think of is a two-stage process; first creating the surfaces to put them on, sending those to Revit, then getting those surfaces to place the instances on (FamilyInstance.ByFace or so), then getting rid of the surfaces again (requires a Python script; I should have that somewhere if you need it).

Archilab has a node that lets you rotate families by around an arbitrary axis but it’ll rotate them every time the script is run, cumulatively, so be careful with that…


#9

Hi,

With the suggestion I have two problems.

  1. With using geometry I am loosing all the meta data which is already prepared in families.
  2. I do not know Python to prepare a script (I am starting with use of Dynamo)

Arch-lab node is not working on my computer I get result “null”. I must try to install it on another computer and give another try.


#10

I’m afraid I don’t have sufficient expertise to be of more help…
Perhaps someone such as @Sol_Amour or @Vikram_Subbaiah could provide more insight in this matter?


#11

Thank you taking time! If any idea come you know where to write it :slight_smile:


#12

I would switch to a simple, line based adaptive component family. Note that you could nest your other standard family into that one. This way you’ll actually save yourself HOURS of time, and avoid some issues the 'rotate family along non-world canonical axis can cause. This type of rotation is actually one of the reasons adaptive components came into existence, and an example of when you’re better off just doing what Revit wants you to.


#13

Hi Jacob!

That is one of the possibilities but what if I told you that I have already prepared ca. 100 generic families and I need to change all of them to adaptive… This will also take time for me…


#14

Jacob,

do you maybe have any idea how to solve this with adaptive family??

Best Regards,