113 lines
3.6 KiB
OpenSCAD
113 lines
3.6 KiB
OpenSCAD
|
/**
|
||
|
* A name tag that can easily be clipped to the neck of your bottle.
|
||
|
* Copyright (C) 2013 Roland Hieber <rohieb+bottleclip@rohieb.name>
|
||
|
*
|
||
|
* This file was modified by obelix <christian@loelkes.com> for the
|
||
|
* OHM2013-Logo. If you wish to use other logos please use the original
|
||
|
* file. All other parameters were not modified.
|
||
|
*
|
||
|
* Version of the modification: 1.0
|
||
|
*
|
||
|
* See examples.scad for examples on how to use this module.
|
||
|
*
|
||
|
* The contents of this file are licenced under CC-BY-SA 3.0 Unported.
|
||
|
* See https://creativecommons.org/licenses/by-sa/3.0/deed for the
|
||
|
* licensing terms.
|
||
|
*/
|
||
|
|
||
|
include <write/Write.scad>
|
||
|
|
||
|
/**
|
||
|
* Creates one instance of a bottle clip name tag. The default values are
|
||
|
* suitable for 0.5l Club Mate bottles (and similar bottles). By default, logo
|
||
|
* and text are placed on the name tag so they both share half the height. In this
|
||
|
* version the logo is fixed.
|
||
|
*
|
||
|
* Parameters:
|
||
|
* ru: the radius on the upper side of the clip
|
||
|
* rl: the radius on the lower side of the clip
|
||
|
* ht: the height of the clip
|
||
|
* width: the thickness of the wall. Values near 2.5 usually result in a good
|
||
|
* clippiness for PLA prints.
|
||
|
* name: the name that is printed on your name tag. For the default ru/rt/ht
|
||
|
* values, this string should not exceed 18 characters to fit on the name tag.
|
||
|
* font: the path to a font for Write.scad.
|
||
|
*/
|
||
|
|
||
|
bottle_clip();
|
||
|
|
||
|
module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="OHM2013", font="write/orbitron.dxf") {
|
||
|
|
||
|
e=100; // should be big enough, used for the outer boundary of the text/logo
|
||
|
|
||
|
difference() {
|
||
|
rotate([0,0,-45]) union() {
|
||
|
// main cylinder
|
||
|
cylinder(r1=rl+width, r2=ru+width, h=ht);
|
||
|
// text and logo
|
||
|
if(logo == "") {
|
||
|
writecylinder(name, [0,0,3], rl+0.5, ht/13*7, h=ht/13*8, t=max(rl,ru),
|
||
|
font=font);
|
||
|
} else {
|
||
|
writecylinder(name, [0,0,0], rl+0.5, ht/13*7, h=ht/13*4, t=max(rl,ru),
|
||
|
font=font);
|
||
|
|
||
|
// The logo has been split in 3 parts.
|
||
|
|
||
|
rotate([0,0,-48]) translate([0,0,ht*3/4-0.1])
|
||
|
rotate([90,0,0])
|
||
|
scale([0.9,0.9,1])
|
||
|
scale([ht/100,ht/100,1])
|
||
|
translate([-25,-29,0.5])
|
||
|
linear_extrude(height=max(ru,rl)*2)
|
||
|
import("ohm2013_1.dxf");
|
||
|
|
||
|
translate([0,0,ht*3/4-0.1])
|
||
|
rotate([90,0,0])
|
||
|
scale([0.8,0.8,1])
|
||
|
scale([ht/100,ht/100,1])
|
||
|
translate([-18,-22,0.5])
|
||
|
linear_extrude(height=max(ru,rl)*2)
|
||
|
import("ohm2013_2.dxf");
|
||
|
|
||
|
rotate([0,0,44]) translate([0,0,ht*3/4-0.1])
|
||
|
rotate([90,0,0])
|
||
|
scale([0.7,0.7,1])
|
||
|
scale([ht/100,ht/100,1])
|
||
|
translate([-25,-26,0.5])
|
||
|
linear_extrude(height=max(ru,rl)*2)
|
||
|
import("ohm2013_3.dxf");
|
||
|
}
|
||
|
}
|
||
|
// inner cylinder which is substracted
|
||
|
translate([0,0,-1])
|
||
|
cylinder(r1=rl, r2=ru, h=ht+2);
|
||
|
// outer cylinder which is substracted, so the text and the logo end
|
||
|
// somewhere on the outside ;-)
|
||
|
difference () {
|
||
|
cylinder(r1=rl+e, r2=ru+e, h=ht);
|
||
|
translate([0,0,-1])
|
||
|
// Note: bottom edges of characters are hard to print when character
|
||
|
// depth is > 0.7
|
||
|
cylinder(r1=rl+width+0.7, r2=ru+width+0.7, h=ht+2);
|
||
|
}
|
||
|
// finally, substract a cube as a gap so we can clip it to the bottle
|
||
|
translate([0,0,-1]) cube([50,50,50]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates one instance of a bottle clip name tag suitable for 0.33l longneck
|
||
|
* bottles (like fritz cola, etc.). All parameters are passed to the module
|
||
|
* bottle_clip(), see there for their documentation.
|
||
|
*/
|
||
|
module bottle_clip_longneck(name="OHM2013", width=2.5, font="write/orbitron.dxf") {
|
||
|
bottle_clip(name=name, ru=13, rl=15, ht=26, width=width, font=font);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* The Steinie-Tag has been removed since it does not support logos.
|
||
|
**/
|
||
|
|
||
|
// vim: set noet ts=2 sw=2 tw=80:
|