# Pull problem

A smooth curve pulled onto a smooth surface should result in a smooth curve. However a curve produced by the Pull command can have spurious curvature discontinuities.

In this example a straight line was pulled onto a very smooth surface results and the results have discontinuous curvature based on a curvature comb.
PullNS1.3dm (49.4 KB)

Is this a known problem?

“Fun”-Fact:
If you project the curve to the surface instead of pulling it (by using a vertical construction plane), you get a smoth curve. That’s the solution i would have expected. (green curve)
But if you use “InterpCrvOnSrf” you get another, slightly different, smooth curve. (cyan curve)
So three commands result in three different curves, where many ppl might expect one single solution.
PullNS2.3dm (236.4 KB)

Project and Pull should give different results in most situations.

There is also CurveOnSurface, an improved version of InterCrvOnSrf which is independent of the surface parameterization. Its available as a Lab Plugin. CurveOnSurface returns the shortest path if only end points are input, same as ShortPath.

I agree, that Project and Pull should give different results in most situations.

Judging from their Icon, i would "translate " the Project-Command as “project the curve to the c-plane, until it hits the surface” and the Pull-Command as “pull the curve to the surface, using the regional face-normals as it’s path”

But in the example abov, all face normals are horizontal, so i find the red result at least surprising.

My understanding of Pull for curves based on some experimentation is the resulting curves are the locus of closest points on the surface to the curve, with any gaps filled with smooth blend curves on the surface. Open the Analysis layer in the first example to see a set of closest points. Note that there is a gap in the middle.

You are lucky to get any curve at all in a situation like this since there is no one-to-one correspondence between the sequence of points on the line and the sequence of points on the pulled curve. There are places on the line that are perpendicular to more than one place on the surface.

However if all you are interested in is a smooth curve, then all you have to do is run RemoveMultiKnot and you will have a smooth curve that is very close to the same shape.

[quote=“jim, post:7, topic:28161”]
You are lucky to get any curve at all in a situation like this since there is no one-to-one correspondence between the sequence of points on the line and the sequence of points on the pulled curve. There are places on the line that are perpendicular to more than one place on the surface.
[/quote] I disagree, there is a one-to-one correspondence between the points on the line and the locus of closest points on the surface, with the exception of one point on the line which has two closest points on the surface. That point corresponds to the interior ends of the two resulting curve segments.

[quote=“jim, post:7, topic:28161”]
However if all you are interested in is a smooth curve, then all you have to do is run RemoveMultiKnot and you will have a smooth curve that is very close to the same shape.
[/quote] Thanks for the reminder about RemoveMultiKnot. I don’t think I’ve used it before. It appears to resolve the problem.

Another example of a pulled curve with several small kinks. RemoveMultiKnot resolves the problem in this example also
PullNS10.3dm (53.1 KB).