def bell_constraint_constructor(ai_parser, ai_variant=0):
    """
  Add arguments relative to the bell
  """
    r_parser = ai_parser
    r_parser.add_argument('--axle_internal_diameter', '--aid', action=
        'store', type=float, default=20.0, help=
        'Set the internal diameter of the bell-axle. Default: 20.0')
    r_parser.add_argument('--axle_external_diameter', '--aed', action=
        'store', type=float, default=0.0, help=
        'Set the external diameter of the bell-axle. If equal to 0.0, set to 2*axle_internal_diameter. Default: 0.0'
        )
    r_parser.add_argument('--leg_length', '--ll', action='store', type=
        float, default=40.0, help=
        'Set the length of the bell_leg. Default: 40.0')
    r_parser.add_argument('--bell_face_height', '--bfh', action='store',
        type=float, default=80.0, help=
        'Set the height of the bell-face and bell-side. Default: 80.0')
    r_parser.add_argument('--bell_face_width', '--bfw', action='store',
        type=float, default=80.0, help=
        'Set the width of the bell-face and bell-side. Default: 80.0')
    r_parser.add_argument('--base_diameter', '--bd', action='store', type=
        float, default=160.0, help=
        'Set the diameter of the base-disc. Default: 160.0')
    r_parser.add_argument('--face_thickness', '--ft', action='store', type=
        float, default=6.0, help=
        'Set the thickness of the bell-face. Default: 6.0')
    r_parser.add_argument('--side_thickness', '--st', action='store', type=
        float, default=4.0, help=
        'Set the thickness of the bell-side. If equal to 0.0, set to face_thickness. Default: 4.0'
        )
    r_parser.add_argument('--base_thickness', '--bt', action='store', type=
        float, default=8.0, help=
        'Set the thickness of the bell-base. If equal to 0.0, set to face_thickness. Default: 8.0'
        )
    r_parser.add_argument('--axle_hole_nb', '--ahn', action='store', type=
        int, default=6, help=
        'Set the number of the axle-holes. If equal to 0, no axle-hole is created. Default: 6'
        )
    r_parser.add_argument('--axle_hole_diameter', '--ahd', action='store',
        type=float, default=4.0, help=
        'Set the diameter of the axle-holes. Default: 4.0')
    r_parser.add_argument('--axle_hole_position_diameter', '--ahpd', action
        ='store', type=float, default=0.0, help=
        'Set the diameter of the axle-hole position circle. If equal to 0.0, set to (axle_internal_diameter+axle_external_diameter)/2. Default: 0.0'
        )
    r_parser.add_argument('--axle_hole_angle', '--aha', action='store',
        type=float, default=0.0, help=
        'Set the position angle of the first axle-hole. Default: 0.0')
    r_parser.add_argument('--leg_spare_width', '--lsw', action='store',
        type=float, default=10.0, help=
        'Set the left and right spare_width of the bell-leg. Default: 10.0')
    r_parser.add_argument('--leg_smoothing_radius', '--lsr', action='store',
        type=float, default=30.0, help=
        'Set the smoothing radius of the bell-leg. Default: 30.0')
    r_parser.add_argument('--motor_hole_diameter', '--mhd', action='store',
        type=float, default=4.0, help=
        'Set the diameter of the motor-holes. If equal to 0.0, no motor-hole is created. Default: 4.0'
        )
    r_parser.add_argument('--motor_hole_x_distance', '--mhxd', action=
        'store', type=float, default=40.0, help=
        'Set the x-distance of the motor-hole. Make it fit the motor_lid parameters. Default: 40.0'
        )
    r_parser.add_argument('--motor_hole_z_distance', '--mhzd', action=
        'store', type=float, default=50.0, help=
        'Set the z-distance of the motor-hole. Make it fit the motor_lid parameters. Default: 50.0'
        )
    r_parser.add_argument('--motor_hole_z_position', '--mhzp', action=
        'store', type=float, default=40.0, help=
        'Set the z-position of the motor-hole. Make it fit the gearwheel diameters. Default: 40.0'
        )
    r_parser.add_argument('--int_buttress_x_length', '--ibxl', action=
        'store', type=float, default=10.0, help=
        'Set the x-length of the internal-buttress-hole. If equal to 0.0, no internal-buttress hole is created. Default: 10.0'
        )
    r_parser.add_argument('--int_buttress_z_width', '--ibzw', action=
        'store', type=float, default=5.0, help=
        'Set the z-width of the internal-buttress-hole. Default: 5.0')
    r_parser.add_argument('--int_buttress_z_distance', '--ibzd', action=
        'store', type=float, default=50.0, help=
        'Set the z-distance between a pair of internal-buttress. Default: 50.0'
        )
    r_parser.add_argument('--int_buttress_x_position', '--ibxp', action=
        'store', type=float, default=10.0, help=
        'Set the x-position of the internal-buttress-hole. Default: 10.0')
    r_parser.add_argument('--int_buttress_z_position', '--ibzp', action=
        'store', type=float, default=10.0, help=
        'Set the z-position of the first internal-buttress. Default: 10.0')
    r_parser.add_argument('--int_buttress_int_corner_length', '--ibicl',
        action='store', type=float, default=5.0, help=
        'Set the internal-corner-length of the internal-buttress. Default: 5.0'
        )
    r_parser.add_argument('--int_buttress_ext_corner_length', '--ibecl',
        action='store', type=float, default=5.0, help=
        'Set the external-corner-length of the internal-buttress. Default: 5.0'
        )
    r_parser.add_argument('--int_buttress_bump_length', '--ibbl', action=
        'store', type=float, default=10.0, help=
        'Set the bump-length of the internal-buttress. Default: 10.0')
    r_parser.add_argument('--int_buttress_arc_height', '--ibah', action=
        'store', type=float, default=-2.0, help=
        'Set the arc-height of the internal-buttress. If equal to 0.0, a line is created instead of an arc. Default: -2.0'
        )
    r_parser.add_argument('--int_buttress_smoothing_radius', '--ibsr',
        action='store', type=float, default=10.0, help=
        'Set the smoothing-radius of the internal-buttress. Default: 10.0')
    r_parser.add_argument('--ext_buttress_z_length', '--ebzl', action=
        'store', type=float, default=10.0, help=
        'Set the z-length of the external-buttress-hole. If equal to 0.0, no hole is generated on the face and side wall. Default: 10.0'
        )
    r_parser.add_argument('--ext_buttress_x_width', '--ebxw', action=
        'store', type=float, default=5.0, help=
        'Set the x-width of the external-buttress-hole. Default: 5.0')
    r_parser.add_argument('--ext_buttress_x_distance', '--ebxd', action=
        'store', type=float, default=20.0, help=
        'Set the x-distance between a pair of the external-buttress. Default: 20.0'
        )
    r_parser.add_argument('--ext_buttress_z_position', '--ebzp', action=
        'store', type=float, default=40.0, help=
        'Set the z-position of the external-buttress-hole on the face and side wall. Default: 40.0'
        )
    r_parser.add_argument('--ext_buttress_y_length', '--ebyl', action=
        'store', type=float, default=10.0, help=
        'Set the y-length of the external-buttress-hole. If equal to 0.0, no hole is generated on the base wall. Default: 10.0'
        )
    r_parser.add_argument('--ext_buttress_y_position', '--ebyp', action=
        'store', type=float, default=20.0, help=
        'Set the y-position of the external-buttress-hole on the base wall. Default: 20.0'
        )
    r_parser.add_argument('--ext_buttress_face_int_corner_length',
        '--ebficl', action='store', type=float, default=5.0, help=
        'Set the internal-corner-length of the external-buttress for the face and side crenel. Default: 5.0'
        )
    r_parser.add_argument('--ext_buttress_face_ext_corner_length',
        '--ebfecl', action='store', type=float, default=5.0, help=
        'Set the external-corner-length of the external-buttress for the face and side crenel. Default: 5.0'
        )
    r_parser.add_argument('--ext_buttress_face_bump_length', '--ebfbl',
        action='store', type=float, default=10.0, help=
        'Set the bump-length of the external-buttress for the face and side crenel. Default: 10.0'
        )
    r_parser.add_argument('--ext_buttress_base_int_corner_length',
        '--ebbicl', action='store', type=float, default=5.0, help=
        'Set the internal-corner-length of the external-buttress for the base crenel. Default: 5.0'
        )
    r_parser.add_argument('--ext_buttress_base_ext_corner_length',
        '--ebbecl', action='store', type=float, default=5.0, help=
        'Set the external-corner-length of the external-buttress for the base crenel. Default: 5.0'
        )
    r_parser.add_argument('--ext_buttress_base_bump_length', '--ebbbl',
        action='store', type=float, default=10.0, help=
        'Set the bump-length of the external-buttress for the base crenel. Default: 10.0'
        )
    r_parser.add_argument('--ext_buttress_arc_height', '--ebah', action=
        'store', type=float, default=-5.0, help=
        'Set the arc-height of the external-buttress. If equal to 0.0, a line is created instead of an arc. Default: -5.0'
        )
    r_parser.add_argument('--ext_buttress_smoothing_radius', '--ebsr',
        action='store', type=float, default=10.0, help=
        'Set the smoothing radius of the external-buttress. Default: 10.0')
    r_parser.add_argument('--hollow_z_height', '--hzh', action='store',
        type=float, default=10.0, help=
        'Set the z-height of the bell-side-hollow. Default: 10.0')
    r_parser.add_argument('--hollow_y_width', '--hyw', action='store', type
        =float, default=20.0, help=
        'Set the y-width of the bell-side-hollow. Default: 20.0')
    r_parser.add_argument('--hollow_spare_width', '--hsw', action='store',
        type=float, default=10.0, help=
        'Set the spare_width of the bell-side-hollow. Default: 10.0')
    r_parser.add_argument('--base_hole_nb', '--bhn', action='store', type=
        int, default=8, help=
        'Set the number of base-holes. If equal to 0, no base-hole is created. Default: 8'
        )
    r_parser.add_argument('--base_hole_diameter', '--bhd', action='store',
        type=float, default=4.0, help=
        'Set the diameter of the base-holes. Default: 4.0')
    r_parser.add_argument('--base_hole_position_diameter', '--bhpd', action
        ='store', type=float, default=0.0, help=
        'Set the diameter of the base-hole position circle. If equal to 0.0, set to base_diameter-2*base_hole_diameter. Default: 0.0'
        )
    r_parser.add_argument('--base_hole_angle', '--bha', action='store',
        type=float, default=0.0, help=
        'Set the position-angle of the first base-hole. Default: 0.0')
    r_parser.add_argument('--y_hole_diameter', '--yhd', action='store',
        type=float, default=4.0, help=
        'Set the diameter of the y-holes. If equal to 0.0, no y-hole is created. Default: 4.0'
        )
    r_parser.add_argument('--y_hole_z_top_position', '--yhztp', action=
        'store', type=float, default=10.0, help=
        'Set the z-position of the top y-holes. Default: 10.0')
    r_parser.add_argument('--y_hole_z_bottom_position', '--yhzbp', action=
        'store', type=float, default=10.0, help=
        'Set the z-position of the bottom y-holes. Default: 10.0')
    r_parser.add_argument('--y_hole_x_position', '--yhxp', action='store',
        type=float, default=6.0, help=
        'Set the x-position of the y-holes. Default: 6.0')
    r_parser.add_argument('--x_hole_diameter', '--xhd', action='store',
        type=float, default=4.0, help=
        'Set the diameter of the x-holes. If equal to 0.0, no x-hole is created. Default: 4.0'
        )
    r_parser.add_argument('--x_hole_z_top_position', '--xhztp', action=
        'store', type=float, default=-6.0, help=
        'Set the z-position of the top y-holes. Default: -6.0')
    r_parser.add_argument('--x_hole_z_bottom_position', '--xhzbp', action=
        'store', type=float, default=-6.0, help=
        'Set the z-position of the bottom y-holes. Default: -6.0')
    r_parser.add_argument('--x_hole_y_position', '--xhyp', action='store',
        type=float, default=6.0, help=
        'Set the y-position of the x-holes. Default: 6.0')
    r_parser.add_argument('--z_hole_diameter', '--zhd', action='store',
        type=float, default=4.0, help=
        'Set the diameter of the z-holes. If equal to 0.0, no z-hole is created. Default: 4.0'
        )
    r_parser.add_argument('--z_hole_external_diameter', '--zhed', action=
        'store', type=float, default=0.0, help=
        'Set the external-diameter of the z-holes. If equal to 0.0, set to 2*z_hole_diameter. Default: 4.0'
        )
    r_parser.add_argument('--z_hole_position_length', '--zhpl', action=
        'store', type=float, default=15.0, help=
        'Set the position-length of the z-holes. Default: 15.0')
    r_parser.add_argument('--bell_cnc_router_bit_radius', '--crbr', action=
        'store', type=float, default=1.0, help=
        'Set the minimal router_bit_radius for the whole design. Default: 1.0')
    r_parser.add_argument('--bell_extra_cut_thickness', '--ect', action=
        'store', type=float, default=0.0, help=
        'Set the extra-cut-thickness for the rectangular-crenels. It can be used to compensate the manufacturing process or to check the 3D assembly with FreeCAD. Default: 0.0'
        )
    return r_parser
