Compare commits
104 Commits
2fb7ced78f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 9588b3fe8c | |||
| f1c385f5dd | |||
| 8d1c96b3ee | |||
| 4e39e68a14 | |||
| 76809106ce | |||
| 5e18e5733c | |||
| 28f352e5f9 | |||
| cbf18e926d | |||
| 7a7fbd1f4e | |||
| edefeee886 | |||
| d4258527b8 | |||
| 2572c7af6e | |||
| f0729d7baf | |||
| 0c33006cff | |||
| d7ac5af9fe | |||
| 56fd9e64d4 | |||
| ce77ff95c3 | |||
| 3adb41c979 | |||
| cb30dd06cc | |||
| 58061fa685 | |||
| 6b1f5aa41b | |||
| a2a36a1ea1 | |||
|
|
f8805b9883 | ||
| 2c2f9e857e | |||
| ef13e277c7 | |||
| c6552c797f | |||
| 83ab29095b | |||
|
|
f51f197417 | ||
| f929ae9488 | |||
| ec52e9703a | |||
| cf524d52a9 | |||
|
|
09230add3b | ||
|
|
06dc1b6287 | ||
|
|
c22b714a0f | ||
| 1e0d0c482e | |||
| ee0b497fd2 | |||
| 352bbdd459 | |||
| a972c2f796 | |||
| e600f934f7 | |||
| 7ca9ac3331 | |||
| 501be215b8 | |||
| 6b4245b457 | |||
| 2a05bef4f2 | |||
| d67a700515 | |||
| 01316aba9a | |||
|
|
eb1321b190 | ||
| 3e4fb29057 | |||
| 1f5e346ea2 | |||
| 704f690e8d | |||
| ef11bb8fcf | |||
| d804f9a8fe | |||
| 2064260e38 | |||
| 0ed55737d9 | |||
| 599f3ffba3 | |||
| 1fcb3fe322 | |||
| 9b4475d1ee | |||
| 3ad1b89c3f | |||
| af08abafdd | |||
| 1349201422 | |||
| 71dcf7f68b | |||
| beb92d38e0 | |||
| eb67f83ff7 | |||
| 01a62c8550 | |||
| ac83d4d3e8 | |||
| 423d6024ec | |||
| d151d33346 | |||
| c322fe63a3 | |||
|
|
b8ae21eebc | ||
| f1c09f1331 | |||
| d0b46b53dd | |||
| bf7040a56c | |||
|
|
1f066465c7 | ||
|
|
0d64af8235 | ||
| a38e5ef82d | |||
| 291c636d14 | |||
| b7351800d4 | |||
| d95c3af1e3 | |||
| 158ffcd669 | |||
| 3554180422 | |||
| e721eee91d | |||
| 86151de75e | |||
| 6b64a545c7 | |||
| cb0da133a8 | |||
| 24fadf126b | |||
| f92c257424 | |||
| a64a3b308a | |||
| bff62d8465 | |||
| 27fea39faa | |||
| d409d93092 | |||
| d15d9be9ba | |||
| e16d2d4274 | |||
|
|
2711a8101b | ||
| 73571cfcd8 | |||
| deddc858ce | |||
| 850157062f | |||
| b465361e37 | |||
|
|
4ce1560100 | ||
| e3574135f9 | |||
| aba0916b53 | |||
| bcb0ff21d4 | |||
| 5b39e352a1 | |||
| 7cf76fdc9e | |||
| 9a0720f7a5 | |||
| 76d198a166 |
0
.gitignore
vendored
Normal file
@@ -1,4 +0,0 @@
|
|||||||
- soft pwm for fans to respect sunon 40mm fans
|
|
||||||
- https://github.com/MarlinFirmware/Marlin/issues/12360
|
|
||||||
- https://github.com/MarlinFirmware/Marlin/issues/19924
|
|
||||||
- https://www.3d-druck-community.de/showthread.php?tid=23057
|
|
||||||
23
filaments.md
@@ -1,23 +0,0 @@
|
|||||||
# Filaments
|
|
||||||
|
|
||||||
| Make | Material | Color/Code | Dia | Price/Volume | Notes | 3dprintingdb |
|
|
||||||
|--- |--- |--- |--- |--: |--- |--- |
|
|
||||||
| Noulei | PLA | Silk Black / #24 | 1.75mm | 26,99€/1kg | 190°C, better layer bond as other silk filaments from same vendor | N/A |
|
|
||||||
| Noulei | PLA | Silk Blue / #11 | 1.75mm | 26,99€/1kg | 190°C, Shiny tortoise/light blue | N/A |
|
|
||||||
| Noulei | PLA | Silk Silver Blue / #14| 1.75mm | 26,99€/1kg | 190°C, Shiny purple | N/A |
|
|
||||||
| GEEETECH | PLA | Black / 700-001-0426 / Y2005 | 1.75mm | 24,99€/1kg | | N/A |
|
|
||||||
| GEEETECH | PLA | Silk Silver | 1.75mm | 26,99€/1kg | | N/A |
|
|
||||||
| TINMORRY | PETG | White | 1,75mm | 18,88€/1kg | 235°C/75°C, very strong layer bond | [link](https://3dprintingdb.com/filament/928/tinmorry-petg-white) |
|
|
||||||
| DasFilament | PETG | Silber | 1,75mm | 22,37€/850g(refill) | 235°C/75°C, with sparkles | N/A |
|
|
||||||
| DasFilament | PETG | Saphirblau | 1,75mm | 21,41€/800g | 225°C/75°C, needs less temp than others! | [link](https://3dprintingdb.com/filament/662/das-filament-petg-saphirblau) |
|
|
||||||
| DasFilament | PETG | Rubinrot | 1,75mm | 18,88€/850g(refill) | TBD | [link](https://3dprintingdb.com/filament/663/das-filament-petg-rubinrot) |
|
|
||||||
|
|
||||||
## Next Filaments to test out:
|
|
||||||
* Prusa PLA
|
|
||||||
* Galaxy Black
|
|
||||||
* DasFilament PLA
|
|
||||||
* Blue Pearl
|
|
||||||
* DasFilament PETG
|
|
||||||
* [Opalgrün](https://3dprintingdb.com/filament/661/das-filament-petg-opalgrun)
|
|
||||||
* Sturmgrau
|
|
||||||
* Anthrazit V2
|
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
/**
|
||||||
|
* Genera un contenedor para almacenar discos duros.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Electronics/HardDisk.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
* @see https://www.thingiverse.com/thing:3642857
|
||||||
|
*/
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
// Variables personalizables
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
count = 4; // Cantidad de discos duros a almacenar.
|
||||||
|
desktop = false; // Indica si el disco duro es de PC (3.5") o portátil (2.5").
|
||||||
|
notch = true; // Indica si se genera el espacio para sacar el disco con el dedo.
|
||||||
|
padding = 20; // Ancho de la pestaña a usar como separador entre discos.
|
||||||
|
screws = true; // Indica si se dejan los espacios para los tornillos.
|
||||||
|
thickness = 2; // Grosor de las paredes del contenedor.
|
||||||
|
tolerance = 0.9; // Tolerancia a usar en las medidas del disco duro.
|
||||||
|
model = 5; // Tipo de disco duro (altura estándar):
|
||||||
|
// 2.5"
|
||||||
|
// 0: 19.05
|
||||||
|
// 1: 17.00
|
||||||
|
// 2: 15.00
|
||||||
|
// 3: 12.70
|
||||||
|
// 4: 10.50
|
||||||
|
// 5: 9.50
|
||||||
|
// 6: 8.47
|
||||||
|
// 7: 7.00
|
||||||
|
// 8: 5.00
|
||||||
|
// 3.5"
|
||||||
|
// 0: 42.00
|
||||||
|
// 1: 26.10
|
||||||
|
// 2: 17.80
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
use <../Modules/Box/rounded.scad>
|
||||||
|
use <../Modules/Models/SFF/8200.scad>
|
||||||
|
use <../Modules/Models/SFF/8300.scad>
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
// Valores calculados. No tocar sin estar seguro.
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
size = desktop
|
||||||
|
? sff8300(tolerance = tolerance, type = model)
|
||||||
|
: sff8200(tolerance = tolerance, type = model);
|
||||||
|
width = size[desktop ? 3 : 4];
|
||||||
|
height = size[1];
|
||||||
|
length = size[desktop ? 2 : 6];
|
||||||
|
dt = 2 * thickness;
|
||||||
|
d = (height - dt) * 0.7;
|
||||||
|
dy = height + thickness;
|
||||||
|
ty = thickness + count * dy;
|
||||||
|
epsilon = $preview ? 0.01 : 0;
|
||||||
|
$fn = $preview ? 60 : 180;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dibuja el separador de los discos.
|
||||||
|
*
|
||||||
|
* @param {Float} thickness Grosor del separador.
|
||||||
|
* @param {Float} radius Radio a usar para redondear el borde.
|
||||||
|
* @param {Float} width Ancho del espacio a dejar en el separador.
|
||||||
|
* @param {Float} length Longitud del espacio a dejar en el separador.
|
||||||
|
*/
|
||||||
|
module separator(thickness = thickness, radius = 5, width = width - padding, length = length - padding)
|
||||||
|
{
|
||||||
|
_r = radius;
|
||||||
|
_r2 = _r * _r;
|
||||||
|
_w = width / 2;
|
||||||
|
_a1 = _w - _r;
|
||||||
|
_a2 = _w + _r;
|
||||||
|
_b = length - _r;
|
||||||
|
linear_extrude(thickness)
|
||||||
|
{
|
||||||
|
polygon(
|
||||||
|
points = [
|
||||||
|
[ _a1, 0 ],
|
||||||
|
for (_x = [ 0 : 0.1 : _r ]) [ _x + _a1, - sqrt(_r2 - pow(_x, 2)) + _r ],
|
||||||
|
[ _w, _b ],
|
||||||
|
for (_x = [ - _r : 0.1 : 0 ]) [ _a2 + _x, sqrt(_r2 - pow(_x, 2)) + _b ],
|
||||||
|
[ _a2, _b + _r ],
|
||||||
|
[ _a2, _b + 2 * _r ],
|
||||||
|
[ - _a2, _b + 2 * _r ],
|
||||||
|
[ - _a2, _b + _r ],
|
||||||
|
for (_x = [ _r : -0.1 : 0 ]) [ - _a2 + _x, sqrt(_r2 - pow(_x, 2)) + _b ],
|
||||||
|
[ - _w, _b ],
|
||||||
|
for (_x = [ _r : -0.1 : 0 ]) [ - (_x + _a1), - sqrt(_r2 - pow(_x, 2)) + _r ],
|
||||||
|
[ - _a1, 0 ],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
// Inicio del script.
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
difference()
|
||||||
|
{
|
||||||
|
|
||||||
|
boxRounded(width + dt, ty, length + thickness, 1.2, thickness);
|
||||||
|
for (n = [ 0 : count - 1 ])
|
||||||
|
{
|
||||||
|
translate([ - width / 2, n * dy + thickness - ty / 2, - (length + thickness) / 2 + thickness ])
|
||||||
|
{
|
||||||
|
if (desktop)
|
||||||
|
{
|
||||||
|
sff8300Model(length + 5, screws ? dt : 0, slot = 5, tolerance = tolerance, type = model);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sff8200Model(length + 5, screws ? dt : 0, slot = 5, tolerance = tolerance, type = model);
|
||||||
|
}
|
||||||
|
if (notch)
|
||||||
|
{
|
||||||
|
hull()
|
||||||
|
{
|
||||||
|
for (_x = [ d + thickness, width - (d + thickness) ])
|
||||||
|
{
|
||||||
|
translate([ _x, height / 2, - thickness / 2 ])
|
||||||
|
{
|
||||||
|
cylinder(h = 2 * dt, d = d, center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (n)
|
||||||
|
{
|
||||||
|
if (padding)
|
||||||
|
{
|
||||||
|
translate([ width / 2, dt / 4, padding - dt ])
|
||||||
|
{
|
||||||
|
rotate([ 90, 0, 0 ])
|
||||||
|
{
|
||||||
|
separator(dt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate([ width / 2, - epsilon, length / 2 ])
|
||||||
|
{
|
||||||
|
cube([ width, dt + 2 * epsilon, length ], center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([ 0, 0, (length + thickness) / 2 - dt / 2 + 0.01 ])
|
||||||
|
{
|
||||||
|
cube([ width, count * height, dt ], center = true);
|
||||||
|
}
|
||||||
|
rotate([90,0,0]){
|
||||||
|
translate([0,0,-25.8+thickness/2+0.1])cube([100,150,thickness+0.2],center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
hole_dia=4.5;
|
||||||
|
rotate([90,0,0]){
|
||||||
|
translate([7.5,0,-25.8+thickness/2+0.1]){
|
||||||
|
difference(){
|
||||||
|
cube([110,103.35,thickness+0.2],center=true);
|
||||||
|
translate([-50,20,0]){
|
||||||
|
#cylinder(d=hole_dia,h=10,center=true);
|
||||||
|
translate([0,-64.45,0])#cylinder(d=hole_dia,h=10,center=true);
|
||||||
|
translate([83.5,20,0])#cylinder(d=hole_dia,h=10,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
33
openscad/foreign/modular multi-hdd case/Functions/is.scad
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
* Diversas funciones para detectar el tipo de datos de un valor.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Functions/is.scad
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Verifica si el valor es un array
|
||||||
|
*
|
||||||
|
* @param value Valor a verificar.
|
||||||
|
*
|
||||||
|
* @return `true` si el valor es un array.
|
||||||
|
*/
|
||||||
|
function isArray(x) = len(x) != undef && !isString(x);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifica si el valor es un booleano
|
||||||
|
*
|
||||||
|
* @param value Valor a verificar.
|
||||||
|
*
|
||||||
|
* @return `true` si el valor es un booleano.
|
||||||
|
*/
|
||||||
|
function isBool(x) = !isString(x) && (str(x) == "true" || str(x) == "false");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifica si el valor es un texto
|
||||||
|
*
|
||||||
|
* @param value Valor a verificar.
|
||||||
|
*
|
||||||
|
* @return `true` si el valor es un texto.
|
||||||
|
*/
|
||||||
|
function isString(x) = x != undef && len(x) != undef && len(str(x,x)) == len(x) * 2;
|
||||||
137
openscad/foreign/modular multi-hdd case/Modules/Box/rounded.scad
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
/**
|
||||||
|
* Módulos para dibujar cajas con bordes redondeados.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Modules/Box/rounded.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
*/
|
||||||
|
//----------------------------------------------------------
|
||||||
|
use <../../Functions/is.scad>
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Genera las coordenadas para dibujar un rectángulo con las esquinas redondeadas.
|
||||||
|
* Cada esquina puede tener un radio diferente.
|
||||||
|
*
|
||||||
|
* @param {Float} width Ancho del rectángulo.
|
||||||
|
* @param {Float} height Alto del rectángulo.
|
||||||
|
* @param {Float[]} radius Radios a usar para redondear cada esquina.
|
||||||
|
*/
|
||||||
|
function boxRoundedRect(width, height, radius = [ 1, 1, 1, 1 ]) = let(
|
||||||
|
_r = radius[0] == undef
|
||||||
|
? [ radius, radius, radius, radius ]
|
||||||
|
: radius
|
||||||
|
)
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[ 0, height - _r[0] ],
|
||||||
|
[ _r[0], height - _r[0] ],
|
||||||
|
[ _r[0], height ],
|
||||||
|
[ width - _r[1], height ],
|
||||||
|
[ width - _r[1], height - _r[1] ],
|
||||||
|
[ width , height - _r[1] ],
|
||||||
|
[ width , _r[2] ],
|
||||||
|
[ width - _r[2], _r[2] ],
|
||||||
|
[ width - _r[2], 0 ],
|
||||||
|
[ _r[3], 0 ],
|
||||||
|
[ _r[3], _r[3] ],
|
||||||
|
[ 0, _r[3] ]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ _r[0], height - _r[0] ],
|
||||||
|
[ width - _r[1], height - _r[1] ],
|
||||||
|
[ width - _r[2], _r[2] ],
|
||||||
|
[ _r[3], _r[3] ]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Dibuja un bloque con los bordes XY redondeados.
|
||||||
|
*
|
||||||
|
* @param {Float} width Ancho del bloque (eje X).
|
||||||
|
* @param {Float} height Largo del bloque (eje Y).
|
||||||
|
* @param {Float} length Alto del bloque (eje Z).
|
||||||
|
* @param {Float|Float[]} radius Radios del borde de cada esquina.
|
||||||
|
*/
|
||||||
|
module boxRounded(width, height, length, radius = [ 1, 1, 1, 1 ])
|
||||||
|
{
|
||||||
|
if (radius)
|
||||||
|
{
|
||||||
|
translate([ - width / 2, - height / 2, - length / 2 ])
|
||||||
|
{
|
||||||
|
linear_extrude(length)
|
||||||
|
{
|
||||||
|
boxRounded2d(width, height, radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cube([ width, height, length ], center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Dibuja un bloque con los bordes XY redondeados.
|
||||||
|
*
|
||||||
|
* @param {Float} width Ancho del bloque (eje X).
|
||||||
|
* @param {Float} height Largo del bloque (eje Y).
|
||||||
|
* @param {Float|Float[]} radius Radios del borde de cada esquina.
|
||||||
|
*/
|
||||||
|
module boxRounded2d(width, height, radius = [ 1, 1, 1, 1 ])
|
||||||
|
{
|
||||||
|
// Si se pasa un número, lo convertimos a un array.
|
||||||
|
_radius = isArray(radius)
|
||||||
|
? radius
|
||||||
|
: [ radius, radius, radius, radius ];
|
||||||
|
_data = boxRoundedRect(width, height, _radius);
|
||||||
|
polygon(points = _data[0]);
|
||||||
|
for (_index = [ 0 : 3 ])
|
||||||
|
{
|
||||||
|
if (_radius[_index] > 0)
|
||||||
|
{
|
||||||
|
translate(_data[1][_index])
|
||||||
|
{
|
||||||
|
circle(r = _radius[_index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Dibuja un bloque con todos los bordes redondeados.
|
||||||
|
*
|
||||||
|
* @param width Ancho del bloque (eje X).
|
||||||
|
* @param height Largo del bloque (eje Y).
|
||||||
|
* @param length Alto del bloque (eje Z).
|
||||||
|
* @param radius Radio del borde.
|
||||||
|
*/
|
||||||
|
module boxRounded3d(width, height, length, radius = 1)
|
||||||
|
{
|
||||||
|
if (radius > 0)
|
||||||
|
{
|
||||||
|
hull()
|
||||||
|
{
|
||||||
|
for (z = [ -1, 1 ])
|
||||||
|
{
|
||||||
|
for (y = [ -1, 1 ])
|
||||||
|
{
|
||||||
|
for (x = [ -1, 1 ])
|
||||||
|
{
|
||||||
|
translate([
|
||||||
|
x * (width / 2 - radius),
|
||||||
|
y * (height / 2 - radius),
|
||||||
|
z * (length / 2 - radius)
|
||||||
|
])
|
||||||
|
{
|
||||||
|
sphere(r = radius, center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cube([ width, height, length ], center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* Genera una bandeja para insertar un modelo.
|
||||||
|
*
|
||||||
|
* @author Joaquín Fernández
|
||||||
|
* @url https://gitlab.com/joaquinfq/openscad/blob/master/Modules/Box/tray.scad
|
||||||
|
* @license CC-BY-NC-4.0
|
||||||
|
*/
|
||||||
|
//----------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* Permite dibujar una bandeja y decidir cuáles caras eliminar.
|
||||||
|
*
|
||||||
|
* Los lados de la bandeja se enumeran de la siguiente manera (con respecto al plano XZ):
|
||||||
|
*
|
||||||
|
* - a : Parte trasera.
|
||||||
|
* - b : Parte inferior.
|
||||||
|
* - l : Parte izquierda.
|
||||||
|
* - r : Parte derecha.
|
||||||
|
* - t : Parte superior.
|
||||||
|
*
|
||||||
|
* @param {Float} width Anchura de la bandeja a generar (eje X).
|
||||||
|
* @param {Float} height Altura de la bandeja a generar (eje Y).
|
||||||
|
* @param {Float} length Longitud de la bandeja a generar (eje Z).
|
||||||
|
* @param {Float} thickness Grosor de las paredes de la bandeja.
|
||||||
|
* @param {Boolean} sides Lados de la bandeja a omitir.
|
||||||
|
*/
|
||||||
|
module boxTray(width, height, length, thickness = 5, sides = [])
|
||||||
|
{
|
||||||
|
_t = 2 * thickness;
|
||||||
|
difference()
|
||||||
|
{
|
||||||
|
cube([ width + _t, height + _t, length + thickness ]);
|
||||||
|
translate([ thickness, thickness, 0 ])
|
||||||
|
{
|
||||||
|
if ($children)
|
||||||
|
{
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cube([ width, height, length ]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (_s = sides)
|
||||||
|
{
|
||||||
|
if (_s == "a")
|
||||||
|
{
|
||||||
|
translate([ 0, 0, length ])
|
||||||
|
{
|
||||||
|
cube([ width + _t, height + _t, _t ]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_s == "b")
|
||||||
|
{
|
||||||
|
cube([ width + _t, thickness, length + _t ]);
|
||||||
|
}
|
||||||
|
else if (_s == "l")
|
||||||
|
{
|
||||||
|
translate([ width + thickness, 0, 0 ])
|
||||||
|
{
|
||||||
|
cube([ thickness, height + _t, length + _t ]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_s == "r")
|
||||||
|
{
|
||||||
|
cube([ thickness, height + _t, length + _t ]);
|
||||||
|
}
|
||||||
|
else if (_s == "t")
|
||||||
|
{
|
||||||
|
translate([ 0, height + thickness, 0 ])
|
||||||
|
{
|
||||||
|
cube([ width + _t, thickness, length + _t ]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
openscad/foreign/parametric-helix_haystack-mod/haystack_logo.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
width="501.33334"
|
||||||
|
height="178.66667"
|
||||||
|
viewBox="0 0 501.33334 178.66667"
|
||||||
|
sodipodi:docname="haystack_logo_final.svg"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs1" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:zoom="3.2546641"
|
||||||
|
inkscape:cx="109.84236"
|
||||||
|
inkscape:cy="69.899687"
|
||||||
|
inkscape:window-width="5120"
|
||||||
|
inkscape:window-height="1372"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g1">
|
||||||
|
<sodipodi:guide
|
||||||
|
position="154.87316,107.74798"
|
||||||
|
orientation="0,-1"
|
||||||
|
id="guide1"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
<sodipodi:guide
|
||||||
|
position="408.0677,50.320605"
|
||||||
|
orientation="0,-1"
|
||||||
|
id="guide3"
|
||||||
|
inkscape:locked="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="Image"
|
||||||
|
id="g1">
|
||||||
|
<path
|
||||||
|
style="fill:#000000"
|
||||||
|
d="m 125.31473,153.15745 c 0.32361,-24.84341 -1.74527,-36.06144 -15.89944,-59.045268 l -8.85996,-14.386967 7.07083,-9.514556 11.98249,18.707475 c 7.74992,12.099446 10.95559,19.597976 13.01655,26.841556 0,0 2.84053,10.88974 3.5787,16.45382 0.94049,7.08905 1.0643,21.42708 1.0643,21.42708 l -0.23925,21.48138 -12,-0.0257 z m 82.26852,-25.32179 c -6.79765,-2.22596 -13.88764,-8.07626 -13.88764,-8.07626 -0.0381,-0.0342 7.06667,-8.68224 7.06667,-8.68224 l 3.97035,2.82714 c 4.76565,3.39344 14.1229,5.58756 17.8505,4.92645 7.75546,-1.37545 11.77629,-9.95953 -6.04897,-13.2625 -8.90014,-1.64917 -18.51381,-7.201061 -20.27411,-13.076441 -1.91807,-6.401928 -0.98605,-10.686611 3.47881,-15.992791 4.2928,-5.101702 11.3218,-5.722837 18.4607,-5.622832 5.37668,0.07532 18.16272,6.300787 18.16272,6.300787 -1.16603,2.619741 -5.57525,9.875482 -5.52415,9.753794 l -5.18481,-2.64509 c -5.38579,-2.747624 -11.35893,-3.054762 -14.85768,-2.011576 -3.63087,1.08258 -4.75459,4.871973 -3.5225,7.684615 1.37813,3.146015 7.67926,3.591052 14.93801,6.045572 6.82697,2.308517 13.24941,4.392612 16.42394,10.862102 1.23243,2.51163 0.96349,9.02362 -0.96472,12.17885 -5.56569,9.10741 -17.21942,13.00406 -30.08712,8.79042 z m 166.0103,-21.46368 c -1.48309,-5.04618 -0.96418,-10.512542 0.0329,-13.776365 2.71295,-8.880641 8.85017,-17.298301 16.66143,-19.951358 10.42808,-3.541848 21.40674,-2.539274 30.4917,2.764525 l 4.96483,2.898471 -8.1308,9.863975 -4.81172,-3.265321 c -11.86273,-8.050262 -27.90952,0.261204 -26.96689,14.611162 1.02816,15.652231 18.50059,21.256421 27.6218,13.634681 l 3.94927,-3.30003 8.74709,8.96434 -3.70726,3.26268 c -7.06847,6.2208 -20.648,8.33008 -30.89871,4.70033 -5.42498,-1.92097 -14.3365,-8.0999 -17.95364,-20.40709 z M 1.6956149,99.640587 V 70.97392 h 6.666667 6.6666671 V 82.307253 93.640587 H 26.362282 37.695616 V 82.307253 70.97392 h 6.666667 6.666666 V 99.640587 128.30725 H 44.362283 37.695616 V 116.97392 105.64059 H 26.362282 15.028949 v 11.33333 11.33333 H 8.3622819 1.6956149 Z M 63.744232,123.30725 C 66.59586,106.25446 72.803233,91.979161 86.155074,71.7683 99.916134,50.938014 102.37972,46.387822 106.4375,34.307252 c 2.60391,-7.752186 3.60534,-13.490071 3.66513,-21.000001 l 0.0823,-10.3333329 h 5.75535 5.75536 V 13.360453 c 0,19.163686 -9.07772,38.383291 -27.068015,65.884254 -5.82228,8.900256 -7.72078,14.126075 -8.14179,14.284256 0,0 10.279841,0.111624 14.992315,0.111624 l 6.36555,11.794273 c -9.122675,0.28357 -18.252151,0.20573 -27.378076,0.20573 l -2.051657,6.90866 c -1.128409,3.79977 -2.231702,9.42558 -2.377543,10.69079 l -0.584097,5.06721 H 62.908115 Z m 87.284718,-5.92984 V 106.44756 L 140.36228,89.560489 C 134.49561,80.272597 129.6413,70.954628 129.6413,70.954628 c 3.02508,0.01727 3.48035,0.01929 14.21082,0.01929 l 6.52282,11.287817 c 3.58755,6.2083 6.78856,11.022071 7.11337,10.697268 4.54102,-6.974921 8.67985,-14.884864 12.95875,-22.024512 0,0 0.0136,-0.09172 14.09563,0.02395 -3.02169,6.848287 -7.33158,12.932566 -11.34972,19.234764 l -10.16402,15.885945 v 11.11405 11.11405 h -6 -6 z M 268.36228,105.64059 V 82.97392 h -8.66666 -8.66667 v -6 -6 h 24 24 v 6 6 h -8.66667 -8.66666 v 22.66667 22.66666 h -6.66667 -6.66667 z m 34.44941,22.64966 c 0,0 24.93638,-57.405468 24.88185,-57.405468 h 10.77302 l 25.05122,57.384868 -13.60161,0.0376 -4.40063,-11.8202 -25.49513,0.10667 -3.88035,11.71353 z m 30.04155,-42.965528 c -2.46505,6.333771 -4.90586,12.677133 -7.44293,18.982528 h 14.91306 c -2.51572,-6.317459 -5.04821,-12.628324 -7.47013,-18.982528 z M 443.02895,70.97392 h 12 l 0.1282,24.666667 23.20512,-24.68097 15.9444,0.0144 -22.50614,25.526067 c -0.008,-0.0046 6.09017,8.557266 12.1859,16.807266 l 11.08313,15 h -15.60774 l -17.09955,-23.8 -7.33334,6.96558 v 16.83432 h -12 z M 85.424934,47.905541 C 81.606985,36.351334 82.045145,35.705457 81.718464,29.562339 l -0.0228,-5.255087 h 6 6 l 0.0158,3.666666 c 0.009,2.016667 0.87911,6.910332 1.93423,10.874812 l 1.9184,7.208145 -8.445544,11.929437 -1.62963,-3.83456 z"
|
||||||
|
id="path1"
|
||||||
|
sodipodi:nodetypes="ssccssacccssccssssssccsssssssssssccsssccsssscccccccccccccccccccccccscsccccssscccssccsccsccssccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccsc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.6 KiB |
@@ -0,0 +1,97 @@
|
|||||||
|
// number of fragments | a higher fragment count will result in slower render times '20' is sufficient.
|
||||||
|
fn = 30; // [0:100]
|
||||||
|
// "sugar phosphate backbones" | part of helix_base module | if adjusted also consider adjusting 'post_distance_apart' or 'center_bridge_length'.
|
||||||
|
post_radius = 3.5; // [0:500]
|
||||||
|
post_hole_radius = 1.25; // [0:500]
|
||||||
|
// part of helix_base module | if adjusted also consider adjusting 'center_bridge_length'.
|
||||||
|
post_distance_apart = 15; // [0:500]
|
||||||
|
// "base pairs" length between "sugar phosphate backbones" | part of helix_base module | if adjusted also consider adjusting 'post_distance_apart'.
|
||||||
|
center_bridge_length = 24; // [0:500]
|
||||||
|
// part of helix_base module | thickness of "basepairs" in relevence to the the Y-axis of 'helix_base' before "linear_extrude" is implemented. further explanation is below.
|
||||||
|
center_bridge_width = .8; // [0:0.1:500]
|
||||||
|
// 'helix_height' adjusts the height of the linear_extruded 'helix_base' module | 'helix_height, helix_twists, helix_twists' all work hand in hand and should be experimented to fully understand the linear_extrude's nature.
|
||||||
|
helix_height = 120; // [0:500]
|
||||||
|
// 'helix_twists' adjusts the degree of twist in the linear_extruded 'helix_base' module.
|
||||||
|
helix_twists = 400; // [0:3600]
|
||||||
|
// 'helix_slices' adjusts the number of slices used in the linear_extruded 'helix_base' module | more slices = higher resolution and longer render times, less slices = the contrary | 200 is sufficient.
|
||||||
|
helix_slices = 600; // [0:500]
|
||||||
|
// this is fun try changing from 0-3 to scale 'helix_base' as it reaches its specified height in 'helix_height' | '1' = 1to1 scale, 0 = 1to0, 2 = 1to2 scale and so on in sequential order.
|
||||||
|
helix_scale = 1; // [0:10]
|
||||||
|
// the radius of the differenced circle that creates the spaces between each "base pair" | if adjusted you may also want to adjust 'center_bridge_length' and 'post_distance_apart'.
|
||||||
|
spacer_radius = 11.6; // [0:500]
|
||||||
|
// the height of the differenced circle changing this will result in a visual thickness change, in the Z-axis, of each "basepair".
|
||||||
|
spacer_height = 4; // [0:550]
|
||||||
|
// the point in the Z-axis at which the spacers will start appearing | 'spacer_start, spacer_increment_distance, and spacer_increment_height all work together to create the "base pairs/ bridges" that appear between each "sugar phosphate backbone/post".
|
||||||
|
spacer_start = 0; // [0:550]
|
||||||
|
// the distance between each spacer changing this will result in a visual thickness change, in the Z-axis, of each "basepair".
|
||||||
|
spacer_increment_distance = 6; // [0:500]
|
||||||
|
// the height to which the spacers ascend to and then stop being produced.
|
||||||
|
spacer_increment_height = helix_height; // [0:500]
|
||||||
|
// the radius of the circle where the standing platform is located at the base of the helix.
|
||||||
|
base_platform_radius = 30; // [0:500]
|
||||||
|
base_platform_inner_radius = 25;
|
||||||
|
// the height of the above said platform.
|
||||||
|
base_platform_height = 12; // [0:100]
|
||||||
|
// the controls the number of sides the platform has, 0 defaults to 'fn'. 3, 4, 5, 6 ...
|
||||||
|
base_platform_shape = 6; // [0:50]
|
||||||
|
|
||||||
|
usb_mount_hole_spacing = 15; // 19-(2*2) ?
|
||||||
|
usb_mount_hole_dia = 2.0; // ?
|
||||||
|
usb_height = 4.1;
|
||||||
|
usb_rectangular_width = 11+1; //presumeably this is 19-4-4 = 11 plus one for wiggle room. needs testing.
|
||||||
|
|
||||||
|
module helix_basic(){
|
||||||
|
translate([-post_distance_apart,0,0]){
|
||||||
|
difference(){
|
||||||
|
circle(post_radius,$fn = fn);
|
||||||
|
circle(post_hole_radius,$fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([post_distance_apart,0,0]){
|
||||||
|
difference(){
|
||||||
|
circle(post_radius, $fn = fn);
|
||||||
|
circle(post_hole_radius, $fn = fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
square([center_bridge_length,center_bridge_width],center = true);
|
||||||
|
}
|
||||||
|
// the basic 2D shape that the helix is extruded upon.
|
||||||
|
union(){
|
||||||
|
difference(){
|
||||||
|
linear_extrude(height = helix_height, twist = helix_twists, slices = helix_slices, scale = helix_scale){
|
||||||
|
helix_basic();
|
||||||
|
}
|
||||||
|
for (a = [ spacer_start : spacer_increment_distance : spacer_increment_height])
|
||||||
|
translate([0, 0, a]) {
|
||||||
|
linear_extrude(height = spacer_height, center = true){
|
||||||
|
circle(spacer_radius, $fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rotate([0,0,helix_twists+90+3*post_radius-0.5]){
|
||||||
|
translate([post_distance_apart,0,helix_height])scale([1,1,0.25])sphere(r = post_radius, $fn = fn);
|
||||||
|
translate([-post_distance_apart,0,helix_height])scale([1,1,0.25])sphere(r = post_radius, $fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([0,0,-base_platform_height/2])difference(){
|
||||||
|
hull(){ // base
|
||||||
|
translate([0,0,base_platform_height/3])cylinder(r = base_platform_radius-(base_platform_height/2), h = base_platform_height/3, center = true, $fn = base_platform_shape);
|
||||||
|
translate([0,0,-base_platform_height/4])cylinder(r = base_platform_radius, h = base_platform_height/2, center = true, $fn = base_platform_shape);
|
||||||
|
}
|
||||||
|
translate([post_distance_apart,0,(base_platform_height/2)-(base_platform_height/4)])cylinder(r1 = post_hole_radius*2, r2 = post_hole_radius, h = base_platform_height/2+0.2, center = true, $fn = fn);
|
||||||
|
translate([-post_distance_apart,0,(base_platform_height/2)-(base_platform_height/4)])cylinder(r1 = post_hole_radius*2, r2 = post_hole_radius, h = base_platform_height/2+0.2, center = true, $fn = fn);
|
||||||
|
translate([0,0,-base_platform_height/2+0.01])cylinder(r = base_platform_inner_radius, h = base_platform_height, center = true, $fn = base_platform_shape);
|
||||||
|
translate([0,0,-base_platform_height/2+1-0.01])cylinder(r = base_platform_inner_radius+2, h = 2, center = true, $fn = base_platform_shape);
|
||||||
|
// todo: add cutout through base for filament-leds, because they don't reach to the bottom!
|
||||||
|
// usb-module:
|
||||||
|
translate([0,base_platform_radius*0.75,- base_platform_height/6])rotate([90,0,0])cube([usb_rectangular_width,usb_height,15],center=true); //cylinder(d = usb_height, h = 10, center = true, $fn = fn);
|
||||||
|
translate([usb_mount_hole_spacing/2,base_platform_radius*0.75,- base_platform_height/6])rotate([90,0,0])cylinder(d = usb_mount_hole_dia, h = 10, center = true, $fn = base_platform_shape);
|
||||||
|
translate([-usb_mount_hole_spacing/2,base_platform_radius*0.75,- base_platform_height/6])rotate([90,0,0])cylinder(d = usb_mount_hole_dia, h = 10, center = true, $fn = base_platform_shape);
|
||||||
|
}
|
||||||
|
// baseplate with pry-hole:
|
||||||
|
translate([0,0,-15])difference(){
|
||||||
|
translate([0,0,(-base_platform_height/2+1-0.01)])cylinder(r = base_platform_inner_radius+2, h = 2-0.2, center = true, $fn = base_platform_shape);
|
||||||
|
for (x = [ base_platform_radius*0.75 , -base_platform_radius*0.75 ])translate([0,x,(-base_platform_height/2+1-0.01)])cube([10,2,2+0.01], center=true);
|
||||||
|
}
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
// number of fragments | a higher fragment count will result in slower render times '20' is sufficient.
|
||||||
|
fn = 30; // [0:100]
|
||||||
|
// "sugar phosphate backbones" | part of helix_base module | if adjusted also consider adjusting 'post_distance_apart' or 'center_bridge_length'.
|
||||||
|
post_radius = 5; // [0:500]
|
||||||
|
post_hole_radius = 1.75; // [0:500]
|
||||||
|
// part of helix_base module | if adjusted also consider adjusting 'center_bridge_length'.
|
||||||
|
post_distance_apart = 25; // [0:500]
|
||||||
|
// "base pairs" length between "sugar phosphate backbones" | part of helix_base module | if adjusted also consider adjusting 'post_distance_apart'.
|
||||||
|
center_bridge_length = 55; // [0:500]
|
||||||
|
// part of helix_base module | thickness of "basepairs" in relevence to the the Y-axis of 'helix_base' before "linear_extrude" is implemented. further explanation is below.
|
||||||
|
center_bridge_width = 1.6; // [0:0.1:500]
|
||||||
|
// 'helix_height' adjusts the height of the linear_extruded 'helix_base' module | 'helix_height, helix_twists, helix_twists' all work hand in hand and should be experimented to fully understand the linear_extrude's nature.
|
||||||
|
helix_height = 165; // [0:500]
|
||||||
|
// 'helix_twists' adjusts the degree of twist in the linear_extruded 'helix_base' module.
|
||||||
|
helix_twists = 400; // [0:3600]
|
||||||
|
// 'helix_slices' adjusts the number of slices used in the linear_extruded 'helix_base' module | more slices = higher resolution and longer render times, less slices = the contrary | 200 is sufficient.
|
||||||
|
helix_slices = 600; // [0:500]
|
||||||
|
// this is fun try changing from 0-3 to scale 'helix_base' as it reaches its specified height in 'helix_height' | '1' = 1to1 scale, 0 = 1to0, 2 = 1to2 scale and so on in sequential order.
|
||||||
|
helix_scale = 1; // [0:10]
|
||||||
|
// the radius of the differenced circle that creates the spaces between each "base pair" | if adjusted you may also want to adjust 'center_bridge_length' and 'post_distance_apart'.
|
||||||
|
spacer_radius = 20.25; // [0:500]
|
||||||
|
// the height of the differenced circle changing this will result in a visual thickness change, in the Z-axis, of each "basepair".
|
||||||
|
spacer_height = 6; // [0:550]
|
||||||
|
// the point in the Z-axis at which the spacers will start appearing | 'spacer_start, spacer_increment_distance, and spacer_increment_height all work together to create the "base pairs/ bridges" that appear between each "sugar phosphate backbone/post".
|
||||||
|
spacer_start = 0; // [0:550]
|
||||||
|
// the distance between each spacer changing this will result in a visual thickness change, in the Z-axis, of each "basepair".
|
||||||
|
spacer_increment_distance = 9; // [0:500]
|
||||||
|
// the height to which the spacers ascend to and then stop being produced.
|
||||||
|
spacer_increment_height = helix_height; // [0:500]
|
||||||
|
// the radius of the circle where the standing platform is located at the base of the helix.
|
||||||
|
base_platform_radius = 52.5; // [0:500]
|
||||||
|
base_platform_inner_radius = 47.5;
|
||||||
|
// the height of the above said platform.
|
||||||
|
base_platform_height = 20; // [0:100]
|
||||||
|
// the controls the number of sides the platform has, 0 defaults to 'fn'. 3, 4, 5, 6 ...
|
||||||
|
base_platform_shape = 6; // [0:50]
|
||||||
|
|
||||||
|
usb_mount_hole_spacing = 15; // 19-(2*2) ?
|
||||||
|
usb_mount_hole_dia = 2.0; // ?
|
||||||
|
usb_height = 4.1;
|
||||||
|
usb_rectangular_width = 11+1; //presumeably this is 19-4-4 = 11 plus one for wiggle room. needs testing.
|
||||||
|
text=true;
|
||||||
|
textdepth=2;
|
||||||
|
usb=false;
|
||||||
|
|
||||||
|
module logo(path,scale){
|
||||||
|
translate([0,0,0]){
|
||||||
|
scale([scale,scale,1]){
|
||||||
|
linear_extrude(textdepth){
|
||||||
|
import(path,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module helix_basic(){
|
||||||
|
translate([-post_distance_apart,0,0]){
|
||||||
|
difference(){
|
||||||
|
circle(post_radius,$fn = fn);
|
||||||
|
if(usb){
|
||||||
|
circle(post_hole_radius,$fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([post_distance_apart,0,0]){
|
||||||
|
difference(){
|
||||||
|
circle(post_radius, $fn = fn);
|
||||||
|
if(usb){
|
||||||
|
circle(post_hole_radius, $fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
square([center_bridge_length,center_bridge_width],center = true);
|
||||||
|
}
|
||||||
|
// the basic 2D shape that the helix is extruded upon.
|
||||||
|
union(){
|
||||||
|
difference(){
|
||||||
|
linear_extrude(height = helix_height, twist = helix_twists, slices = helix_slices, scale = helix_scale){
|
||||||
|
helix_basic();
|
||||||
|
}
|
||||||
|
for (a = [ spacer_start : spacer_increment_distance : spacer_increment_height])
|
||||||
|
translate([0, 0, a]) {
|
||||||
|
linear_extrude(height = spacer_height, center = true){
|
||||||
|
circle(spacer_radius, $fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// elipsoids on top to cover up the led-holes:
|
||||||
|
rotate([0,0,helix_twists+90+2.1*post_radius-0.5]){
|
||||||
|
translate([post_distance_apart,0,helix_height])scale([1,1,0.25])sphere(r = post_radius, $fn = fn);
|
||||||
|
translate([-post_distance_apart,0,helix_height])scale([1,1,0.25])sphere(r = post_radius, $fn = fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([0,0,-base_platform_height/2])difference(){
|
||||||
|
hull(){ // base
|
||||||
|
translate([0,0,base_platform_height/3])cylinder(r = base_platform_radius-(base_platform_height/2), h = base_platform_height/3, center = true, $fn = base_platform_shape);
|
||||||
|
translate([0,0,-base_platform_height/4])cylinder(r = base_platform_radius, h = base_platform_height/2, center = true, $fn = base_platform_shape);
|
||||||
|
}
|
||||||
|
if(usb){
|
||||||
|
translate([post_distance_apart,0,(base_platform_height/2)-(base_platform_height/4)])cylinder(r1 = post_hole_radius*2, r2 = post_hole_radius, h = base_platform_height/2+0.2, center = true, $fn = fn);
|
||||||
|
translate([-post_distance_apart,0,(base_platform_height/2)-(base_platform_height/4)])cylinder(r1 = post_hole_radius*2, r2 = post_hole_radius, h = base_platform_height/2+0.2, center = true, $fn = fn);
|
||||||
|
|
||||||
|
//bottom cutout narrow:
|
||||||
|
translate([0,0,-base_platform_height/2+0.01])cylinder(r = base_platform_inner_radius, h = base_platform_height, center = true, $fn = base_platform_shape);
|
||||||
|
//bottom cutout wide:
|
||||||
|
translate([0,0,-base_platform_height/2+1-0.01])cylinder(r = base_platform_inner_radius+2, h = 2, center = true, $fn = base_platform_shape);
|
||||||
|
// only draw usb-module-cutouts if desired:
|
||||||
|
|
||||||
|
// usb-module:
|
||||||
|
translate([0,base_platform_radius*0.75,- base_platform_height/6])rotate([90,0,0])cube([usb_rectangular_width,usb_height,15],center=true); //cylinder(d = usb_height, h = 10, center = true, $fn = fn);
|
||||||
|
// usb-screw-holes:
|
||||||
|
translate([usb_mount_hole_spacing/2,base_platform_radius*0.75,- base_platform_height/6])rotate([90,0,0])cylinder(d = usb_mount_hole_dia, h = 15, center = true, $fn = base_platform_shape);
|
||||||
|
translate([-usb_mount_hole_spacing/2,base_platform_radius*0.75,- base_platform_height/6])rotate([90,0,0])cylinder(d = usb_mount_hole_dia, h = 15, center = true, $fn = base_platform_shape);
|
||||||
|
}
|
||||||
|
if(text){
|
||||||
|
rotate([49,0,0]){
|
||||||
|
translate([0,-23.25,32.35]){
|
||||||
|
#logo("haystack_logo_final.svg",0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// baseplate with pry-hole:
|
||||||
|
if(usb){
|
||||||
|
translate([0,0,-15]){
|
||||||
|
difference(){
|
||||||
|
translate([0,0,(-base_platform_height/2+1-0.01)])cylinder(r = base_platform_inner_radius+2, h = 2-0.2, center = true, $fn = base_platform_shape);
|
||||||
|
for (x = [ base_platform_radius*0.80 , -base_platform_radius*0.80 ])translate([0,x,(-base_platform_height/2+1-0.01)])cube([10,2,2+0.01], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,29 +1,25 @@
|
|||||||
// some basic 2d-to-3d-extrusion of Vectorfiles
|
// some basic 2d-to-3d-extrusion of Vectorfiles
|
||||||
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
|
|
||||||
// -> https://www.thingiverse.com/zeus
|
|
||||||
// -> https://git.kostianix.de/zeus/3d-stuff
|
|
||||||
// 2021-02-18
|
|
||||||
// ###############
|
// ###############
|
||||||
h=4; //height
|
h=3; //height
|
||||||
w=25; //width
|
w=20; //width
|
||||||
l=90; //lenght
|
l=75; //lenght
|
||||||
hd=10; //hole_dia
|
hd=w/2.25; //hole_dia
|
||||||
emd=1; // embossing depth
|
emd=1.25; // embossing depth
|
||||||
|
q=0.01; // minimal value to avoid visual glitches
|
||||||
$fn=100; //resolution
|
$fn=100; //resolution
|
||||||
// ###############
|
// ###############
|
||||||
difference(){
|
difference(){
|
||||||
translate([0,0,h/2*1]){
|
translate([0,0,h/2]){
|
||||||
hull(){
|
hull(){
|
||||||
translate([+(l-w)/2,0,0])cylinder(h=h,r=w/2,center=true,$fn=100);
|
for(x=[(l-w)/2,-(l-w)/2]){
|
||||||
translate([-(l-w)/2,0,0])cylinder(h=h,r=w/2,center=true,$fn=100);
|
translate([x,0,0])cylinder(h=h,r=w/2,center=true); // body
|
||||||
}
|
}}}
|
||||||
|
translate([-(l/2)+(w/3),0,h/2]){
|
||||||
|
cylinder(h=h+q,r=hd/2,center=true); // keychain-hole
|
||||||
}
|
}
|
||||||
translate([w/4,0,h-emd]){
|
translate([w/4,0,h-emd]){
|
||||||
scale([0.3,0.3,1]){
|
scale([0.4,0.4,1]){
|
||||||
linear_extrude(height = h/2*1){
|
linear_extrude(height = emd+q){
|
||||||
import("src/gonicus_clean.svg",center=true);
|
import("src/GONICUS-Logo_2022_logo-only-new.svg",center=true); // logo
|
||||||
}
|
}}}
|
||||||
}
|
|
||||||
}
|
|
||||||
translate([-(l/2)+(w/3),0,h/2])cylinder(h=h+0.1,r=hd/2,center=true);
|
|
||||||
}
|
}
|
||||||
BIN
openscad/own/2d-to-3d-scad/gonicus/img/gonicus_2022.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,158 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="143.12636mm"
|
||||||
|
height="25.433369mm"
|
||||||
|
viewBox="0 0 143.12636 25.433369"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
sodipodi:docname="GONICUS-Logo_2022_logo-only-new.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:zoom="1.036062"
|
||||||
|
inkscape:cx="377.87314"
|
||||||
|
inkscape:cy="63.220154"
|
||||||
|
inkscape:window-width="5120"
|
||||||
|
inkscape:window-height="1372"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs1">
|
||||||
|
<clipPath
|
||||||
|
id="SVGID_2_">
|
||||||
|
<rect
|
||||||
|
id="use9"
|
||||||
|
x="148"
|
||||||
|
y="229.71001"
|
||||||
|
width="540.95001"
|
||||||
|
height="136.57001" />
|
||||||
|
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
id="clipPath1">
|
||||||
|
<rect
|
||||||
|
id="use1"
|
||||||
|
x="148"
|
||||||
|
y="229.71001"
|
||||||
|
width="540.95001"
|
||||||
|
height="136.57001" />
|
||||||
|
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
id="clipPath2">
|
||||||
|
<rect
|
||||||
|
id="use2"
|
||||||
|
x="148"
|
||||||
|
y="229.71001"
|
||||||
|
width="540.95001"
|
||||||
|
height="136.57001" />
|
||||||
|
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
id="clipPath3">
|
||||||
|
<rect
|
||||||
|
id="use3"
|
||||||
|
x="148"
|
||||||
|
y="229.71001"
|
||||||
|
width="540.95001"
|
||||||
|
height="136.57001" />
|
||||||
|
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
id="clipPath4">
|
||||||
|
<rect
|
||||||
|
id="use4"
|
||||||
|
x="148"
|
||||||
|
y="229.71001"
|
||||||
|
width="540.95001"
|
||||||
|
height="136.57001" />
|
||||||
|
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
id="clipPath5">
|
||||||
|
<rect
|
||||||
|
id="use5"
|
||||||
|
x="148"
|
||||||
|
y="229.71001"
|
||||||
|
width="540.95001"
|
||||||
|
height="136.57001" />
|
||||||
|
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-5.0263979,-131.7625)">
|
||||||
|
<g
|
||||||
|
id="g2-1"
|
||||||
|
transform="matrix(0.26458333,0,0,0.26458333,4.9386488,131.58535)"
|
||||||
|
inkscape:highlight-color="#aaaaaa">
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 415.1,265.77 -10.5,58.68 h 26.88 l 10.5,-58.68 z m 6.45,-36.06 -4.13,23.06 h 26.87 l 4.13,-23.06 z"
|
||||||
|
id="path4-8"
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
transform="translate(-147.66835,-228.54044)" />
|
||||||
|
<path
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
id="path12-7"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 316.76,324.45 17.09,-94.74 h 48.44 c 0,0 8.38,0.03 13.97,4.53 5.59,4.5 7.09,10.56 7.56,13.88 0.47,3.31 0.53,7.13 -0.63,13.56 -1.16,6.44 -11.31,62.78 -11.31,62.78 h -26.81 l 11.56,-64.41 c 0,0 2.03,-7.16 -6.41,-7.22 -8.44,-0.06 -13.69,-0.06 -13.69,-0.06 l -12.88,71.69 h -26.89 z"
|
||||||
|
class="st1"
|
||||||
|
transform="translate(-147.66835,-228.54044)" />
|
||||||
|
<path
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
id="path14-9"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 622.67,229.71 -17.09,94.74 h -48.44 c 0,0 -8.16,-0.31 -13.97,-4.53 -5.85,-4.26 -7.41,-9.26 -7.88,-12.57 -0.47,-3.31 -0.22,-8.43 0.94,-14.87 1.16,-6.44 11.31,-62.78 11.31,-62.78 h 26.81 l -11.56,64.41 c 0,0 -1.04,7.12 6.41,7.22 8.44,0.11 13.69,0.06 13.69,0.06 l 12.88,-71.69 h 26.9 z"
|
||||||
|
class="st1"
|
||||||
|
transform="translate(-147.66835,-228.54044)" />
|
||||||
|
<path
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
id="path16-2"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 637.22,229.71 h 26.94 c 0,0 -4.98,6.61 0.88,15.46 0,0 17.58,28.39 19.41,31.26 8.35,13.12 4.81,29.5 -8.09,38.49 -8.31,5.79 -15.69,8.75 -30.65,9.73 -7.79,0.51 -31.42,-0.2 -31.42,-0.2 l 4.19,-23.16 c 0,0 20.67,-0.04 22.98,-0.17 7.54,-0.42 12.41,-2.54 14.94,-7.95 2.51,-5.38 -1.07,-11.46 -4.07,-15.71 0,0 -15.42,-23.59 -16.17,-24.98 -0.75,-1.39 -3.92,-5.98 -2.92,-12.56 0.95,-6.23 3.98,-10.21 3.98,-10.21"
|
||||||
|
class="st1"
|
||||||
|
transform="translate(-147.66835,-228.54044)" />
|
||||||
|
<path
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
id="path18-0"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 203.5,260.25 c 0,0 2.03,-7.16 -6.41,-7.22 -4.3,-0.03 -7.77,-0.04 -10.15,-0.05 -3.71,0 -4.06,3.56 -4.06,3.56 l -6.78,37.77 c 0,0 -1.04,7.12 6.41,7.22 4.18,0.06 7.59,0.08 9.95,0.08 3.71,0 4.11,-2.82 4.23,-3.47 0.12,-0.66 0.88,-4.88 0.88,-4.88 h -13.15 l 3.14,-18.67 h 13.36 -0.09 26.84 c -1.51,8.37 -3.38,19.27 -5.11,28.85 -3.27,16.35 -15.77,21.21 -26.93,21.21 h -25.18 c 0,0 -8.17,-0.3 -13.97,-4.52 -5.86,-4.26 -7.41,-9.26 -7.88,-12.57 -0.47,-3.31 -0.22,-8.43 0.94,-14.87 0.74,-4.12 4.26,-23.66 7.35,-40.81 3.07,-14.14 12.46,-21.97 28.77,-21.97 h 23.49 c 0,0 8.37,0.02 13.97,4.52 5.59,4.5 7.09,10.57 7.56,13.88 0.45,3.23 0.53,6.93 -0.54,13.08 H 203.3 Z"
|
||||||
|
class="st1"
|
||||||
|
transform="translate(-147.66835,-228.54044)"
|
||||||
|
sodipodi:nodetypes="ccccccsccccccccsccsccscccccc" />
|
||||||
|
<path
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
id="path20-2"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 289.97,260.2 -2.58,14.39 c 0,0 -4.14,23.11 -4.22,23.55 -0.12,0.66 -0.52,3.47 -4.23,3.47 -2.36,0 -5.77,-0.02 -9.95,-0.08 -7.45,-0.1 -6.41,-7.22 -6.41,-7.22 l 6.78,-37.77 c 0,0 0.35,-3.56 4.05,-3.56 2.38,0.01 5.85,0.02 10.15,0.05 8.03,0.06 6.41,7.17 6.41,7.17 m 27.19,-11.89 c -0.47,-3.31 -1.97,-9.38 -7.56,-13.88 -5.6,-4.5 -13.97,-4.52 -13.97,-4.52 h -23.49 c -16.31,0 -25.7,7.83 -28.77,21.97 -3.09,17.15 -6.61,36.69 -7.35,40.81 -1.16,6.44 -1.41,11.56 -0.94,14.87 0.47,3.31 2.02,8.31 7.88,12.57 5.8,4.22 13.97,4.52 13.97,4.52 h 25.18 c 11.17,0 23.67,-4.85 26.93,-21.21 1.24,-6.85 2.54,-14.37 3.74,-21.15 l 4.03,-22.09 c 0.87,-5.45 0.77,-8.87 0.35,-11.89"
|
||||||
|
class="st1"
|
||||||
|
transform="translate(-147.66835,-228.54044)" />
|
||||||
|
<path
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
|
||||||
|
id="path22-3"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 498.56,287.81 c -0.93,5.18 -1.78,9.94 -1.82,10.14 -0.12,0.66 -0.52,3.47 -4.23,3.47 -2.36,0 -5.77,-0.02 -9.95,-0.08 -7.45,-0.1 -6.41,-7.22 -6.41,-7.22 l 6.78,-37.77 c 0,0 0.35,-3.56 4.05,-3.56 2.38,0.01 5.85,0.02 10.15,0.05 8.03,0.06 6.41,7.17 6.41,7.17 l -1.14,6.36 h 26.82 l 1.16,-6.36 c 0.87,-5.45 0.77,-8.87 0.35,-11.89 -0.47,-3.31 -1.97,-9.38 -7.56,-13.88 -5.6,-4.5 -13.97,-4.52 -13.97,-4.52 h -23.49 c -16.31,0 -25.7,7.83 -28.77,21.97 -3.09,17.15 -6.61,36.69 -7.35,40.81 -1.16,6.44 -1.41,11.56 -0.94,14.87 0.47,3.31 2.02,8.31 7.88,12.57 5.8,4.22 13.97,4.52 13.97,4.52 h 25.18 c 11.17,0 23.67,-4.85 26.93,-21.21 0.9,-4.97 1.83,-10.29 2.73,-15.43 h -26.78 z"
|
||||||
|
class="st1"
|
||||||
|
transform="translate(-147.66835,-228.54044)" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1,109 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xml:space="preserve"
|
||||||
|
style="enable-background:new 0 0 841.89 595.28;"
|
||||||
|
viewBox="0 0 841.89 595.28"
|
||||||
|
y="0px"
|
||||||
|
x="0px"
|
||||||
|
id="Ebene_1"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="GONICUS-Logo_2022_logo-only.svg"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.9537024"
|
||||||
|
inkscape:cx="420.99555"
|
||||||
|
inkscape:cy="297.64001"
|
||||||
|
inkscape:window-width="5120"
|
||||||
|
inkscape:window-height="1372"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="Ebene_1" /><metadata
|
||||||
|
id="metadata33"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs31">
|
||||||
|
<defs
|
||||||
|
id="defs7">
|
||||||
|
<rect
|
||||||
|
id="SVGID_1_"
|
||||||
|
x="148"
|
||||||
|
y="229.71"
|
||||||
|
width="540.95"
|
||||||
|
height="136.57" />
|
||||||
|
</defs>
|
||||||
|
<clipPath
|
||||||
|
id="SVGID_2_">
|
||||||
|
<use
|
||||||
|
xlink:href="#SVGID_1_"
|
||||||
|
style="overflow:visible;"
|
||||||
|
id="use9" />
|
||||||
|
</clipPath>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</defs>
|
||||||
|
<style
|
||||||
|
id="style2"
|
||||||
|
type="text/css">
|
||||||
|
.st0{fill:#213A8F;}
|
||||||
|
.st1{clip-path:url(#SVGID_2_);fill:#213A8F;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<g
|
||||||
|
id="g861"
|
||||||
|
style="fill:#000000"><path
|
||||||
|
class="st0"
|
||||||
|
d="M415.1,265.77l-10.5,58.68h26.88l10.5-58.68H415.1z M421.55,229.71l-4.13,23.06h26.87l4.13-23.06H421.55z"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#000000" /><path
|
||||||
|
style="fill:#000000"
|
||||||
|
id="path12"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 316.76,324.45 17.09,-94.74 h 48.44 c 0,0 8.38,0.03 13.97,4.53 5.59,4.5 7.09,10.56 7.56,13.88 0.47,3.31 0.53,7.13 -0.63,13.56 -1.16,6.44 -11.31,62.78 -11.31,62.78 h -26.81 l 11.56,-64.41 c 0,0 2.03,-7.16 -6.41,-7.22 -8.44,-0.06 -13.69,-0.06 -13.69,-0.06 l -12.88,71.69 h -26.89 z"
|
||||||
|
class="st1" /><path
|
||||||
|
style="fill:#000000"
|
||||||
|
id="path14"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 622.67,229.71 -17.09,94.74 h -48.44 c 0,0 -8.16,-0.31 -13.97,-4.53 -5.85,-4.26 -7.41,-9.26 -7.88,-12.57 -0.47,-3.31 -0.22,-8.43 0.94,-14.87 1.16,-6.44 11.31,-62.78 11.31,-62.78 h 26.81 l -11.56,64.41 c 0,0 -1.04,7.12 6.41,7.22 8.44,0.11 13.69,0.06 13.69,0.06 l 12.88,-71.69 h 26.9 z"
|
||||||
|
class="st1" /><path
|
||||||
|
style="fill:#000000"
|
||||||
|
id="path16"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 637.22,229.71 h 26.94 c 0,0 -4.98,6.61 0.88,15.46 0,0 17.58,28.39 19.41,31.26 8.35,13.12 4.81,29.5 -8.09,38.49 -8.31,5.79 -15.69,8.75 -30.65,9.73 -7.79,0.51 -31.42,-0.2 -31.42,-0.2 l 4.19,-23.16 c 0,0 20.67,-0.04 22.98,-0.17 7.54,-0.42 12.41,-2.54 14.94,-7.95 2.51,-5.38 -1.07,-11.46 -4.07,-15.71 0,0 -15.42,-23.59 -16.17,-24.98 -0.75,-1.39 -3.92,-5.98 -2.92,-12.56 0.95,-6.23 3.98,-10.21 3.98,-10.21"
|
||||||
|
class="st1" /><path
|
||||||
|
style="fill:#000000"
|
||||||
|
id="path18"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 203.5,260.25 c 0,0 2.03,-7.16 -6.41,-7.22 -4.3,-0.03 -7.77,-0.04 -10.15,-0.05 -3.71,0 -4.06,3.56 -4.06,3.56 l -6.78,37.77 c 0,0 -1.04,7.12 6.41,7.22 4.18,0.06 7.59,0.08 9.95,0.08 3.71,0 4.11,-2.82 4.23,-3.47 0.12,-0.66 0.88,-4.88 0.88,-4.88 h -13.15 l 3.14,-18.67 h 13.36 -0.09 26.84 c -1.51,8.37 -3.38,19.27 -5.11,28.85 -3.27,16.35 -15.77,21.21 -26.93,21.21 h -25.18 c 0,0 -8.17,-0.3 -13.97,-4.52 -5.86,-4.26 -7.41,-9.26 -7.88,-12.57 -0.47,-3.31 -0.22,-8.43 0.94,-14.87 0.74,-4.12 4.26,-23.66 7.35,-40.81 3.07,-14.14 12.46,-21.97 28.77,-21.97 h 23.49 c 0,0 8.37,0.02 13.97,4.52 5.59,4.5 7.09,10.57 7.56,13.88 0.45,3.23 0.53,6.93 -0.54,13.08 H 203.3 Z"
|
||||||
|
class="st1" /><path
|
||||||
|
style="fill:#000000"
|
||||||
|
id="path20"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 289.97,260.2 -2.58,14.39 c 0,0 -4.14,23.11 -4.22,23.55 -0.12,0.66 -0.52,3.47 -4.23,3.47 -2.36,0 -5.77,-0.02 -9.95,-0.08 -7.45,-0.1 -6.41,-7.22 -6.41,-7.22 l 6.78,-37.77 c 0,0 0.35,-3.56 4.05,-3.56 2.38,0.01 5.85,0.02 10.15,0.05 8.03,0.06 6.41,7.17 6.41,7.17 m 27.19,-11.89 c -0.47,-3.31 -1.97,-9.38 -7.56,-13.88 -5.6,-4.5 -13.97,-4.52 -13.97,-4.52 h -23.49 c -16.31,0 -25.7,7.83 -28.77,21.97 -3.09,17.15 -6.61,36.69 -7.35,40.81 -1.16,6.44 -1.41,11.56 -0.94,14.87 0.47,3.31 2.02,8.31 7.88,12.57 5.8,4.22 13.97,4.52 13.97,4.52 h 25.18 c 11.17,0 23.67,-4.85 26.93,-21.21 1.24,-6.85 2.54,-14.37 3.74,-21.15 l 4.03,-22.09 c 0.87,-5.45 0.77,-8.87 0.35,-11.89"
|
||||||
|
class="st1" /><path
|
||||||
|
style="fill:#000000"
|
||||||
|
id="path22"
|
||||||
|
clip-path="url(#SVGID_2_)"
|
||||||
|
d="m 498.56,287.81 c -0.93,5.18 -1.78,9.94 -1.82,10.14 -0.12,0.66 -0.52,3.47 -4.23,3.47 -2.36,0 -5.77,-0.02 -9.95,-0.08 -7.45,-0.1 -6.41,-7.22 -6.41,-7.22 l 6.78,-37.77 c 0,0 0.35,-3.56 4.05,-3.56 2.38,0.01 5.85,0.02 10.15,0.05 8.03,0.06 6.41,7.17 6.41,7.17 l -1.14,6.36 h 26.82 l 1.16,-6.36 c 0.87,-5.45 0.77,-8.87 0.35,-11.89 -0.47,-3.31 -1.97,-9.38 -7.56,-13.88 -5.6,-4.5 -13.97,-4.52 -13.97,-4.52 h -23.49 c -16.31,0 -25.7,7.83 -28.77,21.97 -3.09,17.15 -6.61,36.69 -7.35,40.81 -1.16,6.44 -1.41,11.56 -0.94,14.87 0.47,3.31 2.02,8.31 7.88,12.57 5.8,4.22 13.97,4.52 13.97,4.52 h 25.18 c 11.17,0 23.67,-4.85 26.93,-21.21 0.9,-4.97 1.83,-10.29 2.73,-15.43 h -26.78 z"
|
||||||
|
class="st1" /></g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.6 KiB |
9984
openscad/own/2d-to-3d-scad/gonicus/src/gonicus_clean.dxf
Normal file
BIN
openscad/own/2d-to-3d-scad/gonicus/stl/gonicus_2022.stl
Normal file
62
openscad/own/auto-luefterschlitz-blende/blende.scad
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
// auto-lüfterschlitz-einsatz-mopped
|
||||||
|
//#######################################
|
||||||
|
// vars:
|
||||||
|
plate_h=54; // frontplatte, höhe
|
||||||
|
plate_w=196; // frontplatte, breite
|
||||||
|
tab_depth=20; // tiefe der seitlichen flügel
|
||||||
|
mt=3; // materialstärke
|
||||||
|
pin_t=4; // länge des loch-pins
|
||||||
|
hole_dia=9.5; // durchmesser befestigungsloch
|
||||||
|
hole_depth=11.75; // distanz tiefe der befestigungsbohrung, mittenabstand
|
||||||
|
instrument_dia=52; // durchmesser einlass für instrument
|
||||||
|
instrument_count=3; // anzahl einlässe
|
||||||
|
instrument_h=20; // hülsentiefe für einlässe
|
||||||
|
offset=1.5; // x und y überstand der Platte
|
||||||
|
$fn=100; // detailgrad
|
||||||
|
//#######################################
|
||||||
|
// model:
|
||||||
|
|
||||||
|
module plate(){
|
||||||
|
translate([-plate_w/2-offset,-plate_h/2-offset,-mt/2]){
|
||||||
|
cube([plate_w+(2*offset),plate_h+(2*offset),mt]);
|
||||||
|
// left tab
|
||||||
|
translate([offset,2*mt+offset,mt]) {
|
||||||
|
union(){
|
||||||
|
cube([mt,plate_h-4*mt,tab_depth]);
|
||||||
|
translate([-pin_t/2,(plate_h-4*mt)/2,hole_depth])rotate([0,90,0])cylinder(h=pin_t,r=hole_dia/2,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// right tab
|
||||||
|
translate([plate_w-offset,2*mt+offset,mt]) {
|
||||||
|
union(){
|
||||||
|
cube([mt,plate_h-4*mt,tab_depth]);
|
||||||
|
translate([pin_t/2+mt,(plate_h-4*mt)/2,hole_depth])rotate([0,90,0])cylinder(h=pin_t,r=hole_dia/2,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module insert_hole(){
|
||||||
|
translate([0,0,-mt/2-0.1])cylinder(r=instrument_dia/2+mt/2,h=mt+0.2);
|
||||||
|
}
|
||||||
|
module insert(){
|
||||||
|
difference(){
|
||||||
|
cylinder(r=instrument_dia/2+mt/2,h=instrument_h,center=true);
|
||||||
|
cylinder(r=instrument_dia/2,h=instrument_h+0.1,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module complete_model(){
|
||||||
|
plate();
|
||||||
|
}
|
||||||
|
|
||||||
|
difference(){
|
||||||
|
complete_model();
|
||||||
|
insert_hole();
|
||||||
|
translate([plate_w*0.33,0,0])insert_hole();
|
||||||
|
translate([-(plate_w*0.33),0,0])insert_hole();
|
||||||
|
}
|
||||||
|
translate([0,0,instrument_h/2-mt/2]){
|
||||||
|
insert();
|
||||||
|
translate([plate_w*0.33,0,0])insert();
|
||||||
|
translate([-(plate_w*0.33),0,0])insert();
|
||||||
|
}
|
||||||
BIN
openscad/own/auto-luefterschlitz-blende/blende.stl
Normal file
23
openscad/own/esp-rgb-fancontroller/case.scad
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// rgb and fancontroller casing for esp with wled to drive computer-rbg-gear
|
||||||
|
// by zeus - cc4.0-by-nc-sa - 2022-04-30
|
||||||
|
// ##################################################
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
case_w=;
|
||||||
|
case_l=;
|
||||||
|
case_h_btm=;
|
||||||
|
mt=3;
|
||||||
|
fan_cutout_w=; // 4-pin pwm-headers, 90° angled
|
||||||
|
fan_cutout_h=;
|
||||||
|
fan_cutout_top_w=; // cutout for the retention-clip on top
|
||||||
|
fan_cutout_top_d=; // ~ depth
|
||||||
|
rgb_cutout_w=; // jst_sm-sockets
|
||||||
|
rgb_cutout_h=;
|
||||||
|
io_cutout_w=; // the other three sockets for power and MB connectivity, about 12-13 pins overall width
|
||||||
|
io_cutout_h=;
|
||||||
|
hole_dia=;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Model
|
||||||
BIN
openscad/own/gpu-antisag/IMG/gpu-antisag.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
openscad/own/gpu-antisag/STL/gpu-antisag.stl
Normal file
55
openscad/own/gpu-antisag/gpu-antisag.scad
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
// by zeus - zeus@ctdo.de - CC-BY-NC-4.00
|
||||||
|
// -> https://www.thingiverse.com/zeus
|
||||||
|
// -> https://www.printables.com/social/366928-zeus/about
|
||||||
|
// -> https://github.com/zeus86
|
||||||
|
// -> https://blog.tastatursport.de/
|
||||||
|
// 2023-03-28
|
||||||
|
// GPU-antisag-adapter for Lian Li O11D Evo with vertical GPU Kit and 25mm Bottom-Fans (default orientation)
|
||||||
|
//##################
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//##################
|
||||||
|
//
|
||||||
|
// VARS
|
||||||
|
mt=5; // general material thickness
|
||||||
|
cen_w=8; // center bar
|
||||||
|
cen_h=mt; // center bar
|
||||||
|
cen_elev=24; // total center elevation
|
||||||
|
depth=110; // 110 for 120mm fans
|
||||||
|
tri_w=40; // triangular plate
|
||||||
|
tri_x=tri_w/sqrt(2);// nominal side-length of the square-section, the triangular shape is made of
|
||||||
|
tri_h=mt; // triangular plate
|
||||||
|
$fn=100; // general resolution
|
||||||
|
q=0.01; // used to avoid graphical glitches
|
||||||
|
hds=15; // short hole-distance
|
||||||
|
hdl=105; // long hole distance
|
||||||
|
holedia=5; // diameter of the hole for the screw//
|
||||||
|
hole_dist=holedia-0.66; // distance from edge
|
||||||
|
//##################
|
||||||
|
//
|
||||||
|
// MODEL
|
||||||
|
module triangle(){
|
||||||
|
difference(){
|
||||||
|
rotate([0,0,45])cube([tri_x,tri_x,mt],center=true);
|
||||||
|
translate([0,-tri_w/2,0])cube([tri_w,tri_w,5+q],center=true);
|
||||||
|
for (x=[hds/2,-hds/2]){
|
||||||
|
translate([x,hole_dist,0]){
|
||||||
|
cylinder(r=holedia/2,h=mt+q,center=true);
|
||||||
|
translate([0,0,holedia*0.3])cylinder(r1=holedia/2,r2=holedia,h=mt+q,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module cen(){
|
||||||
|
hull(){
|
||||||
|
cube([cen_w,hdl-(hole_dist*1.5)-q,cen_h],center=true);
|
||||||
|
translate([0,0,cen_elev-mt])cube([cen_w,hdl/2,cen_h],center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,mt/2]){
|
||||||
|
triangle();
|
||||||
|
translate([0,hdl/2+hole_dist,0])cen();
|
||||||
|
translate([0,hdl+hole_dist*2,0])rotate([0,0,180])triangle();
|
||||||
|
}
|
||||||
2
openscad/own/hex-rackpanels/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
raw/*
|
||||||
|
hex-rackpanels.zip
|
||||||
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220924_125328077.jpg
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220924_125335980.jpg
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220924_125355163.jpg
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220924_141208121.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220924_154012112.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220927_165722974.jpg
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220927_171052500.jpg
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
openscad/own/hex-rackpanels/IMG/PXL_20220927_171103764.jpg
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
openscad/own/hex-rackpanels/IMG/anaconda.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
openscad/own/hex-rackpanels/IMG/angular.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
openscad/own/hex-rackpanels/IMG/ansible.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/ansible_alt.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
openscad/own/hex-rackpanels/IMG/arch.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
openscad/own/hex-rackpanels/IMG/bitwarden.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/cisco-alt.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
openscad/own/hex-rackpanels/IMG/cisco.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
openscad/own/hex-rackpanels/IMG/debian.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
openscad/own/hex-rackpanels/IMG/discord.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
openscad/own/hex-rackpanels/IMG/docker.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/freebsd.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
openscad/own/hex-rackpanels/IMG/freenas.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
openscad/own/hex-rackpanels/IMG/gitea.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
openscad/own/hex-rackpanels/IMG/github.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
openscad/own/hex-rackpanels/IMG/gitlab.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
openscad/own/hex-rackpanels/IMG/go.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
openscad/own/hex-rackpanels/IMG/grafana.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
openscad/own/hex-rackpanels/IMG/homeassistant.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
openscad/own/hex-rackpanels/IMG/icinga.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
openscad/own/hex-rackpanels/IMG/jellyfin.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/jupyter.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
openscad/own/hex-rackpanels/IMG/k3s-alt.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
openscad/own/hex-rackpanels/IMG/k3s.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
openscad/own/hex-rackpanels/IMG/kubernetes.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
openscad/own/hex-rackpanels/IMG/mint.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
openscad/own/hex-rackpanels/IMG/nextcloud.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
openscad/own/hex-rackpanels/IMG/nginx-alt.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/nginx-alt2.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
openscad/own/hex-rackpanels/IMG/nodejs.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
openscad/own/hex-rackpanels/IMG/nxing.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
openscad/own/hex-rackpanels/IMG/openvpn.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/openwrt.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
openscad/own/hex-rackpanels/IMG/pfsense.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
openscad/own/hex-rackpanels/IMG/pi-hole.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
openscad/own/hex-rackpanels/IMG/plex-alt.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
openscad/own/hex-rackpanels/IMG/plex.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
openscad/own/hex-rackpanels/IMG/portainer.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
openscad/own/hex-rackpanels/IMG/proxmox.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
openscad/own/hex-rackpanels/IMG/python-alt.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
openscad/own/hex-rackpanels/IMG/python.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
openscad/own/hex-rackpanels/IMG/r.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
openscad/own/hex-rackpanels/IMG/rancher.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
openscad/own/hex-rackpanels/IMG/raspberry-pi.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
openscad/own/hex-rackpanels/IMG/rust.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
openscad/own/hex-rackpanels/IMG/snakemake.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
openscad/own/hex-rackpanels/IMG/truenas-core.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
openscad/own/hex-rackpanels/IMG/truenas-scale.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
openscad/own/hex-rackpanels/IMG/tux.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
openscad/own/hex-rackpanels/IMG/ubiquity.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
openscad/own/hex-rackpanels/IMG/ubuntu.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
openscad/own/hex-rackpanels/IMG/windows.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
openscad/own/hex-rackpanels/IMG/wireguard.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
openscad/own/hex-rackpanels/IMG/wordpress-alt.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
openscad/own/hex-rackpanels/IMG/wordpress.png
Normal file
|
After Width: | Height: | Size: 47 KiB |