3d-stuff/openscad/foreign/modular multi-hdd case/Modules/Models/SFF/8200.scad

152 lines
4.5 KiB
OpenSCAD

/**
* 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();