I want to model pagoda roof like this picture by using modifier, not by manually placing each rafters one by one.
anyone have idea about this?
P.S : don't recommend array, curved array, object offset.
For the moment, this is just an 'in principle' suggestion, to create a mesh, proportionally edit it to shape, and extract the relevant edges from it to be converted to a curve.
The curve's native bevel can be adjusted to the width of the ridges.
How you construct the original mesh, its topology, will depend on whether the ridges should splay, or be parallel, whether they are allowed to curve along their length, etc.
If you want help with that, maybe you could put up a reference image.
What you could do is use Instancing (Duplifaces in 2.7), a bit different from a simple Array + Curve as it won't distord your object:
You can use an Array Modifer to help place most of the rafters by creating a curve that the rafters can array onto.
First, add a curve to the scene and shape it the way you want. Second, build a rafter. Third, add an Array Modifer to your rafter. Next, add a Curve Modifer. Select your "object" as the curve you added to the scene. The rafters should array onto your curve now. You will probably need to have multiple different curves to achieve the structure shown in your photo.
Starting at 4:45, this video shows the process: https://www.youtube.com/watch?v=YQ8chdrYn-8