Hi FunkyStickman, thanks for the reply.
My reply ended up being rather long so I turned it into a story.
I had been using three spoke length calculators: Spocalc.xls
The DTSwiss and Edd calculators allow you to use fractional cross numbers but offer no guidance on how. Spocalc says: "Note:If paired hub spoke holes are 15 degrees apart, then: For 24 paired spokes laced 2x, enter 2.25 cross. For 24 paired spokes laced 1x, enter 1.25 cross. For 20 paired spokes laced 2x, enter 2.29 cross. For 20 paired spokes laced 1x, enter 1.29 cross. For 16 paired spokes laced 1x, enter 1.33 cross." But I didn’t understand where those numbers came from or what the resulting lacing pattern would look like.
So I wrote a computer program to help me visualize the designs and understand. I learned a few things.
First, the angular offset of a pair of spoke holes on the left flange relative to the nearest pair on the right flange is determined only by spoke count N. It is independent of the angle between a pair of holes on the hub. A pair of holes on one side at 2π/N relative to the nearest pair on the other side.
Second, it turns out that Spocalc assumes, when it recommends fractional values of cross number X, that the two spokes in a pair of adjacent holes (on one side of the hub) do not cross each other. In other words, the two spokes are pulling on the flange material between the pair of spoke holes. This is why spocalc’s X for a paired-spoke-hole hub is larger than for a regular hub.
Let’s try to visualize this.
Start with X=1 for a regular one-cross lacing with uniform hole spacing.
Here we have a 20-spoke wheel with a small ERD and large hub PCD to help make the images clearer. Hub spoke holes on the front side, as we look at it, are black—on the rear they are green. Front leading spokes are orange, front trailing are red, rear leading are cyan and rear trailing are green.
Now get rid of the rear spokes and spoke holes for clarity.
Next, increase X to 1 < X < 1.5. The diagram shows X = 1.3.
It’s still a one-cross lacing but now the hub has paired holes, meaning that each J end of one spoke is closer to the J end of one neighbor than its other. But these “paired” spokes don’t cross.
Increase X again to 1.5 < X < 2 and now you have a two-spoke lacing—the two paired spokes cross each other. The diagram has X = 1.7.
These last two pictures are of the same hub. Spocalc is offering only the first lacing but I don’t see anything wrong with the second.
If you increase again to X = 2 then the pair move apart so that each hole is equally distant to both of its neighbors and you're back to a regular hub.
The third lesson is how X relates to the angle θ between a pair of spoke holes. θ = 4π/N when X is an integer. θ = 0 when X = 1/2 + an integer, e.g. X = 3/2, which is an impossible hub in practice. In general θ = 8π/N⋅abs(1/2 - frac(X)), which allows me to calculate X given measurements from the hub.
Now put the rear side spokes and spoke holes back in the picture.
And here's the actual front wheel I'm considering with two-cross lacing, 38 mm hub PCD and 521 mm ERD.