3D Patterns on Compound Surfaces/Solids

The Flow Along Surface command in Rhino works okay, too. You build the pattern over a flattened approximation of the 3d surface you want to map it to (the flatten and/or smash commands are helpful there) and through a few steps translate that flat pattern onto the 3d target surface. It’s finicky and not always precise, but works within the normal Rhino workflow whereas Grasshopper is its own crazy beast, very different from your typical modeling workflow.