pipe which has non-uniform cross-section I want to create a shape like a pipe, like below image and blend file.

I created the mesh below in Houdini, but I could deal with it only in simple case, and I couldn't improve it any more in Houdini. So I am trying blender.

.blend file: http://pasteall.org/blend/index.php?id=51832



What "non-uniform cross-section" means both 1. and 2.


scaling independently on each axis of cross section
changing the cross section shape.


I tested the below but I have trouble in all of them.


I can't use "Curve Bevel Function"
(Make a 3D tube with a B&#233;zier curve?, Curve Bevel function, scale?)
because this can use only one cross section. Even if I use Bevel Object, Alt+S, Proportional Editing and Taper Object, We can't use multiple different cross section shapes and We can't scale independently on each axis of cross section.
I also tried vertex group + proportional editing
(Is it possible to use proportional editing without affecting or hiding nearby vertices)
but failed.
I tried addons https://blendermarket.com/products/bezier-mesh-shaper and
https://github.com/mifth/mifthtools/wiki/Mira-Tools#curve-stretch-tool.
These may be solution, but I have trouble when pipe length is long like this case.


Could you tell me effective way to create a pipe which has non-uniform cross-section ?

I don't think my question is duplicate of Curve Bevel function, scale? because my question emphasises the non-uniform cross section and mentioned that Curve Bevel function doesn't allow us to use non-uniform cross section.
You can certainly extrude a cross section along a curve and rotate that cross section, change its size and change the end cap. 

Try using a curve modifier with an array modifier and change the start/end caps:



You can also experiment with bevel curves and tapers:



In the old days we used to be able to transition between cross sections by using dupliframes to create multiple copies of a mesh along a curve at frame intervals (e.g. one every 10 frames) and then loft them together. Something like this: old Blenderartists thread but I'm not sure how you do that now. Maybe using the animation nodes add on. It's a starting point at least.

Hopefully somebody will have a better answer for you, but in the meantime this gives you something to work with.