Trimming surfaces makes history crazy

When I have history turned on in a situation like the attached, any trim I do of the surface seems to make the curve (which has the history) decide to attach itself to a different edge. Could this be fixed? It’s a behaviour that makes history much less useful for me.

Try trimming attached surface with either of the red curves to see what happens.trimming any edge messes up history.3dm (52.5 KB)

what is the expected behavior here?

would you just want history to break and the curve to stay put?

Why can’t history be maintained if I’m not trimming the edge that the curve has history with? I’d either want it to maintain history & curve to continue to be linked to that edge, or just break history. It certainly doesn’t help for Rhino to just pick a new seemingly random edge to match to, which alway seems to be any edge other than the one that it was matched to before. Does that make sense?

Also, is there a way (key or something) to skip history while executing a command? For instance, I almost never want history when I use dupedge, so if I could just hold down a key or something (or change the command script?) that would be better than deleting history after I run dupedge.

Not currently, but that is a great idea- I love the idea of being able to suspend history selectively. woudl be cool if you could add it selectively too-

Yeah, but the bigger problem for me is the random reassignment of history to other edges of a surface, like my example. Maybe I’ll post a whole bunch of examples when I get a chance.

I agree… In your example, I think history should just break and leave the curve alone.

I don’t think our History infrastructure supports this. When the curve was created the Match command, stores a CRhinoHistoryRecord together with the curve. The record contains a reference to the brep object, and a component i.e., Edge-7.

When the brep gets replaced in the Trim command
the ReplayHistory function of Match is called to generate a new curve. However only the brep reference has changed. ReplayHistory will inquire about Edge-7 of the new brep, even though the edges got renumbered in the Trim operation.

So the history mechanism needs a way to communicate with the Trim command about updating the information in the history record.

Even just breaking history on everything modified by Trim would need support from the History mechanism.

Hi Peter,

By a left click on [Record History] on the status bar the recording will be toggled for the duration of one command.

1 Like

The history feature in Rhino seems to be as old and unloved as the blocks.

I’ve only been using Rhino for a year, and already encountered numerous bugs it:

I only ever use history for maximum one or two steps (if it doesn’t glitch out) and then I kill it.

If you want stable history, use Autodesk Alias.

Thanks - that will be very helpful. I thought that just toggled on & off forever.

That sucks. Any way for trim not to re-number all of the edges? I guess that’s hard b/c there can be a totally different number of edges after trim vs before, but maybe there’s a solution that I can’t think of?

Match has “match by closest points”. Perhaps History update could use the same algorithm…

Either way, the internal technical reasoning is quite uninteresting to us end users. All we see is that in Rhino it doesn’t reliably work, while in competing software it does.

Hello yes unfortunately the history not stable in rhino, is a real obstacle to model smoothly … I used to run into this weird behavior problem very often after splitting an edge … there are also other limitations in the history command. for example, we cannot match two surfaces or two curves with the average option … never never .I was really sad when I found out that this option will no longer be taken by rhino due to its one-object history dependency platform. but hey, rhino is a very good software it is powerful and versatile … all software have advantages and disadvantages

I know nothing about how your infrastructure is set up, but could the history update before the edges of the surface are renamed? I know that it’s not nearly as simple as I make it sound…