Easy, I am not sure.
You are making a real-life ship that needs this structurally, because otherwise, a bumpmap may give you a fairly convincing appearance of plates?
Assuming that the needs is structural… Also assuming they the plates won’t be tilted on like house shingles…
Hull plates also might be made by copying the hull you have, cut it to plates and then OffsetSrf with the Solid option. To have more control over the cutting, I would likely make a series of boolean box objects that interfere with the surface of the ship, and place them on another layer, and can be used later, if design changes are made. These would be used to cut the hull copy into plates to be Offset (solid).
[Profile curves might be used to split if they are pulled or projected, but things will get strange at the bottom and top, where they go off the edges.]
~
For okay rivet placement… Select the hull surface, use OffsetCrvOnSrf to create (an offset extracted iso-) curve on the surface for the rivets. Trim the line back to the center where you want the rivets to start and end, perhaps using a near snap and split(point), Place a rivet. Then, I would use ArrayCrv to place them.
Alternatively, Transform Flow along Curve could be used to automatically orient the rivet, but you would need to make a dummy curve of the same length, which can be returned to you from the command-line by using Length, and then copying that value to be pasted into the command-line when you make your dummy line.
When I do things like this I generally leave the dummy lines in place, right where I use them, on a separate layer, so I can use them again, if need be.
Oddly, I might make each rivet a block, so that their rendering mesh could be adjusted as needed. I almost always put points in my blocks, for a rivet, I would use 2 points.
To do them quite well… it might take more work, such using a slices of the surface, and a dummy surface instead of a simple curve, then the command of choice would likely be FlowAlongSrf (with ridged option). Before you do this, you could extract and isocurve down the middle of the slice, and use Length, to learn how long to make the dummy surface. That should place them pretty nice along the normal of the surface.
~
Perhaps these process could be done in Grasshopper by selecting the outer surface. I think you would have to convert real-world measurements into the domain of the surface, for the offsets and divides. It might work well because each plate will have a top surface. What you will end up with is a program that will let you choose a rivet (or daisy flower if you like : ) and it will distribute them along each of the 4 edges of the plate.
All I ask is a tall ship riveted with flowers and a star to steer her… : )