I guess a general solution might be possible via Grasshopper. In your particular case, I wonder if you could array a series of horizontal lines corresponding to the vertical spacing, intersect those with the curve to create points. Then copy your object to the points (assuming it’s the same object each time). Might go faster. Here is a Python script to copy an object to multiple points just in case…
What if you extruded the curve you are trying to use as a limit for the extruded shapes, duplicated one of the faces of the shapes (assuming they are all the same) and then used OrientCrvToEdge with the Copy option turned on?