Ball Socket
Ball Socket Joint System Documentation
Overview
The ball socket joint components are designed to create flexible connections between 3D printed parts that require multi-axis rotation. This system consists of two complementary components: a ball mount and a ball socket. The ball mount is a ball attached to a shaft, while the ball socket provides a cavity with flexible walls that grip the ball while allowing smooth rotation.
This joint system is particularly useful for creating articulated mechanisms, adjustable brackets, camera mounts, robotic joints, or any application where you need a connection that can rotate freely in multiple directions while maintaining a somewhat secure hold.
The BallMount and BallSocket classes create matched components with built-in tolerances for 3D printing.
Classes
BallMount
Part Object: BallMount
Creates a mounting point for a BallSocket, defined by the radius of the ball.
Arguments
ball_radius(float): The radius of the spherical ball in millimeters. This determines the overall size of the joint system and must match the ball_radius used for the corresponding ball_socket.rotation(RotationLike, optional): angles to rotate about axes. Defaults to (0, 0, 0)align(Align | tuple[Align, Align, Align] | None, optional): align MIN, CENTER, or MAX of object. Defaults to (Align.CENTER, Align.CENTER, Align.CENTER)mode(Mode, optional): combine mode. Defaults to Mode.ADD
BallSocket
Part Object: BallMount
Creates a ball socket component for a ball-and-socket joint system, defined by the ball radius, wall_thickness, and tolerance.
Arguments
ball_radius(float): The radius of the spherical ball that will be inserted into this socket, in millimeters. Must match the ball_radius of the corresponding ball_mount for proper fit.wall_thickness(float, default=2): The thickness of the socket walls in millimeters. Affects both strength and flexibility. Thicker walls provide more strength but may reduce flexibility. Recommended range: 1.5-3mm.tolerance(float, default=0.1): Additional clearance around the ball in millimeters. Positive values create looser fits, negative values create tighter fits. Typical range: 0.05-0.2mm.rotation(RotationLike, optional): angles to rotate about axes. Defaults to (0, 0, 0)align(Align | tuple[Align, Align, Align] | None, optional): align MIN, CENTER, or MAX of object. Defaults to (Align.CENTER, Align.CENTER, Align.CENTER)mode(Mode, optional): combine mode. Defaults to Mode.ADD
Example Usage
from b3dkit.ball_socket import BallMount, BallSocket
# Create a basic ball joint system with 15mm radius
mount = BallMount(15.0)
socket = BallSocket(15.0)
# Create a tighter-fitting joint with thicker walls
precision_mount = BallMount(12.0)
precision_socket = BallSocket(
ball_radius=12.0,
wall_thickness=2.5,
tolerance=0.05
)
# Create a looser joint for easy assembly
loose_mount = BallMount(10.0)
loose_socket = BallSocket(
ball_radius=10.0,
wall_thickness=2.0,
tolerance=0.15
)
# For heavy-duty applications
heavy_duty_mount = BallMount(20.0)
heavy_duty_socket = BallSocket(
ball_radius=20.0,
wall_thickness=4.0,
tolerance=0.1
)