added awesome modular multi-hdd-case
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
/**
|
||||
* 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/tray.scad>
|
||||
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
|
||||
];
|
||||
//----------------------------------------------------------
|
||||
/**
|
||||
* Dibuja un modelo de una unidad de 3.5" según la especificación SFF-8200.
|
||||
*
|
||||
* Este modelo permite extraer el volumen posteriormente para crear una ranura
|
||||
* como las usadas en las cajas de PCs.
|
||||
*
|
||||
* @param {Float} length Longitud de la unidad a generar.
|
||||
* @param {Float} thickness Grosor del bloque donde se insertará el modelo.
|
||||
* @param {Float} screw Diámetro del tornillo a usar.
|
||||
* @param {Float} slot Longitud de la ranura donde se insertarán los tornillos.
|
||||
* @param {Float} tolerance Valor a usar para ajustar las medidas estándar.
|
||||
* @param {Integer} type Tipo de unidad (0: pequeña, 1: mediana, 2: grande).
|
||||
*/
|
||||
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] ]
|
||||
]
|
||||
);
|
||||
}
|
||||
//----------------------------------------------------------
|
||||
/**
|
||||
* Dibuja una bandeja que puede insertarse en una ranura donde va una unidad de 3.5".
|
||||
*
|
||||
* @param {Float} length Longitud de la unidad a generar.
|
||||
* @param {Float} thickness Grosor del bloque donde se insertará el modelo.
|
||||
* @param {Float} screw Diámetro del tornillo a usar.
|
||||
* @param {Float} slot Longitud de la ranura donde se insertarán los tornillos.
|
||||
* @param {Float} tolerance Valor a usar para ajustar las medidas estándar.
|
||||
* @param {Boolean} sides Lados a eliminar de la bandeja.
|
||||
* @param {Integer} type Define la altura según el tipo de unidad (0: más grande, 8: más pequeña).
|
||||
*/
|
||||
module sff8200Tray(length = 0, thickness = 5, screw = 0, slot = 15, tolerance = 0.3, sides = [ "a", "t" ], type = 0)
|
||||
{
|
||||
_A = sff8200(tolerance, type);
|
||||
boxTray(_A[4], _A[1], length ? length : _A[6], thickness, sides)
|
||||
{
|
||||
sff8200Model(length, thickness, screw ? screw : _A[0], slot, tolerance, type);
|
||||
}
|
||||
}
|
||||
//sff8200Tray();
|
@@ -0,0 +1,95 @@
|
||||
/**
|
||||
* Modelos y variables según la especificación SFF-8300.
|
||||
*
|
||||
* @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/tray.scad>
|
||||
use <../box.scad>
|
||||
//----------------------------------------------------------
|
||||
/**
|
||||
* Devuelve las especificaciones de las medidas según SFF-8300.
|
||||
*
|
||||
* @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 sff8300(tolerance = 0, type = 1) = [
|
||||
3.00, // Diámetro del tornillo
|
||||
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
|
||||
];
|
||||
//----------------------------------------------------------
|
||||
/**
|
||||
* Dibuja un modelo de una unidad de 3.5" según la especificación SFF-8300.
|
||||
*
|
||||
* Este modelo permite extraer el volumen posteriormente para crear una ranura
|
||||
* como las usadas en las cajas de PCs.
|
||||
*
|
||||
* @param {Float} length Longitud de la unidad a generar.
|
||||
* @param {Float} thickness Grosor del bloque donde se insertará el modelo.
|
||||
* @param {Float} screw Diámetro del tornillo a usar.
|
||||
* @param {Float} slot Longitud de la ranura donde se insertarán los tornillos.
|
||||
* @param {Float} tolerance Valor a usar para ajustar las medidas estándar.
|
||||
* @param {Integer} type Tipo de unidad (0: pequeña, 1: mediana, 2: grande).
|
||||
*/
|
||||
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] ]
|
||||
]
|
||||
);
|
||||
}
|
||||
//----------------------------------------------------------
|
||||
/**
|
||||
* Dibuja una bandeja que puede insertarse en una ranura donde va una unidad de 3.5".
|
||||
*
|
||||
* @param {Float} length Longitud de la unidad a generar.
|
||||
* @param {Float} thickness Grosor del bloque donde se insertará el modelo.
|
||||
* @param {Float} screw Diámetro del tornillo a usar.
|
||||
* @param {Float} slot Longitud de la ranura donde se insertarán los tornillos.
|
||||
* @param {Float} tolerance Valor a usar para ajustar las medidas estándar.
|
||||
* @param {Boolean} sides Lados a eliminar de la bandeja.
|
||||
* @param {Integer} type Define la altura según el tipo de unidad (0: grande, 1: mediana, 2: pequeña).
|
||||
*/
|
||||
module sff8300Tray(length = 0, thickness = 5, screw = 0, slot = 15, tolerance = 0.3, sides = [ "a", "t" ], type = 1)
|
||||
{
|
||||
_A = sff8300(tolerance, type);
|
||||
boxTray(_A[3], _A[1], length ? length : _A[2], thickness, sides)
|
||||
{
|
||||
sff8300Model(length, thickness, screw ? screw : _A[0], slot, tolerance, type);
|
||||
}
|
||||
}
|
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* Modelo que dibuja una caja que puede tener tornillos y ranuras y que
|
||||
* puede usarse como un negativo sobre otra caja y obtener la diferencia.
|
||||
*
|
||||
* @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 Anchura del modelo a generar.
|
||||
* @param {Float} height Altura del modelo a generar.
|
||||
* @param {Float} length Longitud del modelo a generar.
|
||||
* @param {Float} thickness Grosor del bloque donde se insertará el modelo.
|
||||
* @param {Float} screw Diámetro del tornillo a usar.
|
||||
* @param {Float} slot Longitud de la ranura donde se insertarán los tornillos.
|
||||
* @param {Float} tolerance Valor a usar para ajustar las medidas estándar.
|
||||
* @param {Float[]} side Coordenadas de los agujeros laterales.
|
||||
* @param {Float[]} bottom Coordenadas de los agujeros inferiores.
|
||||
*/
|
||||
module modelBox(width, height, length, thickness, screw = 0, slot = 0, side = [], bottom = [])
|
||||
{
|
||||
cube([ width, height, length ]);
|
||||
// Agujeros laterales
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Agujeros inferiores
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user