Updates
This commit is contained in:
319
tir_sportif/dioptre-pédagogique/scad/dioptre_v2.scad
Normal file
319
tir_sportif/dioptre-pédagogique/scad/dioptre_v2.scad
Normal file
@@ -0,0 +1,319 @@
|
||||
$fn=60;
|
||||
|
||||
// Ball joint
|
||||
size=8; // size of the ball joint
|
||||
joint_spacing =0.75; // some space between them?
|
||||
joint_thickness = 2; // thickness of the arms
|
||||
joint_arms = 4; // how many arms do you want?
|
||||
arm_width = 7; // actually: how much is removed from the arms Larger values will remove more
|
||||
|
||||
// Finger
|
||||
f_len=45;
|
||||
f_dia=5;
|
||||
|
||||
// Render settings
|
||||
$fs=0.8; // def 1, 0.2 is high res
|
||||
$fa=4;//def 12, 3 is very nice
|
||||
|
||||
/*[Torus]*/
|
||||
ShowTorus = false;
|
||||
Torus_Diameter = 9.5; //[.1:.01:400]
|
||||
Torus_Circle_Radius = 7; //[.1:.01:400]
|
||||
Torus_Fragments = 60; //[1:.01:200]
|
||||
Rotate_TorusX = 90; //[0:.01:360]
|
||||
Rotate_TorusY = 0; //[0:.01:360]
|
||||
Rotate_TorusZ = 0; //[0:.01:360]
|
||||
Move_TorusX = 0; //[-400:.01:400]
|
||||
Move_TorusY = 0; //[-400:.01:400]
|
||||
Move_TorusZ = -18; //[-400:.01:400]
|
||||
|
||||
include<ujoint.scad>
|
||||
include<threads.scad>
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <BOSL2/gears.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
module bolt() {
|
||||
difference() {
|
||||
cuboid([20,20,20], rounding=1);
|
||||
zcyl(l=20, d=15);
|
||||
}
|
||||
translate([0,0,-10]) mirror([0,1,0]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4);
|
||||
}
|
||||
|
||||
module ball() {
|
||||
sphere(r=size);
|
||||
/* translate([0,0,-size]) cylinder(r1=f_dia-2,r2=f_dia-4,h=3); */
|
||||
translate([0,0,-f_len/2-3]) /* cylinder(r=8,h=3); */ zcyl(l=f_len, d=f_dia, rounding=2.5);
|
||||
}
|
||||
|
||||
module ball2() {
|
||||
sphere(r=size);
|
||||
/* translate([0,0,-size]) cylinder(r1=f_dia-2,r2=f_dia-4,h=3); */
|
||||
translate([0,0,-f_len/3+3]) /* cylinder(r=8,h=3); */ tube(od=f_dia+3, wall=1, l=f_len/3, rounding=1);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
module Torus() {
|
||||
InnerRadius = Torus_Circle_Radius/2;
|
||||
OuterRadius = Torus_Diameter/2-Torus_Circle_Radius/2;
|
||||
rotate(a = [Rotate_TorusX, 0, 0])
|
||||
rotate(a = [0, Rotate_TorusY, 0])
|
||||
rotate(a = [0, 0, Rotate_TorusZ])
|
||||
translate([Move_TorusX, 0, 0])
|
||||
translate([0, Move_TorusY, 0])
|
||||
translate([0, 0, Move_TorusZ])
|
||||
|
||||
if (ShowTorus) {
|
||||
rotate_extrude(convexity = 10, $fn = Torus_Fragments)
|
||||
translate([Torus_Diameter, 0, 0])
|
||||
circle(r = Torus_Circle_Radius, $fn = 144);
|
||||
}
|
||||
else {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*[screws]*/
|
||||
color("blue") {
|
||||
translate ([0,14,51]) rotate([0,180,0]) {
|
||||
cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
translate ([0,52,51]) rotate([0,180,0]) {
|
||||
* cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
rotate([0,0,10]) spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
}
|
||||
color("red") {
|
||||
translate ([51,-14,0]) rotate([0,-90,0]) {
|
||||
cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
translate ([36.5,33,0]) rotate([0,-90,0]) {
|
||||
linear_extrude(5)
|
||||
rotate([0,0,8]) spur_gear2d(circ_pitch=7, teeth=24, pressure_angle=14);
|
||||
}
|
||||
translate ([51,80,0]) rotate([0,-90,0]) {
|
||||
* cylinder(h=15, d=12, $fn=6);
|
||||
translate([0,0,15]) {
|
||||
mirror([0,1,0]) RodStart(20, 3, thread_len=68, thread_diam=11, thread_pitch=4);
|
||||
linear_extrude(5)
|
||||
spur_gear2d(circ_pitch=7, teeth=16, pressure_angle=14);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*[rings]*/
|
||||
* color("grey") {
|
||||
translate ([0,15,-34.5]) {
|
||||
tube(od=15, wall=1.8, h=5, rounding=1);
|
||||
}
|
||||
translate ([-34.5,-15,0]) {
|
||||
rotate([0,90,0]) {
|
||||
tube(od=15, wall=1.8, h=5, rounding=1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*[rotule]*/
|
||||
/*[y_axis]*/
|
||||
* color("cyan") {
|
||||
translate([0,14,0]) {
|
||||
bolt();
|
||||
}
|
||||
}
|
||||
/*[x_axis */
|
||||
* color("pink") {
|
||||
translate([0,-14,0]) {
|
||||
rotate([0,90,0]) {
|
||||
bolt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*[plate1]*/
|
||||
translate([0,0,0]) {
|
||||
/* Main */
|
||||
cuboid([45,3,45], rounding=1);
|
||||
translate([21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
//
|
||||
translate([16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
//
|
||||
difference() {
|
||||
cuboid([30,14,30], rounding=1);
|
||||
translate([0,-6,0]) cuboid([21,4,55], rounding=1);
|
||||
translate([0,6,0]) cuboid([55,4,21], rounding=1);
|
||||
}
|
||||
// Front
|
||||
translate([0,-26,0]) cuboid([45,3,45], rounding=1);
|
||||
translate([0,-31,0]) rotate([90,0,0]) tube(od=16, wall=2, h=10, rounding=1);
|
||||
// Sight
|
||||
* translate([0,-33,0]) {
|
||||
rotate([90,0,0]) {
|
||||
tube(od=12, wall=3, h=12, chamfer=0.5);
|
||||
translate([0,0,10.5]) tube(h=10, or1=6, or2=20, wall=3, chamfer=0.5);
|
||||
}
|
||||
}
|
||||
// Back
|
||||
translate([0,26,0]) cuboid([45,3,45], rounding=1);
|
||||
// Joint
|
||||
* translate([0,38,0]) rotate([90,0,0]) joint();
|
||||
}
|
||||
|
||||
/*[plate2]*/
|
||||
translate([0,66,0]) rotate([0,0,180]) {
|
||||
/* Main */
|
||||
cuboid([45,3,45], rounding=1);
|
||||
translate([21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,16]) cuboid([3,28,5], rounding=1);
|
||||
translate([21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
translate([-21,13,-16]) cuboid([3,28,5], rounding=1);
|
||||
//
|
||||
translate([16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,21]) cuboid([5,28,3], rounding=1);
|
||||
translate([16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
translate([-16,-13,-21]) cuboid([5,28,3], rounding=1);
|
||||
//
|
||||
difference() {
|
||||
cuboid([30,14,30], rounding=1);
|
||||
translate([0,-6,0]) cuboid([21,4,55], rounding=1);
|
||||
translate([0,6,0]) cuboid([55,4,21], rounding=1);
|
||||
}
|
||||
// Front
|
||||
translate([0,-26,0]) cuboid([45,3,45], rounding=1);
|
||||
translate([0,-31,0]) rotate([90,0,0]) tube(od=16, wall=2, h=10, rounding=1);
|
||||
// Sight
|
||||
* translate([0,-33,0]) {
|
||||
rotate([90,0,0]) {
|
||||
tube(od=12, wall=3, h=12, chamfer=0.5);
|
||||
translate([0,0,10.5]) tube(h=10, or1=6, or2=20, wall=3, chamfer=0.5);
|
||||
}
|
||||
}
|
||||
// Back
|
||||
translate([0,26,0]) cuboid([45,3,45], rounding=1);
|
||||
// Joint
|
||||
* translate([0,38,0]) rotate([90,0,0]) joint();
|
||||
}
|
||||
|
||||
/*[balls]*/
|
||||
* color("orange") {
|
||||
translate([0,38,0]) {
|
||||
rotate([90,0,0]) ball();
|
||||
}
|
||||
translate([0,98,0]) {
|
||||
rotate([-90,0,0]) ball2();
|
||||
}
|
||||
}
|
||||
|
||||
/*[enclosure]*/
|
||||
color("white", alpha=.5) {
|
||||
difference() {
|
||||
translate([0,15,0]) cuboid([80,100,80], rounding=1);
|
||||
translate([0,15,0]) cuboid([74,110,74], rounding=1);
|
||||
cuboid([60,40,60], rounding=20);
|
||||
translate([0,14,37.5]) {
|
||||
zcyl(l=10, d=14);
|
||||
}
|
||||
translate([37.5,-14,0]) {
|
||||
xcyl(l=10, d=14);
|
||||
}
|
||||
}
|
||||
translate([0,64,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([80,3,80], rounding=1);
|
||||
translate([0,39,100]) {
|
||||
cuboid([160,3,160], rounding=1);
|
||||
}
|
||||
}
|
||||
ycyl(l=3, d=f_dia+2, rounding=-1.5);
|
||||
translate([0,39,100]) {
|
||||
cuboid([110,4,110], rounding=1);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Screw guides
|
||||
translate ([-37,-15,0]) {
|
||||
rotate([0,90,0]) {
|
||||
tube(od=17, wall=1, h=4, rounding=1);
|
||||
}
|
||||
}
|
||||
translate ([0,15,-37]) {
|
||||
tube(od=17, wall=1, h=4, rounding=1);
|
||||
}
|
||||
// Back
|
||||
translate([0,114,0]) {
|
||||
cuboid([80,3,80], rounding=1);
|
||||
translate([0,0,100]) {
|
||||
cuboid([160,3,160], rounding=1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*[grp_holder]*/
|
||||
* translate([0,108,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,16]) {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(6, center=true)
|
||||
trapezoid(55, 20, 80, rounding=5);
|
||||
}
|
||||
}
|
||||
translate([0,0,100]) {
|
||||
cuboid([126,6,126], rounding=1);
|
||||
}
|
||||
}
|
||||
translate([0,0,23]) {
|
||||
rotate([90,0,0]) {
|
||||
linear_extrude(6, center=true)
|
||||
trapezoid(27, 30, 60, rounding=5);
|
||||
}
|
||||
}
|
||||
translate([0,-1.5,100]) cuboid([121,5,121]);
|
||||
* translate([0,0,100]) cuboid([116,7,116], rounding=2);
|
||||
ycyl(l=6, d=f_dia+.5, rounding=-3);
|
||||
}
|
||||
/*[plexi]*/
|
||||
color("cyan", alpha=.3) translate([0,-1,100]) cuboid([120,4,120], rounding=1);
|
||||
}
|
||||
/*[ball2]*/
|
||||
* translate([0,98,0]) rotate([-90,0,0]) joint();
|
||||
Reference in New Issue
Block a user