// T Spline Visualization
p001 = List.Transpose(Circle.ByCenterPointRadius(Point.Origin(),
[50,35,25,5])<1>.PointAtParameter((1..0..#4)<2>));
p002 = k2(p001<1>,2).Translate(Vector.ZAxis(),[0,10,15,60]);
pc01 = PolyCurve.ByPoints(List.Transpose(p002));
pc02 = PolyCurve.ByPoints(pc01.PointAtParameter((0..1..#10)<1>));
ts01 = TSplineSurface.BuildPipes(List.Flatten(pc01.Explode(),-1),
1.5,0.1,3,true,false,0,0,1,0.3,1,1,true);
ts02 = TSplineSurface.BuildPipes(pc02.Explode(),2..0.2..#10,
2..0.2..#10,3,true,false,0,0,1,0.3,1,1,true);
ts03 = TSplineSurface.ByCombinedTSplineSurfaces
(List.Flatten([ts01,ts02],-1)).Translate(150,0,0);