Files
3D/tir_sportif/dioptre-pédagogique/scad/ballJoint.scad
2025-06-30 17:14:30 +02:00

52 lines
1.3 KiB
OpenSCAD

// Ball joint in SCAD by Erik de Bruijn
// Based on a design by Makerblock ( http://makerblock.com/2010/03/blender-help/ )
size=10; // size of the ball joint
joint_spacing =0.5; // some space between them?
joint_thickness = 2; // thickness of the arms
joint_arms = 5; // how many arms do you want?
arm_width = 10; // actually: how much is removed from the arms Larger values will remove more
//render settings
$fs=0.8; // def 1, 0.2 is high res
$fa=4;//def 12, 3 is very nice
//print();
demo(); // turn on animation, FPS 15, steps 200
module demo()
{
ball();
rotate([sin($t*720)*28,cos($t*360*4)*28,cos($t*360*2)*20]) joint();
}
module print()
{
translate([size*2+10,0,0]) ball();
rotate([0,180,0]) joint();
}
module ball()
{
sphere(r=size);
translate([0,0,-size]) cylinder(r1=8,r2=6,h=3);
translate([0,0,-size-3]) cylinder(r=8,h=3);
}
module joint()
{
difference()
{
sphere(r=size+joint_spacing+joint_thickness);
sphere(r=size+joint_spacing);
translate([0,0,-size-3]) cube([size+joint_spacing+joint_thickness+25,size+joint_spacing+joint_thickness+25,18],center=true);
for(i=[0:joint_arms])
{
rotate([0,0,360/joint_arms*i]) translate([-arm_width/2,0, -size/2-4])
cube([arm_width,size+joint_spacing+joint_thickness+20,size+6]);
}
}
translate([0,0,size-2]) cylinder(r2=8,r1=8,h=5);
}