Skip to content

Instantly share code, notes, and snippets.

@mcmadhatter
Created May 22, 2015 19:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcmadhatter/63ac565c92e911a6d0f9 to your computer and use it in GitHub Desktop.
Save mcmadhatter/63ac565c92e911a6d0f9 to your computer and use it in GitHub Desktop.
Digital Sundial Generator SCAD
// written by mcmadhatter - based on the work of Sebastian Morales in this instructable http://www.instructables.com/id/Time-oclock-shadow/?ALLSTEPS
//
// Licensed under the creative commons Attribution 4.0 International license
// https://creativecommons.org/licenses/by/4.0/
echo(version=version());
font = "Stencil";
// use google maps to get your latitude and logitude, then plug it into here
// http://www.anycalculator.com/horizontalsundial.htm, finally populate the
// numbers eleven to six below.
latitude = 40
eleven = 11.53 ;
ten = 23.72;
nine = 37.28;
eight = 52.82 ;
seven = 70.61;
six = 90;
cubeSize = 60;
letterSize = 25;
letterHeight = 500;
cylinderLength = 30+((letterSize+10)*12);
o = cubeSize / 2 - letterHeight / 2;
module number(l) {
translate([0, -o, ((cylinderLength-letterSize)/2)-10]) rotate([90, 0, 0]) linear_extrude(height = letterHeight) {
text(l, size = letterSize, font = font, halign = "center", valign = "center", $fn = 16);
}
}
rotate([latitude, 0, 0])
difference() {
color("gray") cylinder(h = cylinderLength, r1 = 25, r2 = 25, center = true) ;
number("12");
translate([0,0,-30]) rotate([0,0,eleven]) number("11");
translate([0,0,-60]) rotate([0,0,-eleven]) number("1");
translate([0,0,-90]) rotate([0,0,ten]) number("10");
translate([0,0,-120]) rotate([0,0,-ten]) number("2");
translate([0,0,-150]) rotate([0,0,nine]) number("9");
translate([0,0,-180]) rotate([0,0,-nine]) number("3");
translate([0,0,-210]) rotate([0,0,eight]) number("8");
translate([0,0,-240]) rotate([0,0,-eight]) number("4");
translate([0,0,-270]) rotate([0,0,seven]) number("7");
translate([0,0,-300]) rotate([0,0,-seven]) number("5");
translate([0,0,-330]) rotate([0,0,-six]) number("6");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment