Rebuild trimmed Edges/workflow


I’ve been spoilt by VSR/shapemodeling and now I have to work without it. :slight_smile: Are there any alternatives to “approximate edge” native in Rhino? I know there is rebuild edges, but this command can’t specifiy the number of cv/spans and it only works on all edges. Maybe is also an workflow question. I almost always used to “approximate edge”, when I would do a blend_srf (from a trimmed edge) to keep the structure of the blend as simple as possible. Maybe there is a better way. Yes I know, a blend_srf from a “natural” edge will give better results but is not always possible. Maybe blending from the trimed egde, rebuilding the blend_srf, untriming the edge , extend the rebuild blend_srf, retrim, and finally match the blend_srf will give better results but it seems a bit overkill.

many thanks Konrad

p.s. “approximate edge” would rebuild one edge to a specific degree and number of cv. Maybe I should have mentioned that.

I’m not familiar with VSR/shapemodeling so don’t know how their “approximate edge” worked. In Rhino you can DupEdge to extract the edge curve, and then use Rebuild, RebuildCrvNonUniform, FitCrv, etc to rebuild the curve. However the rebuilt curve generally won’t lie exactly on the original surface unless that surface was planar. If you use Project or Pull to put the rebuilt curve on the surface it’s structure will usually become more complex. Likewise for Trim with apparent intersection on since that is equivalent to projecting the curve and then trimming with the resulting curve.

Another possibility would be to extract the edge curve using DupEdge, untrim the surface, then use InterpCrvOnSrf to manually create a new trim curve. However the resulting curve will generally have more control points than the number of points used to create the new curve unless the surface is planar.

The above is probably not what you are looking for but there are limitations in NURBS surfaces that the intersections and similar typically have more control points then the input.

So the only way to produce a blend_srf with a relatively simple control point structure from a non planar surface seems to be building the original surface so the edge does not have to be trimmed. Is this correct?

Yes - now, you can make a blend ‘by hand’ by extracting the edges and rebuilding the curves as mentioned above, then Loft or Sweep2 (Simple, if your shape curves are placed in the right locations - on matching edit points on the rail curves in Sweep2) followed by MatchSrf.


If I understand this correctly, it wouldn’t change the trimmed edge. Just a rebuilt blend surface matched to the original edge. Am I wrong? Because most of the time it is the exact shape of the trimmed edge is not so important. It will transition anyway to the blend. A deviation of a of a few points of a mm will shouldn’t be a problem, but would allow a much simpler edge.


MatchSrf can only modify untrimmed edges.

If the untrimmed edge does not have sufficient control points then MatchSrf may not be able to match it within the desired tolerances to the trimmed edge. If Refine Match is checked in MatchSrf then sufficient control points will be added to allow a match within the desired tolerance.

I’m curious how/if VSR/shapemodeling modifies a trimmed edge to match another edge.

Hi Konrad - the complexity of an arbitrary trimmed edge curve is there partly to be the right shape but it is needed in any case to bring whatever the shape is, close enough to the surface to match the tolerance on the file. I think, possibly, what you are after is modifying the surface so that it has an untrimmed edge that is more or less on the original trim - I think VSR does something like this - if the trim is not too wildly different from an isocurve, and the surface not too dense then you can imagine a process where the surface is split with an isocurve , shrunk back and then matched up to the trim curve - with a little sophistication in that last operation to keep the surface shape, it seems not too far-fetched to do something along those lines… but I am… speculating.


Just tested Pascal’s suggestion.

1.Surface_A trimmed by a curve. Resulting trimmed edge is very dense.
2.Trimmed edge copied and the curve rebuilt. (Curve no longer lies on the surface it was built from.)
3.Repeat with Surface_B
4.Use rebuilt curves from A and B to create a new Surface_C between the 2 (Loft)
5.MatchSrf edges of C back to the trimmed edges of A and B with Tangency enabled. Appears that trimmed edges of A and B are not changed and C retains a relatively simple control point structure. So far so good…until I tried to join everything up.

C will not join to A and B unless it is matched with “refine surface” enabled when running Matchsrf, which reintroduces many more control points.

Next in hopes of eliminating the complex trimmed edges of A and B I tried remaking the original A and B surfaces by deleting the curves that were generated by the trims and replacing them with the rebuilt edge curves. (As Eleven10 states the exact trimmed edge is often less important than the resulting blend.) Each of the 2 sets of curves would join up fine at the ends so I know the curves were clean 4 sided surface creation wire sets. Surfaces A and B would not loft so I had to use Sweep2 or NetworkSrf which reintroduced more control points again. Argh.

Tried enabling History so the surface A and B would rebuild “automatically” after rebuilding the post trim edges, but it appears that the trim operation breaks history chain.

In the end it seems simply running BlendSrf was a lot simpler solution, and if I am willing to live with the dense structure it produces working with a trimmed surface, it is a usable result. If it can be re-tooled so the “match to” edge can be simplified and allowed to move a little in the process as Eleven10 suggests I think it would be a big improvement.

Am I understanding this correctly?

Right - the edges may be too curved/convoluted to match up to within tolerance without more info (points) in the bridging surface. There’s no way to guarantee that the point count you like for the rebuilt curves from the edges is necessarily going to be enough to bring it within tolerance of the edges that you started with - very often not. What to do about it depends on what you want to do next - there is nothing inherently wrong with adding complexity to a surface to make it match up, but it does make it harder to do things like point editing the surface. I tend to leave the ‘refine’ step or adding knots by hand, until I am closer to being done.

FWIW, in V6, simple untrimmed edges will yield simple, matching, surfaces from BlendSrf. Trims are another thing…


1 Like

Cool. Thanks Pascal!

to clarify what I am trying to achieve:

the edge of stf B has a complex structure due to an intersection operation.

as well as the blend srf

“approximate edge” now simplifys the edge –

allowing for a simpler blend, more suitable for point editing and a better base for later surfaces.

– Probaly the best thing is to split by iso crv and playing with the handles until the desired shape is achieved.


What does the rest of the surface (B) look like after that operation?

exactly the same :slight_smile:

Could you post a screen-shot of the point structure before and after? (I’m just curious…)

i think…it cannot be ‘exactly the same’ as before, at least not in ALL cases. If your intersection happens to be close to what splitting with isocurve would give, then the changes might be ‘same’. I was recently testing this, and did some more tests now. In the example below, one of the surface is changed a bit (0.0118 in one direction), the other surface does not change (0.0000) -



“approximate edge”


the surface remains the same(?, I thought), the edge naturally will change, (as this is the goal)

1 Like

@eleven10 can you duplicate the edge and turn on its control points? Does that edge then have only 4 controlpoints?

I did not save- but it had more than 4 but less than the original.

Just for my own understanding: If a surface is trimmed by a curve that isn’t an iso curve from the surface, is it possible to have the trimmed edge possess a point count that is the same as the surfaces’ ? If not, then the VSR blend must be an approximation, but one that’s within permissible tolerance? In which case, why doesn’t native Rhino create it?

Yeah, it would be nice to have :slight_smile: