Thursday, February 10, 2011
Almost to the day one year ago I posted Part II of the catenary line. And since I got a comment on if I was ever going to finish it, I thought it about time.
Sadly I don't have the files anymore, but I'll discuss the technique I used back than. I just won't have pictures. Sorry.
To start off there is one addition I have to make to the last post: the parameter nr needs to be an instance parameter!
The next step is to open a new Conceptual Mass and start placing the family created in the previous post. Place the family on the x/z-plane with the origin as insertion point. By changing the nr parameter for each instance to a unique number (with the maximum of 8, since that is what we put down as nr_of_segs as a type parameter) the lines will move and adjust automatically.
At the end you should have a row of lines that form a catenary line. Play around with the parameters to get the exact shape that you want, import it into you project and use the lines to draw trusses, walls, sweeps, or whatever.
I hope this last step works without pictures. Should you have questions, please drop a comment and I'll try to answer them. Good hunting!
Labels: Catenary, Conceptual Mass, Formulas, general
Thursday, February 11, 2010
In my last post I described the math for creating a catenary. Now it's time to get down and dirty and create a family that does this.
The plan is:
- Create a family with a line with a dot at the end that I can hang my line onto - we'll call it "catenary line".
- This family will move the dot horizontally and vertically depending on user input.
- The height of the line will be computed in this family.
- We then create a family "catenary", into which we nest the "catenary line" and which does computing for c.
I start by creating a new Conceptual Mass ( R > New > Conceputual Mass ). And since I want the catenary to be vertical, I set the work plane to the Center(Front/Back) - Reference Plane. On this plane I draw a vertical Line and place a Reference Point at the end.
I then add Dimensions to it and give these dimensions Parameters: x and y.
Now for the "fun" part: the math. I open the Family Types dialogue and enter the following parameters and formulas:
A quick runthrough:
| Parameter | Explanation |
|---|---|
| nr | number of this line (segment) |
| nr_of_segs | number of segments the catenary will have |
| x | The distance of the line from (0,0) calculated by multiplying half the length of the arch with the position of the line (segment number divided by total number of segments) |
| xn | conversion of the distance from (0,0) to a pure number (as opposed to the length x) |
| y | height of the line at this point (this is where the catenary-formula comes in) |
| tlen | half the length of the arch |
| u | number calculated with Newton's Method to get to a |
| a | constant to put into the catenary formula |
| e | Euler's Number |
Armed with this I can now load this family into the catenary family and start creating the catenary. (Which I'll discuss in the next post).
Labels: Catenary, Conceptual Mass, Formulas, general
Tuesday, February 9, 2010
As promised in this post, I'll go into making a parametric family for a catenary arch. I'll do this in two parts, since I can imagine that the actual math is not that interesing to everyone.
So, if you've always hated math and don't want anything to do with it, go here instead and stop reading. This is gonna get boring.
For everyone else, here we go.
The goal is: Make a parametric family, where I can enter a width and a height for the arch and get a catenary.
First the general formula for a catenary is this:

and it looks like this:
As you can see, the graph moves upwards with every increase in a (I have used c in place of the a, just because I had found the formula with a c first). But what we need is a graph that goes through (0,0). So we'll modify the formula:

and we get:
Great. Now we only need to find the right c to fit our purposes and off we go. The way to do this is to substitute the height of the arch for y and half the length of the arch for x and solve for c. Easy.
In this example I want an arch 30m wide and 5m high:

Now we run into 2 problems:
- Revit does not know what a cosh (Hyperbolic Cosin) is.
- You can not solve this function for c.

Revit does know how to calculate e to the power of x (Well, sort of. You do have to tell Revit what e is, but oh well...). So that's sorted.
To tackle problem 2, we use the Newton Iteration to find a value for c:

The two functions are:

and

We put this together and within 5 or 6 steps we have a value for c that works for our purposes.
...and all this to create a simple arch!
OK, so much for the basic math. In the next part I'll walk you through how I actually set this whole thing up in Revit so it works.
My thanks go to everyone at wikipedia for their articles on the math and to John Forkosh Associates for their online LaTeX machine.
Labels: Catenary, Conceptual Mass, Formulas, general







