Skip to content

Instantly share code, notes, and snippets.

@patmandenver
Created April 14, 2022 11:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patmandenver/6bccc33c9eb045e6b5978bdb89ef1d53 to your computer and use it in GitHub Desktop.
Save patmandenver/6bccc33c9eb045e6b5978bdb89ef1d53 to your computer and use it in GitHub Desktop.
//
// Created by Patrick Bailey iQless.com
//
////////////////////////////////////////
$fn=200;
size = 50;
corner_radius = 5;
sign_height =8;
svg_height = 0.45;
svg_adjust = [0, -2.3];
svg_scale = .147;
svg_image_file = "dino_01.svg";
sign_font = "Arial:style=Black";
magnet_dia = 32.2; //33 too big
magnet_height = 3.3;
magnet_depth = .8;
difference(){
union(){
back_sign(size, corner_radius, sign_height - 2, 1.0);
rotate([0,180,0]){
back_sign(size, corner_radius, 2, .95);
}
black_border(size, corner_radius, sign_height - 2, svg_height);
svg(svg_image_file, sign_height - 2, svg_height,
svg_scale, svg_adjust);
color("black"){
translate([0,0,sign_height-.1 - 2]){
linear_extrude(svg_height+.1){
words("DINOSAUR",sign_font, 4.1, [0,20]);
words("XING",sign_font, 5.3, [0,-25.88]);
}
}
}
}
translate([0,0, magnet_height/2 - 2 + magnet_depth]){
cylinder(magnet_height, d = magnet_dia, center=true);
}
}
module back_sign(size, corner_radius, sign_height, scale_it){
color("yellow"){
linear_extrude(sign_height, scale = scale_it){
sign_2d(size, corner_radius);
}
}
}
module black_border(size, corner_radius, sign_height, svg_height){
color("black"){
translate([0,0,sign_height-.1]){
linear_extrude(svg_height+.1){
difference(){
sign_2d(size-corner_radius/2, corner_radius);
sign_2d(size-corner_radius, corner_radius);
}
}
}
}
}
module sign_2d(size, corner_radius){
d = sin(45)*size;
hull(){
translate([d, 0, 0]){
circle(corner_radius);
}
translate([0, d, 0]){
circle(corner_radius);
}
translate([-d, 0, 0]){
circle(corner_radius);
}
translate([0, -d, 0]){
circle(corner_radius);
}
}
}
module svg(svg_image_file, sign_height, svg_height,
svg_scale, svg_adjust){
color("black"){
translate([svg_adjust[0],svg_adjust[1],sign_height-.1]){
linear_extrude(svg_height + .1){
scale([svg_scale,svg_scale,1]){
import(svg_image_file, center=true);
}
}
}
}
}
module words(word,sign_font, font_size, position){
translate([position[0], position[1]]){
text(word, size=font_size,
valign= "center",
halign="center", font=sign_font);
}
}
module mirror_copy(v = [1, 0, 0]) {
children();
mirror(v) children();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment