Skip to main content

Adaptive Spline | Bezier-ish by Points

Bezier-ish by points & Way better Bezier-ish by Points

Spline Type 3

Revit/Vasari has a couple kinds of splines, regular spline (A) and spline-by-points (B). You’d think they were pretty similar, but you’d be wrong. I’d like to show an alternative to these 2 curve types, (C), a point hosted control polygon based curve.



Regular Spline, sometimes called a b-spline, has a control polygon and a weighted “attraction” to the placement points while Spline-by-points passes precisely through it’s placement points. Perhaps more important, the Spline-by-points is much easier to associate with other geometry, flexing and stretching with it’s host in a way that is not possible with the regular spline tool, and it is also a 3 dimensional curve that is not restricted to one plane.

So what can you do if you want the weighted polygon behavior but want to keep the associations between the curve and a host?



As previously discussed, Revit/Vasari has a couple kinds of splines (regular spline and spline-by-points) that you’d think they were pretty similar (but you’d be wrong). I made some tools to improve on this situation using Adaptive Components, but have refined this method. This image shows 3, 4, and 5 point spline-by-point curves inside of an adaptive component rig, superimposed on a regular control polygon spline to illustrate the divergence (There’s not much difference, but double click to take a closer look).
It uses the same methods as shown in this post but does further subdivisions of the control polygons for greater accuracy and flexibility.


A couple of things I noticed. Most significant, the tangency conditions at the start and end are very close approximations. 99 times out of 100, this should be fine. Here is an example of when it falls down:
On the left, two real b-splines drawn coming to tangency conditions. On the right, the 4 point adaptive component spline by point family.


Because the curves come together into a near tangent, but not quite, they slightly overlap. It isn’t visible even zoomed WAY in.



But the result is that you can’t create a form element from the fake b-splines, because it will create a self intersecting form, but the real b-splines can.




[Clarification: This failure is kind of hard to reproduce, it doesn’t happen for all situations even like the one shown, there is a similar geometry in the sample files, and it works perfectly. I think it has to be of a particular really huge scale. In general, you can use this to make forms just fine, as shown inthis post. Here is an exaggerated view of what is happening the joint between the 2 curves at a bazillion times magnification:



Again, I have a hard time reproducing this problem, but it can be done. If you’re worried about it, experiment a little. ]

The other issue that is a bit more obscure, is the four point 4 spline doesn’t create a proper cusp when you do a crossed rectangle (shown here, a rectangle with points going 1, 3,2,4 in clockwise order) as a real bezier does. Rather, it makes a bump.

Popular posts from this blog

Scheduling | Managing Schedule using Dynamo

Schedules on Sheets This node will query all schedules in your project and create two lists. One list will contain all schedules that are currently placed on sheet(s) and one list with schedules that have not yet been placed on sheet(s). Keep in mind that Revision Table built into a Titleblock is really a schedule and will display on the list of schedules on sheets. It might even create more than one instance of such. Schedule Appearance This node allows you to modify schedule appearance settings. Due to my limited Revit API knowledge for now you can only override Title, Header and Body Text type by feeding it an id of a Text Type that you want to use. Use, Get Text Note Type by Name from the archi-lab package to get the appropriate text style. Schedule Formatting This node will allow you to control schedule formatting. Just like in the Revit UI you can control some basic visibility settings per parameter (column) in a schedule. Parameter inputs are: Schedule – thi

Executive | Kinetic | Al-bahar Tower Open Proportion Controlling

1. Extracting 'Panel Instance Value' & 'SunSetting Instance Value', Albahar_SunScript.dyn 2. South View, 3D View, Shadow View 3. In Case of Adjusting to semi-Sphere Order of Albahar_SunScript 1. Make Family 'Albahar_Panel.rfa' 2. Start with 'Mockup-Panel.rfa' or 'Mockup-Panel_Origin' (Upload Panel family) 3. Open Dynamo API 'Albahar_SunScript.dyn' ====================================================== 4. According to the Sun Location, Panel will be changed the feature by the opening proportion  * Opening Proportion = Normalized_Curve_Parameter

SAP2000 | SAP2000-v16.1.1 & Dynamo-v0.7.5

1. SAP2000 - Bounding Box Algorithm  2. SAP2000 - Bounding Box Model 3. SAP2000 - ShellStructure - Algorithm 4. SAP2000 - ShellStructure - Model 5. SAP2000 - SpaceStructure - Algorithm 6. SAP2000 - SpaceStructure - Model 7. SAP2000 - ReadDoam + Decomposition 8. SAP2000 - ReadShell + Decomposition 9. SAP2000 - RunAnalysis-ReadResult 10. SAP2000 - Read_Edit_AddGroup  11. SAP2000 - Read_Edit_AddLoadCase Overview DynamoSAP is an open-source project and is currently available on Dynamo’s package manager . We developed the project in C# using Visual Studio, and tested it with Dynamo 0.7.5 and SAP2000 version 16. The package prescribes a few common workflows, which are outlined in the package’s sample files. The library provides a wide range of opportunities for automation of typical tasks in SAP, such as: a. Creating a structural model. The package allows users to generate structural members by using th