added hdd holder
parent
1349201422
commit
af08abafdd
|
@ -0,0 +1,82 @@
|
||||||
|
/**
|
||||||
|
* Model that draws a box that can have screws and slots and that can be used as a negative on another box and obtain the difference.
|
||||||
|
* can be used as a negative on another box and obtain the difference.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Modules/Models/box.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
*
|
||||||
|
* @ @param {Float} width Width of the model to generate.
|
||||||
|
* @ @param {Float} height Height of the model to generate.
|
||||||
|
* @param {Float} length Length of the model to be generated.
|
||||||
|
* @param {Float} thickness Thickness of the block where the model will be inserted.
|
||||||
|
* @param {Float} screw Diameter of the screw to be used.
|
||||||
|
* @param {Float} slot Length of the slot where the screws will be inserted.
|
||||||
|
* @param {Float} tolerance Value to be used to adjust the standard dimensions.
|
||||||
|
* @param {Float[]} side Coordinates of the side holes.
|
||||||
|
* @param {Float[]} bottom Coordinates of the bottom holes.
|
||||||
|
*/
|
||||||
|
module modelBox(width, height, length, thickness, screw = 0, slot = 0, side = [], bottom = [])
|
||||||
|
{
|
||||||
|
cube([ width, height, length ]);
|
||||||
|
// Side holes
|
||||||
|
for (_side = side)
|
||||||
|
{
|
||||||
|
if (slot)
|
||||||
|
{
|
||||||
|
hull()
|
||||||
|
{
|
||||||
|
for (_n = [ - slot / 2, slot / 2 ])
|
||||||
|
{
|
||||||
|
translate([ width / 2, _side[0], _side[1] + _n ])
|
||||||
|
{
|
||||||
|
rotate([ 0, 90, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = width + thickness * 2, center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate([ width / 2, _side[0], _side[1] ])
|
||||||
|
{
|
||||||
|
rotate([ 0, 90, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = width + thickness * 2, center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Bottom holes
|
||||||
|
for (_bottom = bottom)
|
||||||
|
{
|
||||||
|
if (slot)
|
||||||
|
{
|
||||||
|
hull()
|
||||||
|
{
|
||||||
|
for (_n = [ - slot / 2, slot / 2 ])
|
||||||
|
{
|
||||||
|
translate([ width - _bottom[0], 0, _bottom[1] + _n ])
|
||||||
|
{
|
||||||
|
rotate([ 90, 0, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = thickness);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate([ width - _bottom[0], 0, _bottom[1] ])
|
||||||
|
{
|
||||||
|
rotate([ 90, 0, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = thickness);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 113 KiB |
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 125 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
|
@ -0,0 +1,83 @@
|
||||||
|
use <./modules/disk_lff.scad>
|
||||||
|
use <./modules/disk_sff.scad>
|
||||||
|
tolerance=0.3;
|
||||||
|
mt=3;
|
||||||
|
$fn=25;
|
||||||
|
lff_w=101.60+tolerance;
|
||||||
|
lff_l=147.00+tolerance;
|
||||||
|
lff_h=28.50+tolerance;
|
||||||
|
sff_w=69.85+tolerance;
|
||||||
|
sff_l=100.45+tolerance;
|
||||||
|
sff_h=8.50+tolerance;
|
||||||
|
f1_w=15;
|
||||||
|
f1_h=17.5;
|
||||||
|
f1_l=167.5;
|
||||||
|
f2_w=32.5;
|
||||||
|
f2_h=20;
|
||||||
|
f2_l=167.5;
|
||||||
|
lff_tab_d=9;
|
||||||
|
lff_tab_l=60;
|
||||||
|
lff_tab_hole_dia=4;
|
||||||
|
lff_tab_hole_dia_ring=lff_tab_hole_dia+3;
|
||||||
|
lff_tab_mt=4;
|
||||||
|
h_dia=7.75;
|
||||||
|
// ##############################
|
||||||
|
|
||||||
|
module lff_tab(){
|
||||||
|
difference(){
|
||||||
|
hull(){
|
||||||
|
cube([lff_tab_d,lff_tab_mt,lff_tab_l-2*lff_tab_mt],center=true);
|
||||||
|
for(x=[lff_tab_l/2+lff_tab_mt/2,-lff_tab_l/2-mt/2],y=[-lff_tab_d/2]){
|
||||||
|
translate([y,0,x])#cube([0.1,lff_tab_mt,0.1],center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(x=[lff_tab_l/3,-lff_tab_l/3]){
|
||||||
|
translate([0,0,x])rotate([90,0,0])#cylinder(h=lff_tab_mt+0.1,d=lff_tab_hole_dia_ring,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module frame(){
|
||||||
|
difference(){
|
||||||
|
union(){
|
||||||
|
translate([0,-(lff_h/2+mt/2-tolerance-0.1),lff_l/2])cube([lff_w+2*mt,lff_h,lff_l],center=true); //lff-box
|
||||||
|
for(x=[-(sff_w/2+mt/2+0.1),(sff_w/2+mt/2+0.1)]){
|
||||||
|
translate([x,mt+tolerance,sff_l/2+42.9]){
|
||||||
|
hull(){
|
||||||
|
cube([mt,sff_h,sff_l],center=true);
|
||||||
|
translate([0,-sff_h/2,-sff_l/2-sff_h])cube([mt,0.1,0.1],center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([lff_tab_d/2+lff_w/2+mt,-lff_h-sff_h/2+2*mt-0.7,75])lff_tab();
|
||||||
|
mirror([1,0,0])translate([lff_tab_d/2+lff_w/2+mt,-lff_h-sff_h/2+2*mt-0.7,75])lff_tab();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
union(){
|
||||||
|
// lff, connectors up top
|
||||||
|
translate([-lff_w/2,-30,0])#sff8300Model(0,8,4,15,0.3,1);
|
||||||
|
//sff
|
||||||
|
translate([-sff_w/2,-mt/20,45])#sff8200Model(0,8,0,10,tolerance,5);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module mount(){
|
||||||
|
difference(){
|
||||||
|
cylinder(d=h_dia+mt,h=mt+1,center=true);
|
||||||
|
cylinder(d=h_dia,h=mt+2,center=true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// #############################
|
||||||
|
translate([94.25,-85,30+mt/2])rotate([90,0,180])frame();
|
||||||
|
//translate([94.25-25-lff_w,-85,30+mt/2])rotate([90,0,180])frame();
|
||||||
|
//translate([94.25-25-lff_w-25-lff_w,-85,30+mt/2])rotate([90,0,180])frame();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%linear_extrude(10)scale(0.75)import("IMG/hdds.svg",center=true);
|
||||||
|
translate([155,-78.5,0])%cube([1,157,1]);
|
Binary file not shown.
|
@ -0,0 +1,82 @@
|
||||||
|
/**
|
||||||
|
* Model that draws a box that can have screws and slots and that can be used as a negative on another box and obtain the difference.
|
||||||
|
* can be used as a negative on another box and obtain the difference.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Modules/Models/box.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
*
|
||||||
|
* @ @param {Float} width Width of the model to generate.
|
||||||
|
* @ @param {Float} height Height of the model to generate.
|
||||||
|
* @param {Float} length Length of the model to be generated.
|
||||||
|
* @param {Float} thickness Thickness of the block where the model will be inserted.
|
||||||
|
* @param {Float} screw Diameter of the screw to be used.
|
||||||
|
* @param {Float} slot Length of the slot where the screws will be inserted.
|
||||||
|
* @param {Float} tolerance Value to be used to adjust the standard dimensions.
|
||||||
|
* @param {Float[]} side Coordinates of the side holes.
|
||||||
|
* @param {Float[]} bottom Coordinates of the bottom holes.
|
||||||
|
*/
|
||||||
|
module modelBox(width, height, length, thickness, screw = 0, slot = 0, side = [], bottom = [])
|
||||||
|
{
|
||||||
|
cube([ width, height, length ]);
|
||||||
|
// Side holes
|
||||||
|
for (_side = side)
|
||||||
|
{
|
||||||
|
if (slot)
|
||||||
|
{
|
||||||
|
hull()
|
||||||
|
{
|
||||||
|
for (_n = [ - slot / 2, slot / 2 ])
|
||||||
|
{
|
||||||
|
translate([ width / 2, _side[0], _side[1] + _n ])
|
||||||
|
{
|
||||||
|
rotate([ 0, 90, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = width + thickness * 2, center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate([ width / 2, _side[0], _side[1] ])
|
||||||
|
{
|
||||||
|
rotate([ 0, 90, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = width + thickness * 2, center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Bottom holes
|
||||||
|
for (_bottom = bottom)
|
||||||
|
{
|
||||||
|
if (slot)
|
||||||
|
{
|
||||||
|
hull()
|
||||||
|
{
|
||||||
|
for (_n = [ - slot / 2, slot / 2 ])
|
||||||
|
{
|
||||||
|
translate([ width - _bottom[0], 0, _bottom[1] + _n ])
|
||||||
|
{
|
||||||
|
rotate([ 90, 0, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = thickness);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate([ width - _bottom[0], 0, _bottom[1] ])
|
||||||
|
{
|
||||||
|
rotate([ 90, 0, 0 ])
|
||||||
|
{
|
||||||
|
cylinder(d = screw, h = thickness);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/**
|
||||||
|
* Models and variables according to SFF-8300 specification.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Modules/Models/SFF/8300.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
*
|
||||||
|
* @see SFF-8300 3.5" Form Factor Drives
|
||||||
|
*/
|
||||||
|
//----------------------------------------------------------
|
||||||
|
use <./box.scad>
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Returns the specifications of the measurements according to SFF-8300.
|
||||||
|
*
|
||||||
|
* @param {Float} tolerance Tolerance to be used to adjust the measurements.
|
||||||
|
* @param {Integer} type Type of unit (0: small, 1: medium, 2: large).
|
||||||
|
*
|
||||||
|
* @return {Float[]}
|
||||||
|
*/
|
||||||
|
function sff8300(tolerance = 0, type = 1) = [
|
||||||
|
3.00, // Screw diameter
|
||||||
|
type == 0 ? 42.00 : (type == 1 ? 26.10 : 17.80) + tolerance,
|
||||||
|
147.00 + tolerance,
|
||||||
|
101.60 + tolerance,
|
||||||
|
95.25 + tolerance,
|
||||||
|
3.18,
|
||||||
|
44.45 + tolerance / 2,
|
||||||
|
41.28 + tolerance / 2,
|
||||||
|
28.50 + tolerance / 2,
|
||||||
|
101.60 + tolerance / 2,
|
||||||
|
6.35 + tolerance / 2,
|
||||||
|
0.25,
|
||||||
|
0.50,
|
||||||
|
76.20 + tolerance / 2
|
||||||
|
];
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Draw a model of a 3.5" drive according to the SFF-8300 specification.
|
||||||
|
*
|
||||||
|
* This model allows the volume to be removed later to create a slot
|
||||||
|
* like those used in PC cases.
|
||||||
|
*
|
||||||
|
* @param {Float} length Length of the drive to be generated.
|
||||||
|
* @param {Float} thickness Thickness of the block where the model will be inserted.
|
||||||
|
* @param {Float} screw Diameter of the screw to be used.
|
||||||
|
* @param {Float} slot Length of the slot where the screws will be inserted.
|
||||||
|
* @param {Float} tolerance Value to be used to adjust the standard dimensions.
|
||||||
|
* @param {Integer} type Type of unit (0: small, 1: medium, 2: large).
|
||||||
|
*/
|
||||||
|
module sff8300Model(length = 0, thickness = 5, screw = 0, slot = 15, tolerance = 0.3, type = 0)
|
||||||
|
{
|
||||||
|
_A = sff8300(tolerance, type);
|
||||||
|
modelBox(
|
||||||
|
_A[3],
|
||||||
|
_A[1],
|
||||||
|
length ? length : _A[2],
|
||||||
|
thickness,
|
||||||
|
screw ? screw : _A[0],
|
||||||
|
slot,
|
||||||
|
[
|
||||||
|
[ _A[10], _A[2] - _A[8] ],
|
||||||
|
[ _A[10], _A[2] - _A[8] - _A[9] ]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ _A[5], _A[2] - _A[7] ],
|
||||||
|
[ _A[5], _A[2] - _A[7] - _A[6] ],
|
||||||
|
[ _A[5], _A[2] - _A[7] - _A[13] ],
|
||||||
|
[ _A[3] - _A[5], _A[2] - _A[7] ],
|
||||||
|
[ _A[3] - _A[5], _A[2] - _A[7] - _A[6] ],
|
||||||
|
[ _A[3] - _A[5], _A[2] - _A[7] - _A[13] ]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,130 @@
|
||||||
|
/**
|
||||||
|
* Modelos y variables según la especificación SFF-8200.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Modules/Models/SFF/8200.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
*
|
||||||
|
* @see SFF-8200 2.5" Form Factor Drives
|
||||||
|
*/
|
||||||
|
//----------------------------------------------------------
|
||||||
|
use <./box.scad>
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Devuelve las especificaciones de las medidas según SFF-8200.
|
||||||
|
*
|
||||||
|
* @param {Float} tolerance Tolerancia a usar para ajustar las medidas.
|
||||||
|
* @param {Integer} type Tipo de unidad (0: pequeña, 1: mediana, 2: grande).
|
||||||
|
*
|
||||||
|
* @return {Float[]}
|
||||||
|
*/
|
||||||
|
function sff8200(tolerance = 0, type = 0) = [
|
||||||
|
3.00, // Diámetro del tornillo
|
||||||
|
(
|
||||||
|
type == 0
|
||||||
|
? 19.05
|
||||||
|
: type == 1
|
||||||
|
? 17.00
|
||||||
|
: type == 2
|
||||||
|
? 15.00
|
||||||
|
: type == 3
|
||||||
|
? 12.70
|
||||||
|
: type == 4
|
||||||
|
? 10.50
|
||||||
|
: type == 5
|
||||||
|
? 9.50
|
||||||
|
: type == 6
|
||||||
|
? 8.47
|
||||||
|
: type == 7
|
||||||
|
? 7.00
|
||||||
|
: 5.00
|
||||||
|
) + tolerance,
|
||||||
|
0.00,
|
||||||
|
0.50,
|
||||||
|
69.85 + tolerance,
|
||||||
|
0.25,
|
||||||
|
100.45 + tolerance,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
100.20 + tolerance, // #10
|
||||||
|
100.50 + tolerance,
|
||||||
|
110.20 + tolerance,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef, // #20
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
3.00 + tolerance / 2,
|
||||||
|
34.93,
|
||||||
|
38.10,
|
||||||
|
undef,
|
||||||
|
0.50,
|
||||||
|
4.07 + tolerance / 2,
|
||||||
|
61.72,
|
||||||
|
34.93, // #30
|
||||||
|
38.10,
|
||||||
|
undef,
|
||||||
|
0.50,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
8.00,
|
||||||
|
3.00,
|
||||||
|
undef,
|
||||||
|
undef, // #40
|
||||||
|
2.50,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
undef,
|
||||||
|
14.00 + tolerance / 2, // #50
|
||||||
|
90.60 + tolerance / 2,
|
||||||
|
14.00 + tolerance / 2,
|
||||||
|
90.60 + tolerance / 2
|
||||||
|
];
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Draw a model of a 3.5" drive according to the SFF-8200 specification.
|
||||||
|
*
|
||||||
|
* This model allows the volume to be removed later to create a slot as used in PC cases.
|
||||||
|
* like those used in PC cases.
|
||||||
|
*
|
||||||
|
* @param {Float} length Length of the drive to be generated.
|
||||||
|
* @param {Float} thickness Thickness of the block where the model will be inserted.
|
||||||
|
* @param {Float} screw Diameter of the screw to be used.
|
||||||
|
* @param {Float} slot Length of the slot where the screws will be inserted.
|
||||||
|
* @param {Float} tolerance Value to be used to adjust the standard dimensions.
|
||||||
|
* @param {Integer} type Type of unit (0: small, 1: medium, 2: large).
|
||||||
|
*/
|
||||||
|
module sff8200Model(length = 0, thickness = 5, screw = 0, slot = 15, tolerance = 0.3, type = 0)
|
||||||
|
{
|
||||||
|
_A = sff8200(tolerance, type);
|
||||||
|
modelBox(
|
||||||
|
_A[4],
|
||||||
|
_A[1],
|
||||||
|
length ? length : _A[6],
|
||||||
|
thickness,
|
||||||
|
screw ? screw : _A[0],
|
||||||
|
slot,
|
||||||
|
[
|
||||||
|
[ _A[23], _A[6] - _A[52] ],
|
||||||
|
[ _A[23], _A[6] - _A[53] ]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ _A[28], _A[6] - _A[50] ],
|
||||||
|
[ _A[28], _A[6] - _A[51] ],
|
||||||
|
[ _A[4] - _A[28], _A[6] - _A[50] ],
|
||||||
|
[ _A[4] - _A[28], _A[6] - _A[51] ]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in New Issue