Developable surface - exact ruling lines from edge curves

Thanks, this is what I was missing.

Would be great if you could show the complete way up to building the surface and unrolling.
From what I can see devsrf set to least twist gives similar rulings, while it is not possible to build a surface from these edge curves. Devsrf set to “shortest” gives a complete surface, but different rulings.
I made a surface in an other program, (JH1) but rulings differ from your solution, and the developability seems not to be really good.RLMDev JH1.3dm (1.9 MB)

(Don’t read this post until you’ve read the first post in this thread. Otherwise this post won’t make sense.)

In certain situations the method I described in the first post needs to be modified because it isn’t possible to create a line which is tangent to the pulled curve and passes through the ruling line start point. I’ll describe these situations below and how to find the desired ruling line.

The first situation is when the pulled curve has a cusp. This occurs when the second edge curve has the same tangential direction as the first edge curve at the ends of the ruling line, and the second edge curve is not planar. In this situation create the “tangent line” from the start of the ruling line to the tip of the cusp. The Int Osnap simplifies precisely locating the tip of the cusp. Then continue as described in the first post. Create a line normal to the planar surface, intersect the normal line with the second edge curve, and draw the ruling line. Example file: RLMDev Cusp.3dm (56.9 KB)

The second situation is then the pulled curve is just a smooth curve (assuming the second edge curve is smooth) without a cusp. This can have several causes. The first is the planar surface used in pulling the second edge curve is not large enough and the pulled curve runs to the edge of the planar surface. In this situation enlarge the planar surface and pull the second edge curve a second time.

In this situation create the “tangent line” from the start of the ruling line to the tip of the folded curve. Note that the tip of the pulled curve will usually not be an end of the pulled curve. There is not a Osnap which will snap only to the tip. Neither End, Int or Quad OSnaps work. The best way I’ve found to snap to the tip is to make sure the Near OSnap is turned on, then star with the curve beyond the tip of the edge curve and slowly approach the tip. When the cursor is close enough to the tip it will snap to the tip. Stop moving the cursor and select that location as the tip. Then continue as described in the first post. Create a line normal to the planar surface, intersect the normal line with the second edge curve, and draw the ruling line. Example file: RLMDev Parallel 01.3dm (53.4 KB)

Added: If the ruling line ends at an end of the second edge curve then there are two possibilities:

a) The other end of the pulled curve should have been used for the “tangent line”.

b) There is a ruling line from the selected start point for the ruling line to the end of the second edge curve. This is usually unlikely but if you think it may be a valid untwisted ruling line you check for twist using the method described in Ruling line from edge curves twist check

c) There is not an untwisted ruling line from the selected start point on the first edge curve to the second edge curve. There is no guarantee of untwisted ruling lines the entire lengths of a pair of edge curves. There may be portions of one or both edge curves without untwisted ruling lines to the other edge curves.

1 Like

That could be the topic of a new thread. I plan to start another thread on creating developable surfaces in the future.

There are several ways to use exact ruling lines between edge curves in the creation of developed surfaces. One method would be determine a sufficient number of ruling lines and then use Sweep2 with the edge curves as the rails and the ruling lines as the sections. Another method involves using DevLoft which is the V6 replacement for DevSrf.

DevSrf is from Rhino V5. It can be a good tool but can be difficult to understand properly. It’s been a while since I used DevSrf but the “shortest” option in general does not create a developable surface.

See Verifying developable surfaces and Ruling line from edge curves twist check for discussions of checking developable surfaces and ruling lines.

Thanks for the script. I’ll give it a try and it should be useful. However as you can see from my later post there are situations where the method of the first post fails. These would be more difficult to script. We discussed determining the tip of a kinked or folded curve in Kinked and folded curves - split - #5 by TomTom

If I was writing code I’d use an iterative approach to determine “exact” untwisted ruling lines between edge curves based on minimizing the sine of the twist angle until the sine was less than a requested tolerance. The sine of the twist angle and be calculated as the magnitude of the cross product of (the unit vectors normal to both the candidate ruling line and the tangent vectors of the edge curves). At one time I had a compact method for doing the calculation and I’ll try to recreate it.

