“As hangs a flexible cable so, inverted, stand the touching pieces of an arch.” ~ Robert Hooke
Catenary Arch |
Copy Code
|
---|---|
//Builds an arch with an inverted catenary shape //Scripts can be useful when you need to generate complex geometry DeleteAll(); //inputs SetUnits("Kips & Inches"); var a = 240.0; //arch height var n = 48; //number of member elements var section = "Rectangle 5 x 5"; var material = "Concrete (F'c = 4 ksi)"; var xend = a * Math.Log(2 + Math.Sqrt(3)); var length = 2.0 * a * Math.Sinh(xend / a); var seg = length / n; string prevNode = null; for(var i = 0; i <= n; i++) { //calc the distance along the arch var s = i * seg; //calc the x coordinate of this node var s_a = (s - 0.5*length)/a; var x = a * Math.Log(s_a + Math.Sqrt(s_a * s_a + 1)); //calc the y coordinate of this node var y = -a * Math.Cosh(x/a) + 2 * a; //add the node var node = AddNode(x, y); //support the node if(i == 0 || i == n) { //pin the ends Pin(node); } else { //all others support DZ Support(node, false, false, true, false, false, false); } //if this isn't the first node, add the member //between this node and the previous one if(prevNode != null) { AddMember($"M{i}", prevNode, node, section, material); } //the current node becomes the previous node //for the next iteration prevNode = node; } |