Geometry.CopyMeshingMethod = 1;

//+
Point(1) = {0, 0, 0, 1.0};
//+
Point(2) = {2, 0, 0, 1.0};
//+
Point(3) = {2.5, 0, 0, 1.0};
//+
Point(4) = {1.5, 0, 0, 1.0};
//+
Point(5) = {2, 0.5, 0, 1.0};
//+
Point(6) = {2, -0.5, 0, 1.0};
//+
Circle(1) = {3, 2, 5};
//+
Circle(2) = {3, 2, 6};
//+
Circle(3) = {6, 2, 4};
//+
Circle(4) = {4, 2, 5};
//+
Extrude {{0, 1, 0}, {0, 0, 0}, Pi/2} {
  Line{4, 3, 2, 1};
}

//+
Transfinite Line {6, 7, 14, 10} = 20 Using Progression 1;
//+
Transfinite Line {1, 4, 3, 2, 5, 9, 13, 13, 17} = 16 Using Progression 1;
//+
Transfinite Surface {8};
//+
Transfinite Surface {20};
//+
Transfinite Surface {16};
//+
Transfinite Surface {12};
//+
Recombine Surface {8, 20, 16, 12};
//+

//+
Symmetry {-1, 0, 0, 0} {
  Duplicata { Surface{16, 20, 8, 12}; }
}
//+
Extrude {{0, 1, 0}, {0, 0, 0}, Pi/4} {
  Line{13, 17};
}
//+
Transfinite Line {44, 40, 39} = 10 Using Progression 1;
//+
Transfinite Line {38, 42} = 16 Using Progression 1;
//+
Transfinite Surface {41};
//+
Transfinite Surface {45};
//+
Recombine Surface {45, 41};
