Network Surface component has stopped working

I can’t figure out what went wrong, but this same component was working perfectly up until now.

Can anyone tell me why the output is null?

I was feeding it very similar curves in both the U and V inputs and it worked.

Now it doesn’t and I don’t know why.

network surface problem.gh (3.5 KB)

In your definition, you seem to be able to feed multiple curves into one input port. I have never seen that before, and I can’t even reproduce it. How did you manage this?

If I do a NetworSrf by making lists of the input curves using the Entwine component, it works.

1 Like

@menno, hold Shift to add multiple wires into a single input. Hold Control to remove wires when you draw them again. Hold Shift+Control to reconnect existing wires.

1 Like

** mind blown **

But: my method above gives a NetworkSrf correctly, whereas using the multi-line method gives null.

1 Like

It is strange but you have to flatten the components curve inputs and it will work without entwine our merge component. As planar curves have a tree “address” like that {0; 0} and arc like {0;0;0}. I imagine that flatten on input of Network surface generates 2 sets ou U curves, one with 2 curves and one with one curve !

2 Likes

Thank you all very much for your replies.

@laurent_delrieu your solution works, and points to a fundamental misunderstanding I must have with tree structures:

How is it possible that when I flatten the outputs from the curve components the results differ from when I flatten the inputs of the network surface component?

Shouldn’t the result be the same in both cases?

How does output Flatten differ from input Flatten?

@menno yeah I had been using Grasshopper for several years before stumbling upon the shift key = multiple wire inputs trick - my mind was blown too!!!

I didn’t know about the control and shift control key tricks though! Thanks David :slight_smile:

The problem (and difference) is this:

Your first curve (let’s call it A) is stored in a branch labeled {0;0}. Your B curve is at {0;0;0} and your C curve is {0;0} again. When you flatten the curve parameters individually, they’ll all end up at {0}, at which point they’ll merge in the order in which they are connected.

If you don’t flatten them before merging them into the Headstock input, then the order gets messed up. Name, A and C will end up in a single branch labeled {0;0} and B will be in a separate branch labeled {0;0;0}. When you flatten this new tree, you end up with ACB instead of ABC.

The network surface component clearly can’t handle this messed up order.

2 Likes

Specifically:

4 Likes

Wow that makes complete sense now!

All this time I thought it was arbitrary weather I flattened inputs or outputs and I’d usually flatten inputs when there were multiple wires connected just because it was quicker and easier than flattening each individual output. But now I see why I have still struggled with controlling the input order sometimes.

Thanks for the patient and clear explanation David! Definitely a revelation to me.