Edit: comment withdrawn

I’ve totally confused with that step

So, a bunch of questions:

  1. Is the Second edge curve the second black long line or green pulled curve?
  2. What is this green line, why does it have exactly such a shape? 3) How do I should position it onto the planar surface (the position and shape play a crucial role for following lines)?

The edge curves are the two curves which are to define two edges of a developable surface.

The first edge curve is the edge curve which a planar surface was created normal to.

The second edge curve is the other edge curve.

The green curve is the result of pulling the second edge curve onto the planar surface. Because the surface is planar pulling the curve onto the surface is exactly the same as projecting the curve in the direction normal to the surface.

The shape is the result of the shape of the edge curve and the direction of the surface normal.

The user does not decide on the location of the green curve. The shape and location of the green curve are the result of pulling the second edge curve onto the planar surface.

1 Like

That is the thing, thank you @davidcockey!

@davidcockey
It’s black magic for me, to be honest, how you come up with this idea. Why does that intricate method give better results than others, for instance, if simply drawing ruling lines as a perpendicular line to both edge curves (probably in my example is rubbish as in the result we can get an undevelopable surface, but anyway)? Apparently, I should investigate the question through a bunch of special material. Could you poke me into the right direction to somehow a little bit more get an idea of your method?

And one thing is not obvious to me, following your method, if the ruling line starts at the end of the first edge curve then the endpoint of the ruling line can be placed not on the end of the second edge curve. What needs to be done to build a developable surface at the end of the edge curves (maybe extend the shortest edge curve and then trim unwanted part of the surface)?

Yes, extend the shorter curve(s), and then trim the extended curves if needed. Note that the shape of the extension curves is not unique but not all extension shapes will work. I usually use ExtendDynamic with the To point option so that I have control of the shape of the curve extension.

Example of curve extensions:
Developable Example DC01.3dm (1.6 MB)

If a ruled surface is developable then there is not twist along each ruling line. That means a planar surface can be positioned so that it is tangent to a developable surface along the entire length of a ruling line. Another way to say the same thing is that along a ruling line the surface normals are parallel.

1 Like

Apparently, I have stumbled across one more case when there is no viable tangent line on the projection of the second edge curve from the start point. The case when the start point is all the way up “inside” the projected second edge curve. Wonder what the solution for this case for a point from which should go normal line is?



SadovshikovV.3dm (2.6 MB)

For that pair of curves a developable surface does not exist with a ruling line which passes through the selected point on curve and through the other curve.

Developable surfaces may exist which coincide with both curves. For such a developable surface the ruling line which passes through the point will not intersect the other curve. The curves need to be extended.

Here is a method to find such a surface:
ExtendDynamic the curve projection to the point.
ExtrudeCrv the extended projected curve normal to the plane.
ExtendCrvOnSrf the original curve on the extruded surface.
Create the ruling line.
SadovshikovV_DC01.3dm (2.7 MB)

1 Like

Awesome thank you @davidcockey

@davidcockey
In some cases, the pulled curve with a cusp does have the tangent point with the start point. However, employing the tangent point evidently gives us the wrong ruling line. Should we always use the cusp tip if it is there on the pulled curve?


Cusp&Tangent.3dm (2.7 MB)

If there are more than one tangent line should we choose the shortest?

Either choice satisfies the criteria for an individual ruling line. A reasonable choice would be the shortest line.

1 Like

Hmm, but the usage of the cusp tip point looks much better


Cusp&Tangent.3dm (3.9 MB)

Hi @davidcockey! Could you provide me with some recommendations?

  1. What is the best way to build a developable surface through a bunch of found exact ruling lines? Is it Sweep2, DevLoft, or perhaps something else?
  2. Is the UnrollSrf tool a reliable method to unroll a developable surface without deformation, in the case when we handle a truly Developable surface?
  3. The more ruling lines we utilize the closer to a real Developable our surface will be - is the assumption correct?