Dear Dynamo Friends,
I am currently working on my graduate thesis where subject is parametrically defining paths of Park landscape design. I do this in Revit and Dynamo.
CCC, my problem… I use adaptive components (one adaptive component represents one path tile) for 3d pathway modeling where entire path is determined by randomly chosen points which I use to create NurbsCurve by points.
path = NurbsCurve.ByPoints(List.Flatten(points,1));
Adaptive components are created in Dynamo by AdaptiveComponent.ByPoints standardly. For some reason there are two adaptive components of 260 parametrically defined which can’t be make in Revit. As I attached images of project, you can notice that there are two missing tile places. Why this is happening? Missing places look same lake places nearby which could be generated…
If you look my code in Dynamo, and try to change pathSegmentLength you possibly can get total number of adaptive components generated. For these given points for path NurbsCurve, if you set pathSegmentLength =10 you will get two impossible adaptive components to generate. But, if you set pathSegmentLength =11 you will get all adaptive components possible to generate.
Please, can someone help me about this unusual problem, but very important to me? Have someone got similar experience?
Thanks in advance,
path-tile - Revit family to insert in any Revit file
Pathway Processing - Dynamo code
segments entire path - Nurbes Curve
I think your Adaptive Component is over constrained.
Below is a possible solution with a simpler AC. The Dynamo definition could be refined further.
The altered files are Dynamo Definition and Simplified Adaptive Component
Thnak you Vikram, I really <span style=“color: #222222;”>appreciate your help. It is always god to know that there are people who wants to help. Anyway, I checked your code, but I have problem further. I really need AC with rail, because I want to generate path tiles with different lengths, and doing so to produce randomly defined paths lines, one one beside the other… I inserted screenshots from your help code where I change length of tile to be greater. S<span style=“color: #262626;”>hould you have another idea how the problem might be solved I would be glad to hear it! </span></span>
<span style=“color: #222222;”>
The junctions are cleaner if a Nurbs Curve is used instead of a PolyCurve (in the first line of code in the defined function). However, the path twists when I do so - the code needs some more refinement.
Not familiar with Python, so wasn’t able to understand your approach.
Might have to figure out some small tweaks to your AC family in order t get it to work. The problem, I think, lies there. Not so much in your dynamo definition.
Vikram that’s a sweet solution. I think that a good way to get rid of the twisting is to use “Curve.HorizontalFrameAtParameter” and then extract the YZ plane from that:
I am sorry, but this function (Curve.HorizontalFrameAtParameter) can’t help me. I need plane which is defined by tangent at parameter and point at parameter at curve , that is exactly what Curve.PlaneAtParameter does… Check attached screenshot HorizontalFrame is something other… (Blue colored is plane at parameter, and green, red and deep blue axis is vectors from horizontal frame)
The horizontal frame is just a horizontally aligned coordinate system. You can extract each of the three main planes of the coordinate system. In the example above, I am extracting the CS’s YZ plane, which is the one perpendicular to the guide curve. The extracted plane remains consistently aligned with the CS and thus aligned with the global horizontal plane.
Hope that clears it up. Good luck on your thesis!
@Dimitar - Attempted using the horizontal frame,but it doesn’t seem to serve the purpose, in this case. However, I have a feeling it should work, if the approach to solving the problem is changed.
@Mica - Sorry. Made a few feeble attempts at getting the AC with rail to work, but couldn’t. However, I still think that it’s the AC family tat needs to be made more robust and flexible, not the Dynamo definition. (The Dynamo definition might need to be altered only if you decide to add more adaptive reference points in the AC family)
But how can one make family more robust or flexible? Is there a way that this family can maintain it’s functionality but without the need for points to be on plane defined by rail start and end point?
I’m actually having similar issues as Mica. So any help would be appreciated.
@Uros - Study the Adaptive Component attached below, it seems to be a little more flexible than the previous ones in this post.
@Mica - The joints are now clean and the definition seems to work most of the time. (Works well for ‘path segment length’ values up to about 40)
Beyond 40, If some segments aren’t created, try tweaking the numbers when calling the function and the ‘path segment length’. Also try with different Nurbs curves.
Dynamo definition: Pathway.dyn
Adaptive Component: path-tile
An optimized dynamo definition. Ensure that the project units are set to meters.
Dynamo File: Pathway.dyn
Adaptive Component: path-tile.rfa
Thank you very much for the example. Yeah, it looks like modifying the family in such manner really helps. I will further test this and report what’s happening but for now it does the trick.
Thank you a lot! It seems to work for my current problem! I continue further…
@Vikram this is fantastic solution for my problem! I tried different values and it has worked! Thanks!!! Congrats, you are really Dynamo/Revit expert!!!