[Plugin] Simple Catenary Curve
-
And as for how to quickly model a catenary in SU, see this model in the Warehouse:
http://sketchup.google.com/3dwarehouse/details?mid=4dd6375bd3e37bc7f30a9640f41eb5ed&prevstart=0(but of course, this is not to lessen this cool plugin, Remus
)
-
Fairly sure thats a parabola, not a catenary curve.
-
Is it really?
Hm... I last studied maths more than 26 years ago.
Anyway, I can model parabolas then!
Thanks! -
Doubled checked on wikipedia and it seems it is a parabola. Part of the conic sections if you fancy investigating further.
-
Hi remus, that's a wonderful idea.(Didn't know the term Catenary though).
By the way, could multiple Catenary curves define a tensile structure? -
You probably could, but i dont think it would be physically accurate. Catenary curves only describe lines with no forces (other than gravity) acting along their length.
I know that in simple cases like a suspension bridge the curve is a parabola, but i dont know if this would still be true for more complicated tensile structures.
-
@remus said:
Doubled checked on wikipedia and it seems it is a parabola. Part of the conic sections if you fancy investigating further.
I believe you, Remus, truely.
-
I just though other people might be interested (although i realise maths geeks are probably in short supply around here
)
-
I'm no math geek - but that cursed curve had me stumped when I wanted to make a chain/rope plugins.
I've still not looked at the code, but can it be used to specify two 3D points and the total length of the curve?
-
2 3d points is fairly easy as long as the 2 points are level, if not you have to start messing around with numerical solutions and it all gets rather messy.
Its similarly difficult to specify a length if i remember correctly.
-
Yea, that's what I tried. Different heights.
And also specifying length. Only solution to the length I could find was a method that did loop of approximation until it came within a given tolerance... -
Remus,
I am glad you show the way to Users to get their ownautomation via Ruby. Obviously, Sketchup needs to be complemneted by some generic Rubies that does geometrical operations that SU does not do in native.
But Ruby is also a very convenient way for individual users to speed up their workflow with some adhoc, simple programming. It's a little bit like Excel macros. They are meant for users to help with a few lines of code. But of course, some specialists could also write complete applications with thousands of lines of VB Scripts for Excel and share them to a community of users.
Your program is 10 lines of code and does the work of creating a catenary curve. For the purpose of what it does for an individual user, it is very concise and elegantly written. Ruby is not very complex for simple things and you demonstrate it in your script.
Now, yes, for writing a general plugin drawing any catenary curve in 3D between 2 points, with options, live feeback and postedition, the script would have to go one level beyond, and may not be an easy task for an occasional programmer (but do not worry, there is also a strong community of script writers!).
So, I can only send you my support for showing what Ruby can do with a few lines of code, to automate repetitive tasks or make simple calculations.
Fredo
-
@remus said:
I just though other people might be interested (although i realise maths geeks are probably in short supply around here
)
count me in the math geek column!
great little program, Ive been using it to learn more about Ruby.=begin Simple Catenary Curve script Author; Remus Knowles =end module RTK def self.simple_cat_curve ents = Sketchup.active_model.active_entities pts = [] # add or delete interval to be evaluated intervals = [-3,-2.75,-2.5,-2.25,-2,-1.75,-1.5,-1.25,-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1,1.25,1.5,1.75,2,2.25,2.5,2.75,3] intervals.each{|e| # main math formula, try x = (Math.sinh(e)), or (Math.sin(e)) x = (Math.cosh(e)) # pts.push([e,20,x]) entering 20 moves the curve along green axis 20 units # pts.push([e,x,0]) draws the curve in plan view # pts.push([x,0,e,]) draws the curve in elevation view pts.push([x,10,e]) pts.push([x,0,e,]) pts.push([x,-10,e]) } cat_curve = ents.add_curve(pts) cat_curve_grp = ents.add_group(cat_curve) end#method end#module UI.menu("Draw").add_item("Simple Catenary Curve") {RTK.simple_cat_curve}
my attached code documents some of the things I have tried
-
Fred, thanks, it means a lot coming from someone of your experience.
Tomot, good effort on the mods, best way to start learning ruby in my opinion.
-
Hey REmus,
no need to be a Math Geek to find a use to it.
Anytime someone needs to model lets say the electric highvoltage cables supported by high voltage towers, this comes to a use.
Also for a more architecture realted topic, most of the Vaults designed by Antoni Gaudí's(the catalan architect author of the Sagrada familia in Barcelona)were actually inverted catenary curves, so anyone trying to model his buildings igh also find a use to it!
Thanks a lot! -
Hey, CADAddict:
Glad you mentioned Antonio Gaudi's Familia Sagrada, because that is the first thing I thought of when someone questioned the usefulness of catenary curves, besides suspended cables in equilibrium.
mitcorb -
Remus's Catenary suspension bridge
taken in: Copy Array Along Path tool...have a look.(Catenary Curve for the general shape of the bridge. The ropes are handmade using Bezier Spline with only one intermediate point driven in order to simulate the weight of the rope.
A remark to Remus: Your Catenary Curve is made with only 16 segments. It's probably too few in many cases. It would be better to add the choice of this number(
)
@jclements said:
Hey Remus:
Next step is "chain maker" or "rope maker"..
The first tool exists right now with courtesy of Chris Fullmer :[Plugin] Component Stringer
simon
-
@simon le bon said:
The first tool exists right now with courtesy of Chris Fullmer :[Plugin] Component Stringer
I think Remus is talking about a tool to simulate rope or chains - which is not what Chris' tool is doing.
-
@simon le bon said:
A remark to Remus: Your Catenary Curve is made with only 16 segments. It's probably too few in many cases. It would be better to add the choice of this number(
)
I'll have a look at it
-
@thomthom said:
I think Remus is talking about a tool to simulate rope or chains - which is not what Chris' tool is doing.
Hi thomthom,
You are rigth! I had probably been taken by the hurry of enjoyment. Chris's "Component Stringer" is a very cool tool, but intending to do a different job.We can make a chain with it but it very uneasy and far from perfection!
@tig said:
Make half chain link (U) and use this tool then edit that chain and copy/hand the U geometry into an O loop of say 2.2 the original length, now you have your links; us 'make unique' on one of the links, edit it and rotate its contents 90 degrees. Select every other link and replace with this rotated one... a chain... done.
In such case, it will be better to do this way:
And for making a rope, I'm sure we can do a good job with our same Chris Fullmer's Shape Bender.
*simon
Advertisement