From 642239a7307b4c63ae718d86e63421350c7cb3ec Mon Sep 17 00:00:00 2001 From: FireAndIceFrog Date: Fri, 12 Sep 2025 13:44:27 +1200 Subject: [PATCH 1/5] chore: created 3d sketch of the canvas art --- .gitmodules | 3 + string-art-model/constants/motorMount.scad | 18 + string-art-model/constants/nailBoard.scad | 16 + string-art-model/constants/units.scad | 9 + string-art-model/libraries/MCAD/.gitignore | 4 + string-art-model/libraries/MCAD/2Dshapes.scad | 197 +++ .../libraries/MCAD/3d_triangle.scad | 327 +++++ .../libraries/MCAD/README.markdown | 120 ++ string-art-model/libraries/MCAD/TODO | 21 + string-art-model/libraries/MCAD/__init__.py | 0 string-art-model/libraries/MCAD/array.scad | 114 ++ string-art-model/libraries/MCAD/bearing.scad | 223 ++++ string-art-model/libraries/MCAD/bitmap/README | 17 + .../libraries/MCAD/bitmap/alphabet_block.scad | 24 + .../libraries/MCAD/bitmap/bitmap.scad | 1078 +++++++++++++++++ .../libraries/MCAD/bitmap/height_map.scad | 31 + .../MCAD/bitmap/letter_necklace.scad | 59 + .../libraries/MCAD/bitmap/name_tag.scad | 36 + .../libraries/MCAD/bitmap/test_name_tag.scad | 19 + string-art-model/libraries/MCAD/boxes.scad | 46 + .../libraries/MCAD/constants.scad | 9 + string-art-model/libraries/MCAD/curves.scad | 21 + string-art-model/libraries/MCAD/fonts.scad | 743 ++++++++++++ string-art-model/libraries/MCAD/gears.scad | 199 +++ string-art-model/libraries/MCAD/gridbeam.scad | 185 +++ string-art-model/libraries/MCAD/hardware.scad | 122 ++ .../libraries/MCAD/involute_gears.scad | 847 +++++++++++++ string-art-model/libraries/MCAD/layouts.scad | 44 + .../libraries/MCAD/lego_compatibility.scad | 157 +++ string-art-model/libraries/MCAD/lgpl-2.1.txt | 502 ++++++++ .../libraries/MCAD/libtriangles.scad | 60 + .../libraries/MCAD/linear_bearing.scad | 98 ++ .../libraries/MCAD/materials.scad | 45 + string-art-model/libraries/MCAD/math.scad | 6 + .../libraries/MCAD/metric_fastners.scad | 111 ++ string-art-model/libraries/MCAD/motors.scad | 98 ++ string-art-model/libraries/MCAD/multiply.scad | 30 + .../libraries/MCAD/nuts_and_bolts.scad | 227 ++++ .../libraries/MCAD/openscad_testing.py | 53 + .../libraries/MCAD/openscad_utils.py | 64 + .../libraries/MCAD/polyholes.scad | 29 + string-art-model/libraries/MCAD/profiles.scad | 89 ++ .../libraries/MCAD/regular_shapes.scad | 262 ++++ string-art-model/libraries/MCAD/screw.scad | 64 + string-art-model/libraries/MCAD/servos.scad | 200 +++ string-art-model/libraries/MCAD/shapes.scad | 182 +++ string-art-model/libraries/MCAD/stepper.scad | 313 +++++ string-art-model/libraries/MCAD/teardrop.scad | 57 + string-art-model/libraries/MCAD/test_docs.py | 20 + string-art-model/libraries/MCAD/test_mcad.py | 1 + .../libraries/MCAD/transformations.scad | 6 + .../libraries/MCAD/triangles.scad | 64 + .../libraries/MCAD/trochoids.scad | 290 +++++ string-art-model/libraries/MCAD/units.scad | 29 + .../libraries/MCAD/unregular_shapes.scad | 10 + .../libraries/MCAD/utilities.scad | 60 + string-art-model/main.json | 6 + string-art-model/main.scad | 10 + string-art-model/models/motorMount.scad | 20 + string-art-model/models/nailBoard.scad | 35 + .../StringArtConfigSection.tsx | 2 +- 61 files changed, 7731 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 100644 string-art-model/constants/motorMount.scad create mode 100644 string-art-model/constants/nailBoard.scad create mode 100644 string-art-model/constants/units.scad create mode 100644 string-art-model/libraries/MCAD/.gitignore create mode 100644 string-art-model/libraries/MCAD/2Dshapes.scad create mode 100644 string-art-model/libraries/MCAD/3d_triangle.scad create mode 100644 string-art-model/libraries/MCAD/README.markdown create mode 100644 string-art-model/libraries/MCAD/TODO create mode 100644 string-art-model/libraries/MCAD/__init__.py create mode 100644 string-art-model/libraries/MCAD/array.scad create mode 100644 string-art-model/libraries/MCAD/bearing.scad create mode 100644 string-art-model/libraries/MCAD/bitmap/README create mode 100644 string-art-model/libraries/MCAD/bitmap/alphabet_block.scad create mode 100644 string-art-model/libraries/MCAD/bitmap/bitmap.scad create mode 100644 string-art-model/libraries/MCAD/bitmap/height_map.scad create mode 100644 string-art-model/libraries/MCAD/bitmap/letter_necklace.scad create mode 100644 string-art-model/libraries/MCAD/bitmap/name_tag.scad create mode 100644 string-art-model/libraries/MCAD/bitmap/test_name_tag.scad create mode 100644 string-art-model/libraries/MCAD/boxes.scad create mode 100644 string-art-model/libraries/MCAD/constants.scad create mode 100644 string-art-model/libraries/MCAD/curves.scad create mode 100644 string-art-model/libraries/MCAD/fonts.scad create mode 100644 string-art-model/libraries/MCAD/gears.scad create mode 100644 string-art-model/libraries/MCAD/gridbeam.scad create mode 100644 string-art-model/libraries/MCAD/hardware.scad create mode 100644 string-art-model/libraries/MCAD/involute_gears.scad create mode 100644 string-art-model/libraries/MCAD/layouts.scad create mode 100644 string-art-model/libraries/MCAD/lego_compatibility.scad create mode 100644 string-art-model/libraries/MCAD/lgpl-2.1.txt create mode 100644 string-art-model/libraries/MCAD/libtriangles.scad create mode 100644 string-art-model/libraries/MCAD/linear_bearing.scad create mode 100644 string-art-model/libraries/MCAD/materials.scad create mode 100644 string-art-model/libraries/MCAD/math.scad create mode 100644 string-art-model/libraries/MCAD/metric_fastners.scad create mode 100644 string-art-model/libraries/MCAD/motors.scad create mode 100644 string-art-model/libraries/MCAD/multiply.scad create mode 100644 string-art-model/libraries/MCAD/nuts_and_bolts.scad create mode 100644 string-art-model/libraries/MCAD/openscad_testing.py create mode 100644 string-art-model/libraries/MCAD/openscad_utils.py create mode 100644 string-art-model/libraries/MCAD/polyholes.scad create mode 100644 string-art-model/libraries/MCAD/profiles.scad create mode 100644 string-art-model/libraries/MCAD/regular_shapes.scad create mode 100644 string-art-model/libraries/MCAD/screw.scad create mode 100644 string-art-model/libraries/MCAD/servos.scad create mode 100644 string-art-model/libraries/MCAD/shapes.scad create mode 100644 string-art-model/libraries/MCAD/stepper.scad create mode 100644 string-art-model/libraries/MCAD/teardrop.scad create mode 100644 string-art-model/libraries/MCAD/test_docs.py create mode 100644 string-art-model/libraries/MCAD/test_mcad.py create mode 100644 string-art-model/libraries/MCAD/transformations.scad create mode 100644 string-art-model/libraries/MCAD/triangles.scad create mode 100644 string-art-model/libraries/MCAD/trochoids.scad create mode 100644 string-art-model/libraries/MCAD/units.scad create mode 100644 string-art-model/libraries/MCAD/unregular_shapes.scad create mode 100644 string-art-model/libraries/MCAD/utilities.scad create mode 100644 string-art-model/main.json create mode 100644 string-art-model/main.scad create mode 100644 string-art-model/models/motorMount.scad create mode 100644 string-art-model/models/nailBoard.scad diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..471ab1a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "string-art-model/libraries/MCAD"] + path = string-art-model/libraries/MCAD + url = https://github.com/openscad/MCAD.git diff --git a/string-art-model/constants/motorMount.scad b/string-art-model/constants/motorMount.scad new file mode 100644 index 0000000..bf65454 --- /dev/null +++ b/string-art-model/constants/motorMount.scad @@ -0,0 +1,18 @@ +include +include + +motor_mount_colour = "grey"; +motor_mount_width = 800*mm; +motor_mount_height = 600*mm; +motor_mount_thickness = 20*mm; + + +motor_mount_axel_radius = nail_board_axel_radius + 1*mm; +motor_mount_axel_offset_x = motor_mount_width*0.3; +motor_mount_axel_offset_y = motor_mount_height*0.3; + +motor_mount_fabric_pole_radius = 4*mm; +motor_mount_fabric_pole_height = 30*mm; +motor_mount_fabric_pole_offset_x = -motor_mount_width*0.3; +motor_mount_fabric_pole_offset_y = -motor_mount_height*0.3; + diff --git a/string-art-model/constants/nailBoard.scad b/string-art-model/constants/nailBoard.scad new file mode 100644 index 0000000..7bf62d9 --- /dev/null +++ b/string-art-model/constants/nailBoard.scad @@ -0,0 +1,16 @@ +include + +// Nail board parameters +number_of_nails = 100*mm; +nail_board_radius = 300*mm; +nail_board_thickness = 20*mm; +nail_board_nail_indent = 3*mm; +nail_board_axel_radius = 3*mm; +nail_board_colour = "white"; + +// Nail parameters +nail_height = 10*mm; +nail_radius = 3*mm; +nail_head_radius = 4*mm; +nail_head_height = 2*mm; +nail_colour = "silver"; \ No newline at end of file diff --git a/string-art-model/constants/units.scad b/string-art-model/constants/units.scad new file mode 100644 index 0000000..fcf24d2 --- /dev/null +++ b/string-art-model/constants/units.scad @@ -0,0 +1,9 @@ +mm = 1; +cm = 10 * mm; +m = 1000 * mm; +inch = 25.4 * mm; +ft = 12 * inch; +yd = 3 * ft; +mile = 1760 * yd; +deg = 1; +rad = 180 / pi * deg; \ No newline at end of file diff --git a/string-art-model/libraries/MCAD/.gitignore b/string-art-model/libraries/MCAD/.gitignore new file mode 100644 index 0000000..979f64b --- /dev/null +++ b/string-art-model/libraries/MCAD/.gitignore @@ -0,0 +1,4 @@ +*~ +*.pyc +.pytest_cache/ +__pycache__/ diff --git a/string-art-model/libraries/MCAD/2Dshapes.scad b/string-art-model/libraries/MCAD/2Dshapes.scad new file mode 100644 index 0000000..1b21050 --- /dev/null +++ b/string-art-model/libraries/MCAD/2Dshapes.scad @@ -0,0 +1,197 @@ +/* + * OpenSCAD 2D Shapes Library (www.openscad.org) + * Copyright (C) 2012 Peter Uithoven + * + * License: LGPL 2.1 or later + + * 2D Shapes + * ngon(sides, radius, center=false); + * complexRoundSquare(size,rads1=[0,0], rads2=[0,0], rads3=[0,0], rads4=[0,0], center=true) + * roundedSquare(pos=[10,10],r=2) + * ellipsePart(width,height,numQuarters) + * donutSlice(innerSize,outerSize, start_angle, end_angle) + * pieSlice(size, start_angle, end_angle) //size in radius(es) + * ellipse(width, height) { +*/ + +// Examples - (layouts.scad is required for examples) +// example2DShapes(); use ; + +module example2DShapes() { + grid(105,105,true,4) + { + // ellipse + ellipse(50,75); + + // part of ellipse (a number of quarters) + ellipsePart(50,75,3); + ellipsePart(50,75,2); + ellipsePart(50,75,1); + + // complexRoundSquare examples + complexRoundSquare([75,100],[20,10],[20,10],[20,10],[20,10]); + complexRoundSquare([75,100],[0,0],[0,0],[30,50],[20,10]); + complexRoundSquare([50,50],[10,20],[10,20],[10,20],[10,20],false); + complexRoundSquare([100,100]); + complexRoundSquare([100,100],rads1=[20,20],rads3=[20,20]); + + // pie slice + pieSlice(50,0,10); + pieSlice(50,45,190); + pieSlice([50,20],180,270); + + // donut slice + donutSlice(20,50,0,350); + donutSlice(30,50,190,270); + donutSlice([40,22],[50,30],180,270); + donutSlice([50,20],50,180,270); + donutSlice([20,30],[50,40],0,270); + } +} +// end examples ---------------------- + +module complexRoundSquare( + size, // Size + rads1=[0,0], // Top left radius + rads2=[0,0], // Top right radius + rads3=[0,0], // Bottom right radius + rads4=[0,0], // Bottom left radius + center=true // center +) { + width = size[0]; + height = size[1]; + // %square(size=[width, height],center=true); + x1 = 0-width/2+rads1[0]; + y1 = 0-height/2+rads1[1]; + x2 = width/2-rads2[0]; + y2 = 0-height/2+rads2[1]; + x3 = width/2-rads3[0]; + y3 = height/2-rads3[1]; + x4 = 0-width/2+rads4[0]; + y4 = height/2-rads4[1]; + + scs = 0.1; // straight corner size + + x = (center)? 0: width/2; + y = (center)? 0: height/2; + + translate([x,y,0]) + hull() + { + // top left + if(rads1[0] > 0 && rads1[1] > 0) + translate([x1,y1]) + mirror([1,0]) + ellipsePart(rads1[0]*2,rads1[1]*2,1); + else + translate([x1,y1]) + square(size=[scs, scs]); + + // top right + if(rads2[0] > 0 && rads2[1] > 0) + translate([x2,y2]) + ellipsePart(rads2[0]*2,rads2[1]*2,1); + else + translate([width/2-scs,0-height/2]) + square(size=[scs, scs]); + + // bottom right + if(rads3[0] > 0 && rads3[1] > 0) + translate([x3,y3]) + mirror([0,1]) + ellipsePart(rads3[0]*2,rads3[1]*2,1); + else + translate([width/2-scs,height/2-scs]) + square(size=[scs, scs]); + + // bottom left + if(rads4[0] > 0 && rads4[1] > 0) + translate([x4,y4]) + rotate([0,0,-180]) + ellipsePart(rads4[0]*2,rads4[1]*2,1); + else + #translate([x4,height/2-scs]) + square(size=[scs, scs]); + } +} + +module roundedSquare(pos=[10,10],r=2) { + minkowski() + { + square([pos[0]-r*2,pos[1]-r*2],center=true); + + + circle(r=r); + } +} + +// round shapes +// The orientation might change with the implementation of circle... +module ngon(sides, radius, center=false) { + rotate([0, 0, 360/sides/2]) + circle(r=radius, $fn=sides, center=center); +} + +module ellipsePart(width,height,numQuarters) { + o = 1; //slight overlap to fix a bug + difference() + { + ellipse(width,height); + + if(numQuarters <= 3) + translate([0-width/2-o,0-height/2-o,0]) + square([width/2+o,height/2+o]); + if(numQuarters <= 2) + translate([0-width/2-o,-o,0]) + square([width/2+o,height/2+o*2]); + if(numQuarters < 2) + translate([-o,0,0]) + square([width/2+o*2,height/2+o]); + } +} + +module donutSlice(innerSize,outerSize, start_angle, end_angle) { + difference() + { + pieSlice(outerSize, start_angle, end_angle); + + if(is_list(innerSize) && len(innerSize) > 1) + ellipse(innerSize[0]*2,innerSize[1]*2); + else + circle(innerSize); + } +} + +module pieSlice(size, start_angle, end_angle) { //size in radius(es) + rx = (is_list(size) && len(size) > 1)? size[0] : size; + ry = (is_list(size) && len(size) > 1)? size[1] : size; + trx = rx* sqrt(2) + 1; + try = ry* sqrt(2) + 1; + a0 = (4 * start_angle + 0 * end_angle) / 4; + a1 = (3 * start_angle + 1 * end_angle) / 4; + a2 = (2 * start_angle + 2 * end_angle) / 4; + a3 = (1 * start_angle + 3 * end_angle) / 4; + a4 = (0 * start_angle + 4 * end_angle) / 4; + + if(end_angle > start_angle) + intersection() { + if(is_list(size) && len(size) > 1) + ellipse(rx*2,ry*2); + else + circle(rx); + polygon([ + [0,0], + [trx * cos(a0), try * sin(a0)], + [trx * cos(a1), try * sin(a1)], + [trx * cos(a2), try * sin(a2)], + [trx * cos(a3), try * sin(a3)], + [trx * cos(a4), try * sin(a4)], + [0,0] + ]); + } +} + +module ellipse(width, height) { + scale([1, height/width, 1]) + circle(r=width/2); +} diff --git a/string-art-model/libraries/MCAD/3d_triangle.scad b/string-art-model/libraries/MCAD/3d_triangle.scad new file mode 100644 index 0000000..f351498 --- /dev/null +++ b/string-art-model/libraries/MCAD/3d_triangle.scad @@ -0,0 +1,327 @@ +// Enhancement of OpenSCAD Primitives Solid with Trinagles +// Copyright (C) 2011 Rene BAUMANN, Switzerland +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; If not, see +// or write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// ================================================================ +// +// File providing functions and modules to draw 3D - triangles +// created in the X-Y plane with hight h, using various triangle +// specification methods. +// Standard traingle geometrical definition is used. Vertices are named A,B,C, +// side a is opposite vertex A a.s.o. the angle at vertex A is named alpha, +// B(beta), C(gamma). +// +// This SW is a contribution to the Free Software Community doing a marvelous +// job of giving anyone access to knowledge and tools to educate himselfe. +// +// Author: Rene Baumann +// Date: 11.09.2011 +// Edition: 0.3 11.09.2011 For review by Marius +// Edition: 0.4 11.11.2011 Ref to GPL2.1 added +// +// -------------------------------------------------------------------------------------- +// +// =========================================== +// +// FUNCTION: 3dtri_sides2coord +// DESCRIPTION: +// Enter triangle sides a,b,c and to get the A,B,C - corner +// co-ordinates. The trinagle's c-side lies on the x-axis +// and A-corner in the co-ordinates center [0,0,0]. Geometry rules +// required that a + b is greater then c. The traingle's vertices are +// computed such that it is located in the X-Y plane, side c is on the +// positive x-axis. +// PARAMETER: +// a : real length of side a +// b : real length of side b +// c : real length of side c +// RETURNS: +// vertices : [Acord,Bcord,Ccord] Array of vertices coordinates +// +// COMMENT: +// vertices = 3dtri_sides2coord (3,4,5); +// vertices[0] : Acord vertex A cordinates the like [x,y,z] +// ------------------------------------------------------------------------------------- +// +function 3dtri_sides2coord (a,b,c) = [ + [0,0,0], + [c,0,0], + [(pow(c,2)+pow(a,2)-pow(b,2))/(2*c),sqrt ( pow(a,2) - + pow((pow(c,2)+pow(a,2)-pow(b,2))/(2*c),2)),0]]; +// +// +// =========================================== +// +// FUNCTION: 3dtri_centerOfGravityCoord +// DESCRIPTION: +// Enter triangle A,B,C - corner coordinates to get the +// triangles Center of Gravity coordinates. It is assumed +// the triangle is parallel to the X-Y plane. The function +// returns always zero for the z-coordinate +// PARAMETER: +// Acord : [x,y,z] Coordinates of vertex A +// Bcord : [x,y,z] Coordinates of vertex B +// Ccord : [x,y,z] Coordinates of vertex C +// RETURNS: +// CG : [x,y,0] Center of gravity coordinate in X-Y-plane +// +// COMMENT: +// vertices = 3dtri_sides2coord (3,4,5); +// cg = 3dtri_centerOfGravityCoord(vertices[0],vertices[1],vertices[2]); +// ------------------------------------------------------------------------------------- +// +function 3dtri_centerOfGravityCoord (Acord,Bcord,Ccord) = [ + (Acord[0]+Bcord[0]+Ccord[0])/3,(Acord[1]+Bcord[1]+Ccord[1])/3,0]; +// +// +// =========================================== +// +// FUNCTION: 3dtri_centerOfcircumcircle +// DESCRIPTION: +// Enter triangle A,B,C - corner coordinates to get the +// circum circle coordinates. It is assumed +// the triangle is parallel to the X-Y plane. The function +// returns always zero for the z-coordinate +// PARAMETER: +// Acord : [x,y,z] Coordinates of vertex A +// Bcord : [x,y,z] Coordinates of vertex B +// Ccord : [x,y,z] Coordinates of vertex C +// RETURNS: +// cc : [x,y,0] Circumcircle center +// +// COMMENT: +// vertices = 3dtri_sides2coord (3,4,5); +// cc = 3dtri_centerOfcircumcircle (vertices[0],vertices[1],vertices[2]); +// ------------------------------------------------------------------------------------- +// +function 3dtri_centerOfcircumcircle (Acord,Bcord,Ccord) = + [0.5*Bcord[0], + 0.5*((pow(Ccord[1],2)+pow(Ccord[0],2)-Bcord[0]*Ccord[0])/Ccord[1]), + 0]; +// +// +// +// =========================================== +// +// FUNCTION: 3dtri_radiusOfcircumcircle +// DESCRIPTION: +// Provides the triangle's radius from circumcircle to the vertices. +// It is assumed the triangle is parallel to the X-Y plane. The function +// returns always zero for the z-coordinate +// PARAMETER: +// Vcord : [x,y,z] Coordinates of a vertex A or B,C +// CCcord : [x,y,z] Coordinates of circumcircle +// r : Radius at vertices if round corner triangle used, +// else enter "0" +// RETURNS: +// cr : Circumcircle radius +// +// COMMENT: Calculate circumcircle radius of trinagle with round vertices having +// radius R = 2 +// vertices = 3dtri_sides2coord (3,4,5); +// cc = 3dtri_centerOfcircumcircle (vertices[0],vertices[1],vertices[2]); +// cr = 3dtri_radiusOfcircumcircle (vertices[0],cc,2); +// ------------------------------------------------------------------------------------- +// +function 3dtri_radiusOfcircumcircle (Vcord,CCcord,R) = + sqrt(pow(CCcord[0]-Vcord[0],2)+pow(CCcord[1]-Vcord[1],2))+ R; +// +// +// +// =========================================== +// +// FUNCTION: 3dtri_radiusOfIn_circle +// DESCRIPTION: +// Enter triangle A,B,C - corner coordinates to get the +// in-circle radius. It is assumed the triangle is parallel to the +// X-Y plane. The function always returns zero for the z-coordinate. +// Formula used for inner circle radius: r = 2A /(a+b+c) +// PARAMETER: +// Acord : [x,y,z] Coordinates of vertex A +// Bcord : [x,y,z] Coordinates of vertex B +// Ccord : [x,y,z] Coordinates of vertex C +// +// RETURNS: +// ir : real radius of in-circle +// +// COMMENT: +// vertices = 3dtri_sides2coord (3,4,5); +// ir = 3dtri_radiusOfIn_circle (vertices[0],vertices[1],vertices[2]); +// ------------------------------------------------------------------------------------- +// +function 3dtri_radiusOfIn_circle (Acord,Bcord,Ccord) = + Bcord[0]*Ccord[1]/(Bcord[0]+sqrt(pow(Ccord[0]-Bcord[0],2)+pow(Ccord[1],2))+ + sqrt(pow(Ccord[0],2)+pow(Ccord[1],2))); +// +// +// +// =========================================== +// +// FUNCTION: 3dtri_centerOfIn_circle +// DESCRIPTION: +// Enter triangle A,B,C - corner coordinates to get the +// in-circle coordinates. It is assumed +// the triangle is parallel to the X-Y plane. The function +// returns always zero for the z-coordinate +// PARAMETER: +// Acord : [x,y,z] Coordinates of vertex A +// Bcord : [x,y,z] Coordinates of vertex B +// Ccord : [x,y,z] Coordinates of vertex C +// r : real radius of in-circle +// RETURNS: +// ic : [x,y,0] In-circle center co-ordinates +// +// COMMENT: +// vertices = 3dtri_sides2coord (3,4,5); +// ir = 3dtri_radiusOfIn_circle (vertices[0],vertices[1],vertices[2]); +// ic = 3dtri_centerOfIn_circle (vertices[0],vertices[1],vertices[2],ir); +// ------------------------------------------------------------------------------------- +// +function 3dtri_centerOfIn_circle (Acord,Bcord,Ccord,r) = + [(Bcord[0]+sqrt(pow(Ccord[0]-Bcord[0],2)+pow(Ccord[1],2))+ + sqrt(pow(Ccord[0],2)+pow(Ccord[1],2)))/2-sqrt(pow(Ccord[0]-Bcord[0],2)+pow(Ccord[1],2)),r,0]; +// +// +// ============================================ +// +// MODULE: 3dtri_draw +// DESCRIPTION: +// Draw a standard solid triangle with A,B,C - vertices specified by its +// co-ordinates and height "h", as given by the input parameters. +// PARAMETER: +// Acord : [x,y,z] Coordinates of vertex A +// Bcord : [x,y,z] Coordinates of vertex B +// Ccord : [x,y,z] Coordinates of vertex C +// h : real Height of the triangle +// RETURNS: +// none +// +// COMMENT: +// You might use the result from function 3dtri_sides2coord +// to call module 3dtri_draw ( vertices[0],vertices[1],vertices[2], h) +// ------------------------------------------------------------------------------------- +// +module 3dtri_draw ( Acord, Bcord, Ccord, h) { +polyhedron (points=[Acord,Bcord,Ccord, + Acord+[0,0,h],Bcord+[0,0,h],Ccord+[0,0,h]], + triangles=[ [0,1,2],[0,2,3],[3,2,5], + [3,5,4],[1,5,2],[4,5,1], + [4,1,0],[0,3,4]]); + +}; +// +// +// ============================================== +// +// MODULE: 3dtri_rnd_draw +// DESCRIPTION: +// Draw a round corner triangle with A,B,C - vertices specified by its +// co-ordinates, height h and round vertices having radius "r". +// As specified by the input parameters. +// Please note, the tringles side lenght gets extended by "2 * r", +// and the vertices coordinates define the centers of the +// circles with radius "r". +// PARAMETER: +// Acord : [x,y,z] Coordinates of vertex A +// Bcord : [x,y,z] Coordinates of vertex B +// Ccord : [x,y,z] Coordinates of vertex C +// h : real Height of the triangle +// r : real Radius from vertices coordinates +// RETURNS: +// none +// +// COMMENT: +// You might use the result from function 3dtri_sides2coord +// to call module 3dtri_rnd_draw ( vertices[0],vertices[1],vertices[2], h, r) +// ------------------------------------------------------------------------------------- +// +module 3dtri_rnd_draw ( Acord, Bcord, Ccord, h, r) { +Avect=Ccord-Bcord; // vector pointing from vertex B to vertex C +p0=Acord + [0,-r,0]; +p1=Bcord + [0,-r,0]; +p2=Bcord + [r*Avect[1]/sqrt(pow(Avect[0],2)+pow(Avect[1],2)), + -r*Avect[0]/sqrt(pow(Avect[0],2)+pow(Avect[1],2)) ,0]; +p3=Ccord + [r*Avect[1]/sqrt(pow(Avect[0],2)+pow(Avect[1],2)), + -r*Avect[0]/sqrt(pow(Avect[0],2)+pow(Avect[1],2)) ,0]; +p4=Ccord +[- r*Ccord[1]/sqrt(pow(Ccord[0],2)+pow(Ccord[1],2)), + r*Ccord[0]/sqrt(pow(Ccord[0],2)+pow(Ccord[1],2)) ,0]; +p5=Acord + [- r*Ccord[1]/sqrt(pow(Ccord[0],2)+pow(Ccord[1],2)), + r*Ccord[0]/sqrt(pow(Ccord[0],2)+pow(Ccord[1],2)) ,0]; +bottom_triangles = [[0,1,2],[0,2,3],[0,3,4],[0,4,5]]; +c_side_triangles = [[7,1,0],[0,6,7]]; +a_side_triangles = [[2,8,3],[8,9,3]]; +b_side_triangles = [[4,10,5],[10,11,5]]; +A_edge_triangles = [[0,5,11],[0,11,6]]; +B_edge_triangles = [[1,7,2],[2,7,8]]; +C_edge_triangles = [[3,9,4],[9,10,4]]; +top_triangles = [[11,7,6],[11,8,7],[11,10,8],[8,10,9]]; +union () { + polyhedron (points=[p0,p1,p2,p3,p4,p5, + p0+[0,0,h],p1+[0,0,h],p2+[0,0,h],p3+[0,0,h],p4+[0,0,h],p5+[0,0,h]], + triangles=[ bottom_triangles[0],bottom_triangles[1],bottom_triangles[2],bottom_triangles[3], + A_edge_triangles[0],A_edge_triangles[1], + c_side_triangles[0],c_side_triangles[1], + B_edge_triangles[0],B_edge_triangles[1], + a_side_triangles[0],a_side_triangles[1], + C_edge_triangles[0],C_edge_triangles[1], + b_side_triangles[0],b_side_triangles[1], + top_triangles[0],top_triangles[1],top_triangles[2],top_triangles[3]]); + translate(Acord) cylinder(r1=r,r2=r,h=h,center=false); + translate(Bcord) cylinder(r1=r,r2=r,h=h,center=false); + translate(Ccord) cylinder(r1=r,r2=r,h=h,center=false); +}; +} +// +// ============================================== +// +// Demo Application - copy into new file and uncomment or uncomment here but +// without uncommenting the use <...> statement, then press F6 - Key +// +// use ; +//$fn=50; +// h =4; +// r=2; +// echo ("Draws a right angle triangle with its circumcircle and in-circle"); +// echo ("The calculated co-ordinates and radius are show in this console window"); +// echo ("Geometry rules for a right angle triangle say, that the circumcircle is the"); +// echo ("Thales Circle which center must be in the middle of the triangle's c - side"); +// echo ("==========================================="); +// vertices = 3dtri_sides2coord (30,40,50); +// echo("A = ",vertices[0]," B = ",vertices[1]," C = ",vertices[2]); +// cg = 3dtri_centerOfGravityCoord (vertices[0],vertices[1],vertices[2]); +// echo (" Center of gravity = ",cg); +// cc = 3dtri_centerOfcircumcircle (vertices[0],vertices[1],vertices[2]); +// echo (" Center of circumcircle = ",cc); +// cr = 3dtri_radiusOfcircumcircle (vertices[0],cc,r); +// echo(" Radius of circumcircle ",cr); +// ir = 3dtri_radiusOfIn_circle (vertices[0],vertices[1],vertices[2]); +// echo (" Radius of in-circle = ",ir); +// ic = 3dtri_centerOfIn_circle (vertices[0],vertices[1],vertices[2],ir); +// echo (" Center of in-circle = ",ic); +// translate(cc+[0,0,5*h/2]) difference () { +// cylinder (h=5*h,r1=cr+4,r2=cr+4,center=true); +// cylinder (h=6*h,r1=cr,r2=cr,center=true);} +// difference () { +// union () { +// difference () { +// 3dtri_rnd_draw (vertices[0], vertices[1], vertices[2],5*h,r); +// scale([0.8,0.8,1]) translate([6,2,4*h]) 3dtri_rnd_draw (vertices[0], vertices[1], vertices[2],5*h,r); +// } +// translate (ic+[0,0,5*h]) cylinder(h=10*h,r1=ir+r,r2=ir+r,center=true); +// } +// translate (ic+[0,0,5*h]) cylinder(h=12*h,r1=0.5*ir,r2=0.5*ir,center=true); +// } + diff --git a/string-art-model/libraries/MCAD/README.markdown b/string-art-model/libraries/MCAD/README.markdown new file mode 100644 index 0000000..3175ead --- /dev/null +++ b/string-art-model/libraries/MCAD/README.markdown @@ -0,0 +1,120 @@ +OpenSCAD MCAD Library +===================== + +This library contains components commonly used in designing and mocking up +mechanical designs. It is currently unfinished and you can expect some API +changes, however many things are already working. + +This library was created by various authors as named in the individual +files' comments. All the files are licensed under the LGPL 2.1 (see +http://creativecommons.org/licenses/LGPL/2.1/ or the included file +lgpl-2.1.txt), some of them allow distribution under more permissive +terms (as described in the files' comments). + +## Usage ## + +You can import these files in your scripts with `use `, +where 'filename' is one of the files listed below like 'motors' or +'servos'. Some files include useful constants which will be available +with `include `, which should be safe to use on all +included files (ie. no top level code should create geometry). (There is +a bug/feature that prevents including constants from files that +"include" other files - see the openscad mailing list archives for more +details. Since the maintainers aren't very responsive, may have to work +around this somehow) + +If you host your project in git, you can do `git submodule add URL PATH` in your +repo to import this library as a git submodule for easy usage. Then you need to do +a `git submodule update --init` after cloning. When you want to update the submodule, +do `cd PATH; git checkout master; git pull`. See `git help submodule` for more info. + +Currently Provided Tools: + +* regular_shapes.scad + - regular polygons, ie. 2D + - regular polyhedrons, ie. 3D + +* involute_gears.scad (http://www.thingiverse.com/thing:3575): + - gear() + - bevel_gear() + - bevel_gear_pair() + +* gears.scad (Old version): + - gear(number_of_teeth, circular_pitch OR diametrial_pitch, pressure_angle OPTIONAL, clearance OPTIONAL) + +* motors.scad: + - stepper_motor_mount(nema_standard, slide_distance OPTIONAL, mochup OPTIONAL) + +Tools (alpha and beta quality): + +* nuts_and_bolts.scad: for creating metric and imperial bolt/nut holes +* bearing.scad: standard/custom bearings +* screw.scad: screws and augers +* materials.scad: color definitions for different materials +* stepper.scad: NEMA standard stepper outlines +* servos.scad: servo outlines +* boxes.scad: box with rounded corners +* triangles.scad: simple triangles +* 3d_triangle.scad: more advanced triangles + +Very generally useful functions and constants: + +* math.scad: general math functions +* constants.scad: mathematical constants +* curves.scad: mathematical functions defining curves +* units.scad: easy metric units +* utilities.scad: geometric funtions and misc. useful stuff +* teardrop.scad (http://www.thingiverse.com/thing:3457): parametric teardrop module +* shapes.scad: DEPRECATED simple shapes by Catarina Mota +* polyholes.scad: holes that should come out well when printed + +Other: + +* alphabet_block.scad +* bitmap.scad +* letter_necklace.scad +* name_tag.scad +* height_map.scad +* trochoids.scad +* libtriangles.scad +* layouts.scad +* transformations.scad +* 2Dshapes.scad +* gridbeam.scad +* fonts.scad +* unregular_shapes.scad +* metric_fastners.scad +* lego_compatibility.scad +* multiply.scad +* hardware.scad + +External utils that generate and process openscad code: + +* openscad_testing.py: testing code, see below +* openscad_utils.py: code for scraping function names etc. + +## Development ## + +You are welcome to fork this project in github and request pulls. I will try to +accomodate the community as much as possible in this. If for some reason you +want collaborator access, just ask. + +Github is fun (and easy), but I can include code submissions and other +improvements directly, and have already included code from various sources +(thingiverse is great :) + +### Code style ### +I'd prefer to have all included code nicely indented, at least at the block +level, and no extraneous whitespace. I'm used to indent with four spaces as +opposed to tabs or other mixes of whitespace, but at least try to choose a style +and stick to it. + +### Testing ### +I've started a minimal testing infrastucture for OpenSCAD code. It's written in +python and uses py.test (might be compatible with Nose also). Just type `py.test` +inside the lib dir in a terminal and you should see a part of the tests passing +and tracebacks for failing tests. It's very simplistic still, but it should test +that no syntax errors occur at least. + +The code is included in openscad_testing.py, and can be imported to be +used in other codebases. diff --git a/string-art-model/libraries/MCAD/TODO b/string-art-model/libraries/MCAD/TODO new file mode 100644 index 0000000..cc2b4f7 --- /dev/null +++ b/string-art-model/libraries/MCAD/TODO @@ -0,0 +1,21 @@ +Code that could be integrated: +* http://github.com/l0b0/qr2scad +* http://github.com/l0b0/img2scad +* http://github.com/l0b0/OpenSCAD-Minimizer +* http://www.thingiverse.com/thing:4656 +* http://www.thingiverse.com/thing:4758 +* http://www.thingiverse.com/thing:6021 +* Color library: http://www.thingiverse.com/thing:6717 +* http://www.thingiverse.com/thing:6465 + +Integrate these better: +* bitmap + +Testing: +* add tests for openscad functions +* motors.scad +* tests for 2D stuff + +Code style: +* motors.scad +* nuts_and_bolts.scad diff --git a/string-art-model/libraries/MCAD/__init__.py b/string-art-model/libraries/MCAD/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/string-art-model/libraries/MCAD/array.scad b/string-art-model/libraries/MCAD/array.scad new file mode 100644 index 0000000..3ab8a3e --- /dev/null +++ b/string-art-model/libraries/MCAD/array.scad @@ -0,0 +1,114 @@ +// array functions +// by david powell +// licence LGPL V2 or later +// +// this lib provides 2 functions +// Cubic_Array() , and Radial_Array() +// +//Cubic_Array(sx,sy,sz,nx,ny,nz,center){childobject} +// produces a cubic grid of child objects +// sx,sy,sz = spacing for each axis +// nx,ny,nz and number of objects on each axis +// center = true/false on if geometery is centered or not +// +// +//Radial_Array(a,n,r){child object} +// produces a clockwise radial array of child objects rotated around the local z axis +// a= interval angle +// n= number of objects +// r= radius distance +// +// remove // from following line to run test +//Cubic_and_Radial_Array_Test(); + +module Cubic_and_Radial_Array_Test() + { +//center referance point + translate([0,0,0]) + #cube([5,5,5],center=true); + +//cubic array of 5*5*5 objects spaced 10*10*10 center relative + Cubic_Array(10,10,10,5,5,5,center=true) + { + sphere(2.5,$fn=60); + cylinder(h=10,r=.5,center=true); + rotate([90,0,0]) + cylinder(h=10,r=.5,center=true); + rotate([0,90,0]) + cylinder(h=10,r=.5,center=true); + } + +//a linear array allong x can be derived from the cubic array simply + translate([60,0,0]) + Cubic_Array(10,0,0,5,1,1,center=false) + { + cube([5,5,5],center=true); + } +//a linear array allong y can be derived from the cubic array simply + translate([0,60,0]) + Cubic_Array(0,10,0,1,5,1,center=false) + { + cube([5,5,5],center=true); + } + +//a linear array allong z can be derived from the cubic array simply + translate([0,0,60]) + Cubic_Array(0,0,10,1,1,5,center=false) + { + cube([5,5,5],center=true); + } + +//a grid array allong x,y can be derived from the cubic array simply + translate([0,0,-60]) + Cubic_Array(10,10,0,5,5,1,center=true) + { + cube([5,5,5],center=true); + } + +//radial array of 32 objects rotated though 10 degrees + translate([0,0,0]) + Radial_Array(10,32,40) + { + cube([2,4,6],center=true); + } + +// a radial array of linear arrays + + rotate([45,45,45]) + Radial_Array(10,36,40) + { + translate([0,10,0]) + Cubic_Array(0,10,0,1,5,1,center=false) + { + cube([2,3,4],center=true); + cylinder(h=10,r=.5,center=true); + rotate([90,0,0]) + cylinder(h=10,r=.5,center=true); + } + } + +} + + +// main lib modules +module Cubic_Array(sx,sy,sz,nx,ny,nz,center) { + offset = center ? [-(((nx+1)*sx)/2),-(((ny+1)*sy)/2),-(((nz+1)*sz)/2)] : [0,0,0]; + translate(offset) + for(x=[1:nx], y=[1:ny], z=[1:nz]) + translate([x*sx,y*sy,z*sz]) + children(); +} + +// +//Radial_Array(a,n,r){child object} +// produces a clockwise radial array of child objects rotated around the local z axis +// a= interval angle +// n= number of objects +// r= radius distance +// +module Radial_Array(a,n,r){ + for (k=[0:n-1]) + rotate([0,0,-(a*k)]) + translate([0,r,0]) + children(); +} diff --git a/string-art-model/libraries/MCAD/bearing.scad b/string-art-model/libraries/MCAD/bearing.scad new file mode 100644 index 0000000..5db8c71 --- /dev/null +++ b/string-art-model/libraries/MCAD/bearing.scad @@ -0,0 +1,223 @@ +/* + * Bearing model. + * + * Originally by Hans Häggström, 2010. + * Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + */ + +/* +change list 13/6/2013 + added ,604,606,607,628,629,6200,6201,6202,6203,6205,6206 bearing sizes +*/ + +include +include + +// Example, uncomment to view +//test_bearing(); +//test_bearing_hole(); + +module test_bearing(){ + bearing(); + bearing(pos=[5*cm, 0,0], angle=[90,0,0]); + bearing(pos=[-2.5*cm, 0,0], model=688); +} + +module test_bearing_hole(){ + difference(){ + cube(size=[30, 30, 7-10*epsilon], center=true); + bearing(outline=true, center=true); + } +} + +BEARING_INNER_DIAMETER = 0; +BEARING_OUTER_DIAMETER = 1; +BEARING_WIDTH = 2; + +// Common bearing names +SkateBearing = 608; + +// Bearing dimensions +// model == XXX ? [inner dia, outer dia, width]: +// http://www.gizmology.net/bearings.htm has some valuable information on that +// https://www.bearingworks.com/bearing-sizes has a very exhaustive table of dimensions +function bearingDimensions(model) = + model == 603 ? [3*mm, 9*mm, 5*mm]: + model == 604 ? [4*mm, 12*mm, 4*mm]: + model == 605 ? [5*mm, 14*mm, 5*mm]: + model == 606 ? [6*mm, 17*mm, 6*mm]: + model == 607 ? [7*mm, 19*mm, 6*mm]: + model == 608 ? [8*mm, 22*mm, 7*mm]: + model == 609 ? [9*mm, 24*mm, 7*mm]: + + model == 623 ? [3*mm, 10*mm, 4*mm]: + model == 624 ? [4*mm, 13*mm, 5*mm]: + model == 625 ? [5*mm, 16*mm, 5*mm]: + model == 626 ? [6*mm, 19*mm, 6*mm]: + model == 627 ? [7*mm, 22*mm, 7*mm]: + model == 628 ? [8*mm, 24*mm, 8*mm]: + model == 629 ? [9*mm, 26*mm, 8*mm]: + + model == 633 ? [3*mm, 13*mm, 5*mm]: + model == 634 ? [4*mm, 16*mm, 5*mm]: + model == 635 ? [5*mm, 19*mm, 6*mm]: + model == 636 ? [6*mm, 22*mm, 7*mm]: + model == 637 ? [7*mm, 26*mm, 9*mm]: + model == 638 ? [8*mm, 28*mm, 9*mm]: + model == 639 ? [9*mm, 30*mm, 10*mm]: + + model == 673 ? [3*mm, 6*mm, 2.5*mm]: + model == 674 ? [4*mm, 7*mm, 2.5*mm]: + model == 675 ? [5*mm, 8*mm, 2.5*mm]: + model == 676 ? [6*mm, 10*mm, 3*mm]: + model == 677 ? [7*mm, 11*mm, 3*mm]: + model == 678 ? [8*mm, 12*mm, 3.5*mm]: + + model == 683 ? [3*mm, 7*mm, 3*mm]: + model == 684 ? [4*mm, 9*mm, 4*mm]: + model == 685 ? [5*mm, 11*mm, 5*mm]: + model == 686 ? [6*mm, 13*mm, 5*mm]: + model == 687 ? [7*mm, 14*mm, 5*mm]: + model == 688 ? [8*mm, 16*mm, 5*mm]: + model == 689 ? [9*mm, 17*mm, 5*mm]: + + model == 692 ? [2*mm, 6*mm, 3*mm]: + model == 693 ? [3*mm, 8*mm, 4*mm]: + model == 694 ? [4*mm, 11*mm, 4*mm]: + model == 695 ? [5*mm, 13*mm, 4*mm]: + model == 696 ? [6*mm, 15*mm, 5*mm]: + model == 697 ? [7*mm, 17*mm, 5*mm]: + model == 698 ? [8*mm, 19*mm, 6*mm]: + model == 699 ? [9*mm, 20*mm, 6*mm]: + + model == 6000 ? [10*mm, 26*mm, 8*mm]: + model == 6001 ? [12*mm, 28*mm, 8*mm]: + model == 6002 ? [15*mm, 32*mm, 9*mm]: + model == 6003 ? [17*mm, 35*mm, 10*mm]: + model == 6004 ? [20*mm, 42*mm, 12*mm]: + model == 6005 ? [25*mm, 47*mm, 12*mm]: + model == 6006 ? [30*mm, 55*mm, 13*mm]: + model == 6007 ? [35*mm, 62*mm, 14*mm]: + model == 6008 ? [40*mm, 68*mm, 15*mm]: + model == 6009 ? [45*mm, 75*mm, 16*mm]: + model == 6010 ? [50*mm, 80*mm, 16*mm]: + model == 6011 ? [55*mm, 90*mm, 18*mm]: + model == 6012 ? [60*mm, 95*mm, 18*mm]: + model == 6013 ? [65*mm, 100*mm, 18*mm]: + model == 6014 ? [70*mm, 110*mm, 20*mm]: + model == 6015 ? [75*mm, 115*mm, 20*mm]: + + model == 6200 ? [10*mm, 30*mm, 9*mm]: + model == 6201 ? [12*mm, 32*mm, 10*mm]: + model == 6202 ? [15*mm, 35*mm, 11*mm]: + model == 6203 ? [17*mm, 40*mm, 12*mm]: + model == 6204 ? [20*mm, 47*mm, 14*mm]: + model == 6205 ? [25*mm, 52*mm, 15*mm]: + model == 6206 ? [30*mm, 62*mm, 16*mm]: + model == 6207 ? [35*mm, 72*mm, 17*mm]: + model == 6208 ? [40*mm, 80*mm, 18*mm]: + model == 6209 ? [45*mm, 85*mm, 19*mm]: + + model == 6300 ? [10*mm, 35*mm, 11*mm]: + model == 6301 ? [12*mm, 37*mm, 12*mm]: + model == 6302 ? [15*mm, 42*mm, 13*mm]: + model == 6303 ? [17*mm, 47*mm, 14*mm]: + model == 6304 ? [20*mm, 52*mm, 15*mm]: + model == 6305 ? [25*mm, 62*mm, 17*mm]: + model == 6306 ? [30*mm, 72*mm, 19*mm]: + model == 6307 ? [35*mm, 80*mm, 21*mm]: + model == 6308 ? [40*mm, 90*mm, 23*mm]: + model == 6309 ? [45*mm, 100*mm, 25*mm]: + model == 6310 ? [50*mm, 110*mm, 27*mm]: + model == 6311 ? [55*mm, 120*mm, 29*mm]: + model == 6312 ? [60*mm, 130*mm, 31*mm]: + model == 6313 ? [65*mm, 140*mm, 33*mm]: + model == 6314 ? [70*mm, 150*mm, 35*mm]: + model == 6315 ? [75*mm, 160*mm, 37*mm]: + + model == 6700 ? [10*mm, 15*mm, 4*mm]: + model == 6701 ? [12*mm, 18*mm, 4*mm]: + + model == 6808 ? [40*mm, 52*mm, 7*mm]: + + model == 6900 ? [10*mm, 22*mm, 6*mm]: + model == 6901 ? [12*mm, 24*mm, 6*mm]: + model == 6902 ? [15*mm, 28*mm, 7*mm]: + model == 6903 ? [17*mm, 30*mm, 7*mm]: + model == 6904 ? [20*mm, 37*mm, 9*mm]: + model == 6905 ? [25*mm, 42*mm, 9*mm]: + + model == "LM12" ? [12*mm, 21*mm, 30*mm]: + + model == "MR52" ? [2*mm, 5*mm, 2.5*mm]: + model == "MR62" ? [2*mm, 6*mm, 2.5*mm]: + model == "MR63" ? [3*mm, 6*mm, 2.5*mm]: + model == "MR72" ? [2*mm, 7*mm, 3*mm]: + model == "MR74" ? [4*mm, 7*mm, 2.5*mm]: + model == "MR83" ? [3*mm, 8*mm, 3*mm]: + model == "MR84" ? [4*mm, 8*mm, 3*mm]: + model == "MR85" ? [5*mm, 8*mm, 2.5*mm]: + model == "MR93" ? [3*mm, 9*mm, 4*mm]: + model == "MR95" ? [5*mm, 9*mm, 3*mm]: + model == "MR104" ? [4*mm, 10*mm, 4*mm]: + model == "MR105" ? [5*mm, 10*mm, 4*mm]: + model == "MR106" ? [6*mm, 10*mm, 3*mm]: + model == "MR115" ? [5*mm, 11*mm, 4*mm]: + model == "MR117" ? [7*mm, 11*mm, 3*mm]: + model == "MR126" ? [6*mm, 12*mm, 4*mm]: + model == "MR128" ? [8*mm, 12*mm, 3.5*mm]: + model == "MR137" ? [7*mm, 13*mm, 4*mm]: + model == "MR148" ? [8*mm, 14*mm, 4*mm]: + model == "MR149" ? [9*mm, 14*mm, 4.5*mm]: + [8*mm, 22*mm, 7*mm]; // this is the default + + +function bearingWidth(model) = bearingDimensions(model)[BEARING_WIDTH]; +function bearingInnerDiameter(model) = bearingDimensions(model)[BEARING_INNER_DIAMETER]; +function bearingOuterDiameter(model) = bearingDimensions(model)[BEARING_OUTER_DIAMETER]; + +module bearing(pos=[0,0,0], angle=[0,0,0], model=SkateBearing, outline=false, + material=Steel, sideMaterial=Brass, center=false) { + // Common bearing names + model = + model == "Skate" ? 608 : + model; + + w = bearingWidth(model); + innerD = outline==false ? bearingInnerDiameter(model) : 0; + outerD = bearingOuterDiameter(model); + + innerRim = innerD + (outerD - innerD) * 0.2; + outerRim = outerD - (outerD - innerD) * 0.2; + midSink = w * 0.1; + newpos = [pos[0], pos[1], center ? pos[2]-(w/2) : pos[2]]; + + translate(newpos) rotate(angle) union() { + color(material) + difference() { + // Basic ring + Ring([0,0,0], outerD, innerD, w, material, material); + + if (outline==false) { + // Side shields + Ring([0,0,-epsilon], outerRim, innerRim, epsilon+midSink, sideMaterial, material); + Ring([0,0,w-midSink], outerRim, innerRim, epsilon+midSink, sideMaterial, material); + } + } + } + + module Ring(pos, od, id, h, material, holeMaterial) { + color(material) { + translate(pos) + difference() { + cylinder(r=od/2, h=h, $fs = 0.01); + color(holeMaterial) + translate([0,0,-10*epsilon]) + cylinder(r=id/2, h=h+20*epsilon, $fs = 0.01); + } + } + } + +} + + diff --git a/string-art-model/libraries/MCAD/bitmap/README b/string-art-model/libraries/MCAD/bitmap/README new file mode 100644 index 0000000..d1d27cc --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/README @@ -0,0 +1,17 @@ +This is an OpenSCAD module that let's you easily (well kinda) create 3D text. I've emulated the Atari 8-Bit fonts A-Z, a-z, 0-9, and most punctuation. You can create them a letter at a time or pass an array of characters. (OpenSCAD doesn't have any real string manipulation) + +It also has a bitmap module that you can use to define your own fonts. It's pretty simple, you pass it an array of numbers, then tell it how many bits per row and it creates cubes (of configurable width and height) in a grid and combines them into a single shape. The number in the array sets the pixel height modifier. So if you set height to 5 and the array value is 2, then the height of that pixel will be 10mm. + +Be careful when defining your own bitmaps in that you can't have two bits only connected diagonally. Otherwise OpenSCAD will say it's not manifold. For instance you can't have: + +0 0 0 +0 1 0 +0 0 1 + +But you can have: + +0 0 0 +0 1 1 +0 0 1 + +For more info see: http://www.thingiverse.com/thing:2054 diff --git a/string-art-model/libraries/MCAD/bitmap/alphabet_block.scad b/string-art-model/libraries/MCAD/bitmap/alphabet_block.scad new file mode 100644 index 0000000..ff82cba --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/alphabet_block.scad @@ -0,0 +1,24 @@ +/* +Parametric Alphabet Block +Tony Buser +http://tonybuser.com +http://creativecommons.org/licenses/by/3.0/ +*/ + +use + +// change to any letter +letter = "A"; + +union() { + difference() { + cube(size = 20); + translate(v = [2, 2, 17]) { + cube(size = [16, 16, 5]); + } + } + + translate(v = [10, 10, 15]) { + 8bit_char(letter, 2, 5); + } +} diff --git a/string-art-model/libraries/MCAD/bitmap/bitmap.scad b/string-art-model/libraries/MCAD/bitmap/bitmap.scad new file mode 100644 index 0000000..3ae5db8 --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/bitmap.scad @@ -0,0 +1,1078 @@ +/* +Bitmap and 8Bit Font Module +Tony Buser +http://tonybuser.com +http://creativecommons.org/licenses/by/3.0/ +*/ + +module bitmap(bitmap, block_size, height, row_size) { + width = block_size * row_size; + bitmap_size = row_size * row_size; + + function loc_x(loc) = floor(loc / row_size) * block_size; + function loc_y(loc) = loc % row_size * block_size; + function loc_z(loc) = (bitmap[loc]*height-height)/2; + + translate(v = [-width/2+block_size/2,-width/2+block_size/2,height/2]) { + for (loc = [0:bitmap_size - 1]) { + if (bitmap[loc] != 0) { + union() { + translate(v = [loc_x(loc), loc_y(loc), loc_z(loc)]) { + cube(size = [block_size, block_size, height * bitmap[loc]], center = true); + } + } + } + } + } +} + +module 8bit_char(char, block_size, height, include_base) { + if (char == "0") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,1,1,1,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "1") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "2") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "3") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "4") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,1,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,1,1,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "5") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "6") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "7") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "8") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "9") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "A") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "B") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "C") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "D") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,0,0,0, + 0,1,1,0,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,1,1,0,0, + 0,1,1,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "E") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "F") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "G") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "H") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "I") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "J") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "K") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,1,1,0,0, + 0,1,1,1,1,0,0,0, + 0,1,1,1,1,0,0,0, + 0,1,1,0,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "L") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "M") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,1,1, + 0,1,1,1,0,1,1,1, + 0,1,1,1,1,1,1,1, + 0,1,1,0,1,0,1,1, + 0,1,1,0,0,0,1,1, + 0,1,1,0,0,0,1,1, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "N") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,0,1,1,0, + 0,1,1,1,1,1,1,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "O") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "P") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "Q") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,0,1,1,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "R") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "S") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "T") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "U") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "V") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "W") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,1,1, + 0,1,1,0,0,0,1,1, + 0,1,1,0,1,0,1,1, + 0,1,1,1,1,1,1,1, + 0,1,1,1,0,1,1,1, + 0,1,1,0,0,0,1,1, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "X") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "Y") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "Z") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "OE") { + bitmap([ + 0,0,1,0,0,1,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0 + ], block_size, height, 8); + } else if (char == "a") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "b") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "c") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "d") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "e") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "f") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,1,1,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "g") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,1,1,0, + 0,1,1,1,1,1,0,0 + ], block_size, height, 8); + } else if (char == "h") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "i") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "j") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,1,1,1,1,0,0 + ], block_size, height, 8); + } else if (char == "k") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,1,1,0,0, + 0,1,1,1,1,0,0,0, + 0,1,1,0,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "l") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "m") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,1,1, + 0,1,1,1,1,1,1,1, + 0,1,1,0,1,0,1,1, + 0,1,1,0,0,0,1,1, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "n") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "o") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "p") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "q") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,1,1,0 + ], block_size, height, 8); + } else if (char == "r") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "s") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "t") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "u") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "v") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "w") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,1,1, + 0,1,1,0,1,0,1,1, + 0,1,1,1,1,1,1,1, + 0,0,1,1,1,1,1,0, + 0,0,1,1,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "x") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "y") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,1,1,0,0, + 0,1,1,1,1,0,0,0 + ], block_size, height, 8); + } else if (char == "z") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "+") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,1,1,1,1,1,1,0, + 0,1,1,1,1,1,1,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "-") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == ":") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == ".") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == ",") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0 + ], block_size, height, 8); + } else if (char == "?") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "=") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "*") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,0,1,1,1,1,0,0, + 1,1,1,1,1,1,1,1, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "!") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "''") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "#") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 1,1,1,1,1,1,1,1, + 0,1,1,0,0,1,1,0, + 0,1,1,0,0,1,1,0, + 1,1,1,1,1,1,1,1, + 0,1,1,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "$") { + bitmap([ + 0,0,0,1,1,0,0,0, + 0,0,1,1,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,1,1,1,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "%") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,1,1,0,0, + 0,0,1,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,1,1,0,0,1,1,0, + 0,1,0,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "&") { + bitmap([ + 0,0,0,1,1,1,0,0, + 0,0,1,1,0,1,1,0, + 0,0,0,1,1,1,0,0, + 0,0,1,1,1,0,0,0, + 0,1,1,0,1,1,1,1, + 0,1,1,0,1,1,1,0, + 0,0,1,1,1,0,1,1, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "@") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,1,1,0,0,1,1,0, + 0,1,1,0,1,1,1,0, + 0,1,1,0,1,1,1,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,1,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "'") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "(") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,1,1,1,0,0, + 0,0,1,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == ")") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,1,1,1,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,1,0,0, + 0,0,1,1,1,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "<") { + bitmap([ + 0,0,0,0,0,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == ">") { + bitmap([ + 0,1,1,0,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "[") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "]") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,1,1,0,0, + 0,0,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "/") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,1,1,0,0, + 0,0,0,1,1,0,0,0, + 0,0,1,1,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "\\") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,1,1,0,0,0,0,0, + 0,0,1,1,0,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,0,1,1,0,0, + 0,0,0,0,0,1,1,0, + 0,0,0,0,0,0,1,0, + 0,0,0,0,0,0,0,0 + ], block_size, height, 8); + } else if (char == "_") { + bitmap([ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1 + ], block_size, height, 8); + } else if (char == "|") { + bitmap([ + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0, + 0,0,0,1,1,0,0,0 + ], block_size, height, 8); + } else { + echo("Invalid Character: ", char); + } + +} + +module 8bit_str(chars, char_count, block_size, height) { + echo(str("Total Width: ", block_size * 8 * char_count, "mm")); + union() { + for (count = [0:char_count-1]) { + translate(v = [0, count * block_size * 8, 0]) { + 8bit_char(chars[count], block_size, height); + } + } + } +} + +/* + + +block_size = 5; +height = 10; + +union() { + translate(v = [0,0,5]) { + 8bit_char("A", block_size, height); + + //bitmap([ + // 1,1,1,1,1,1,1,1, + // 1,0,0,1,1,0,0,1, + // 1,0,1,1,1,1,0,1, + // 1,1,1,0,0,1,1,1, + // 1,1,1,0,0,1,1,1, + // 1,0,1,1,1,1,0,1, + // 1,0,0,1,1,0,0,1, + // 1,1,1,1,1,1,1,1 + //], block_size, height, 8); + + //bitmap([ + // 1,1,1,1, + // 1,0,0,1, + // 1,0,0,1, + // 1,1,1,1 + //], block_size, height, 4); + } + translate(v = [0,0,5/2]) { + color([0,0,1,1]) { + cube(size = [block_size * 8, block_size * 8, 5], center = true); + } + } +} + + + +chars = ["T","O","N","Y","","B","U","S","E","R"]; +char_count = 10; +block_size = 1; +height = 5; + +union() { + translate(v = [0,-block_size*8*char_count/2+block_size*8/2,5]) { + 8bit_str(chars, char_count, block_size, height); + } + translate(v = [0,0,5/2]) { + color([0,0,1,1]) { + cube(size = [block_size * 8, block_size * 8 * char_count, 5], center = true); + } + } +} +*/ diff --git a/string-art-model/libraries/MCAD/bitmap/height_map.scad b/string-art-model/libraries/MCAD/bitmap/height_map.scad new file mode 100644 index 0000000..0b75f56 --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/height_map.scad @@ -0,0 +1,31 @@ +/* +Height Map Example +Tony Buser +http://tonybuser.com +http://creativecommons.org/licenses/by/3.0/ + +Can also dynamically run this by passing an array on the command line: + +/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD -m make -D bitmap=[2,2,2,0,1,3,2,2,2] -D row_size=3 -s height_map.stl height_map.scad +*/ + +use + +block_size = 5; +height = 5; + +row_size = 10; // 10x10 pixels +bitmap = [ + 1,1,0,0,1,1,0,0,1,1, + 1,1,1,1,1,1,1,1,1,1, + 0,1,2,2,1,1,2,2,1,0, + 0,1,2,1,1,1,1,2,1,0, + 1,1,1,1,3,3,1,1,1,1, + 1,1,1,1,3,3,1,1,1,1, + 0,1,2,1,1,1,1,2,1,0, + 0,1,2,2,1,1,2,2,1,0, + 1,1,1,1,1,1,1,1,1,1, + 1,1,0,0,1,1,0,0,1,1 +]; + +bitmap(bitmap, block_size, height, row_size); diff --git a/string-art-model/libraries/MCAD/bitmap/letter_necklace.scad b/string-art-model/libraries/MCAD/bitmap/letter_necklace.scad new file mode 100644 index 0000000..8d35781 --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/letter_necklace.scad @@ -0,0 +1,59 @@ +/* +Parametric letters for for a necklace +Elmo Mäntynen +LGPL 2.1 +*/ + +use + +// change chars array and char_count +// OpenSCAD has no string or length methods :( +chars = ["M","a","k","e","r","B","o","t"]; +char_count = 8; + +// block size 1 will result in 8mm per letter +block_size = 2; +// height is the Z height of each letter +height = 3; + +//Hole for the necklace +hole_diameter = 5; + +module 8bit_str(chars, char_count, block_size, height) { + echo(str("Total Width: ", block_size * 8 * char_count, "mm")); + union() { + for (count = [0:char_count-1]) { + translate(v = [0, count * block_size * 8, 0]) { + 8bit_char(chars[count], block_size, height); + } + } + } +} + +module letter(char, block_size, height, hole_diameter) { + union() { + translate(v = [0,0, hole_diameter*1.3]) { + 8bit_char(char, block_size, height); + } + translate(v = [0,0,(hole_diameter*1.3)/2]) { + color([0,0,1,1]) { + difference() { + cube(size = [block_size * 8, block_size * 8, hole_diameter+2], center = true); + rotate([90, 0, 0]) cylinder(h = block_size * 8 + 1, r = hole_diameter/2, center = true); + } + } + } + } +} + +matrix = [["O", "L", "E", "N", "S"], + [ "Y", "OE", "N", "Y", "T"]]; + +union() { + for (column = [0:1]) { + for (row = [0:4]) { + translate(v=[column*(block_size*1.1)*8, row*(block_size*1.1)*8, 0]) + letter(matrix[column][row], block_size, height, hole_diameter); + } + } +} diff --git a/string-art-model/libraries/MCAD/bitmap/name_tag.scad b/string-art-model/libraries/MCAD/bitmap/name_tag.scad new file mode 100644 index 0000000..4b392bb --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/name_tag.scad @@ -0,0 +1,36 @@ +/* +Parametric Name Tag +Tony Buser +http://tonybuser.com +http://creativecommons.org/licenses/by/3.0/ +*/ + +use + +/* + chars = chars array + block_size = letter size (block size 1 will result in 8mm per letter) + height = the Z height of each letter in mm + key_ring_hole = (boolean) Append a hole to a keyring, necklace etc. ? +*/ +module name_tag(chars = ["R", "E", "P", "R", "A", "P"], + block_size = 2, height = 3, key_ring_hole = true) { + char_count = len(chars); + union() { + translate(v = [0,-block_size*8*char_count/2+block_size*8/2,3]) { + 8bit_str(chars, char_count, block_size, height); + } + translate(v = [0,0,3/2]) { + color([0,0,1,1]) { + cube(size = [block_size * 8, block_size * 8 * char_count, 3], center = true); + } + } + if (key_ring_hole == true){ + translate([0, block_size * 8 * (char_count+1)/2, 3/2]) + difference(){ + cube(size = [block_size * 8, block_size * 8 , 3], center = true); + cube(size = [block_size * 4, block_size * 4 , 5], center = true); + } + } + } +} diff --git a/string-art-model/libraries/MCAD/bitmap/test_name_tag.scad b/string-art-model/libraries/MCAD/bitmap/test_name_tag.scad new file mode 100644 index 0000000..a3bcf40 --- /dev/null +++ b/string-art-model/libraries/MCAD/bitmap/test_name_tag.scad @@ -0,0 +1,19 @@ +include <../bitmap/name_tag.scad>; + +translate([0,0,0]) +name_tag("name_tag"); + +translate([20,0,0]) // 0 + 16/2 + 16/2 + 4 +name_tag("NAME_TAG"); + +translate([52,0,0]) // 20 + 16/2 + 40/2 + 4 +name_tag("name_tag", block_size=5); + +translate([96,0,0]) // 52 + 40/2 + 40/2 + 4 +name_tag("NAME_TAG", block_size=5); + +translate([130,0,0]) // 92 + 40/2 + 16/2 + 4 +name_tag("name_tag", height=30); + +translate([150,0,0]) // 130 + 16/2 + 16/2 + 4 +name_tag("NAME_TAG", height=30); diff --git a/string-art-model/libraries/MCAD/boxes.scad b/string-art-model/libraries/MCAD/boxes.scad new file mode 100644 index 0000000..8867477 --- /dev/null +++ b/string-art-model/libraries/MCAD/boxes.scad @@ -0,0 +1,46 @@ +// Library: boxes.scad +// Version: 1.0 +// Author: Marius Kintel +// Copyright: 2010 +// License: 2-clause BSD License (http://opensource.org/licenses/BSD-2-Clause) + +// +// roundedCube([x, y, z], r, sidesonly=true/false, center=true/false); +// roundedCube(x, r, sidesonly=true/false, center=true/false); + +// EXAMPLE USAGE: +// roundedCube([20, 30, 40], 5, true, true); + +// Only for backwards compatibility with existing scripts, (always centered, radius instead of consistent "r" naming. +module roundedBox(size, radius, sidesonly) +{ + echo("WARNING: roundedBox(size, radius, sidesonly) is deprecated, use roundedCube(size, r, sidesonly, center)"); + roundedCube(size, radius, sidesonly, true); +} + +// New implementation +module roundedCube(size, r, sidesonly, center) { + s = is_list(size) ? size : [size,size,size]; + translate(center ? -s/2 : [0,0,0]) { + if (sidesonly) { + hull() { + translate([ r, r]) cylinder(r=r, h=s[2]); + translate([ r,s[1]-r]) cylinder(r=r, h=s[2]); + translate([s[0]-r, r]) cylinder(r=r, h=s[2]); + translate([s[0]-r,s[1]-r]) cylinder(r=r, h=s[2]); + } + } + else { + hull() { + translate([ r, r, r]) sphere(r=r); + translate([ r, r,s[2]-r]) sphere(r=r); + translate([ r,s[1]-r, r]) sphere(r=r); + translate([ r,s[1]-r,s[2]-r]) sphere(r=r); + translate([s[0]-r, r, r]) sphere(r=r); + translate([s[0]-r, r,s[2]-r]) sphere(r=r); + translate([s[0]-r,s[1]-r, r]) sphere(r=r); + translate([s[0]-r,s[1]-r,s[2]-r]) sphere(r=r); + } + } + } +} diff --git a/string-art-model/libraries/MCAD/constants.scad b/string-art-model/libraries/MCAD/constants.scad new file mode 100644 index 0000000..fe1120b --- /dev/null +++ b/string-art-model/libraries/MCAD/constants.scad @@ -0,0 +1,9 @@ +// MIT license +// Author: Elmo Mäntynen + +TAU = 6.2831853071; //2*PI, see http://tauday.com/ +PI = TAU/2; + +// translates a imperial measurement in inches to meters +mm_per_inch = 25.4; + diff --git a/string-art-model/libraries/MCAD/curves.scad b/string-art-model/libraries/MCAD/curves.scad new file mode 100644 index 0000000..5ababc1 --- /dev/null +++ b/string-art-model/libraries/MCAD/curves.scad @@ -0,0 +1,21 @@ +// Parametric curves, to be used as paths +// Licensed under the MIT license. +// © 2010 by Elmo Mäntynen +use +include + + + +/* A circular helix of radius a and pitch 2πb is described by the following parametrisation: +x(t) = a*cos(t), +y(t) = a*sin(t), +z(t) = b*t +*/ + + +function b(pitch) = pitch/(TAU); +function t(pitch, z) = z/b(pitch); + +function helix_curve(pitch, radius, z) = + [radius*cos(deg(t(pitch, z))), radius*sin(deg(t(pitch, z))), z]; + diff --git a/string-art-model/libraries/MCAD/fonts.scad b/string-art-model/libraries/MCAD/fonts.scad new file mode 100644 index 0000000..770bc21 --- /dev/null +++ b/string-art-model/libraries/MCAD/fonts.scad @@ -0,0 +1,743 @@ +// Font Functions +// Encoding from http://en.wikipedia.org/wiki/ASCII +// Author: Andrew Plumb +// License: LGPL 2.1 + +module outline_2d(outline,points,paths,width=0.1,resolution=8) { + if(outline && resolution > 4) { + for(j=[0:len(paths)-1]) union() { + for(i=[1:len(paths[j])-1]) hull() { + translate(points[paths[j][i-1]]) circle($fn=resolution,r=width/2); + translate(points[paths[j][i]]) circle($fn=resolution,r=width/2); + } + hull() { + translate(points[paths[j][len(paths[j])-1]]) circle($fn=resolution,r=width/2); + translate(points[paths[j][0]]) circle($fn=resolution,r=width/2); + } + } + } else { + polygon(points=points,paths=paths); + } +} + +module bold_2d(bold,width=0.2,resolution=8) { + for(j=[0:$children-1]) { + if(bold) { + union() { + children(j); + for(i=[0:resolution-1]) { + dx=width*cos(360*i/resolution); + dy=width*sin(360*i/resolution); + translate([dx,dy]) children(j); + } + } + } else { + children(j); + } + } +} + +module polytext(charstring,size,font,line=0,justify=1,align=-1 + ,bold=false,bold_width=0.2,bold_resolution=8 + ,underline=false,underline_start=[0,0],underline_width=1.0 + ,outline=false,outline_width=0.2,outline_resolution=8 + ,strike=false,strike_start=[-0.5,0],strike_width=1.0 + ) { + line_length=len(charstring)*font[0][0]; + line_shift_x=-line_length/2+justify*line_length/2; + char_width=font[0][0]; + char_height=font[0][1]; + char_shift_height=-char_height/2-align*char_height/2; + char_thickness=font[0][2]; + char_index_map=search(charstring,font[2],1,1); + for(i=[0:len(char_index_map)-1]) { + thisCharIndex=char_index_map[i]; + x_pos=i*size+line_shift_x*size/char_width; + translate([x_pos,line*size+char_shift_height*size/char_height]) scale([size/char_width,size/char_height]) { + if(char_thickness==0) + bold_2d(bold,width=bold_width,resolution=bold_resolution) + outline_2d(outline,points=font[2][thisCharIndex][6][0],paths=font[2][thisCharIndex][6][1] + ,width=outline_width,resolution=outline_resolution); + if( charstring[i] != " " ) { + if(underline) translate(underline_start) + square(size=[char_width-2*underline_start[0],underline_width],center=false); + if(strike) translate([strike_start[0],char_height/2+strike_start[1]]) + square(size=[char_width-2*strike_start[0],strike_width],center=false); + } + if(char_thickness>0) + polyhedron(points=font[2][thisCharIndex][6][0],triangles=font[2][thisCharIndex][6][1]); + } + } +} + + +function 8bit_polyfont(dx=0.1,dy=0.1) = [ + [8,8,0,"fixed"],["Decimal Byte","Caret Notation","Character Escape Code","Abbreviation","Name","Bound Box","[points,paths]"] + ,[ + [ 0,"^@","\0","NUL","Null character",[[0,0],[8,8]],[]] + ,[ 1,"^A","", "SOH","Start of Header",[[0,0],[8,8]],[]] + ,[ 2,"^B","", "STX","Start of Text",[[0,0],[8,8]],[]] + ,[ 3,"^C","", "ETX","End of Text",[[0,0],[8,8]],[]] + ,[ 4,"^D","", "EOT","End of Transmission",[[0,0],[8,8]],[]] + ,[ 5,"^E","", "ENQ","Enquiry",[[0,0],[8,8]],[]] + ,[ 6,"^F","", "ACK","Acknowledgment",[[0,0],[8,8]],[]] + ,[ 7,"^G","\a","BEL","Bell",[[0,0],[8,8]],[]] + ,[ 8,"^H","\b","BS", "Backspace",[[0,0],[8,8]],[]] + ,[ 9,"^I","\t","HT", "Horizontal Tab",[[0,0],[8,8]],[]] + ,[ 10,"^J","\n","LF", "Line Feed",[[0,0],[8,8]],[]] + ,[ 11,"^K","\v","VT", "Vertical Tab",[[0,0],[8,8]],[]] + ,[ 12,"^L","\f","FF", "Form feed",[[0,0],[8,8]],[]] + ,[ 13,"^M","\r","CR", "Carriage return",[[0,0],[8,8]],[]] + ,[ 14,"^N","", "SO", "Shift Out",[[0,0],[8,8]],[]] + ,[ 15,"^O","", "SI", "Shift In",[[0,0],[8,8]],[]] + ,[ 16,"^P","", "DLE","Data Link Escape",[[0,0],[8,8]],[]] + ,[ 17,"^Q","", "DC1","Device Control 1",[[0,0],[8,8]],[]] + ,[ 18,"^R","", "DC2","Device Control 2",[[0,0],[8,8]],[]] + ,[ 19,"^S","", "DC3","Device Control 3",[[0,0],[8,8]],[]] + ,[ 20,"^T","", "DC4","Device Control 4",[[0,0],[8,8]],[]] + ,[ 21,"^U","", "NAK","Negative Acknowledgement",[[0,0],[8,8]],[]] + ,[ 22,"^V","", "SYN","Synchronous Idle",[[0,0],[8,8]],[]] + ,[ 23,"^W","", "ETB","End of Transmission Block",[[0,0],[8,8]],[]] + ,[ 24,"^X","", "CAN","Cancel",[[0,0],[8,8]],[]] + ,[ 25,"^Y","", "EM", "End of Medium",[[0,0],[8,8]],[]] + ,[ 26,"^Z","", "SUB","Substitute",[[0,0],[8,8]],[]] + ,[ 27,"^[","\e","ESC","Escape",[[0,0],[8,8]],[]] + ,[ 28,"^\\","", "FS", "File Separator",[[0,0],[8,8]],[]] + ,[ 29,"^]","", "GS", "Group Separator",[[0,0],[8,8]],[]] + ,[ 30,"^^","", "RS", "Record Separator",[[0,0],[8,8]],[]] + ,[ 31,"^_","", "US", "Unit Separator",[[0,0],[8,8]],[]] + ,[ 32," "," ", "", "Space",[[0,0],[2,8]],[]] + ,[ 33,"!","!", "", "",[[0,0],[8,8]],[ + [[3,1],[3,2],[5,2],[5,1] + ,[3,3],[3,7],[5,7],[5,3]] + ,[[0,1,2,3],[4,5,6,7]] + ]] + ,[ 34,"\"","\"","", "",[[0,0],[8,8]],[ + [[1,4],[1,7],[3,7],[3,4] + ,[5,4],[5,7],[7,7],[7,4]] + ,[[0,1,2,3],[4,5,6,7]] + ]] + ,[ 35,"#","#", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[0,2],[0,3],[1,3],[1,5],[0,5],[0,6],[1,6],[1,7],[3,7],[3,6],[5,6],[5,7],[7,7] + ,[7,6],[8,6],[8,5],[7,5],[7,3],[8,3],[8,2],[7,2],[7,1],[5,1],[5,2],[3,2],[3,1] + ,[3,3],[3,5],[5,5],[5,3]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27],[28,29,30,31]] + ]] + ,[ 36,"$","$", "", "",[[0,0],[8,8]],[ + [[3,1],[3,2],[1,2],[1,3],[5,3],[5,4],[2,4],[2,5],[1,5],[1,6],[2,6],[2,7],[3,7],[3,8],[5,8],[5,7],[7,7],[7,6] + ,[3,6],[3,5],[6,5],[6,4],[7,4],[7,3],[6,3],[6,2],[5,2],[5,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[ 37,"%","%", "", "",[[0,0],[8,8]],[ + [[1,1],[1,3],[2,3],[2,5],[1,5],[1,7],[3,7],[3,5],[4,5],[4,6],[5,6],[5,7],[7,7] + ,[7,6],[6,6],[6,5],[5,5],[5,4],[4,4],[4,3],[3,3],[3,2],[2,2],[2,1] + ,[5,1],[5,3],[7,3],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],[24,25,26,27]] + ]] + ,[ 38,"&","&", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,4],[2,4],[2,5],[3,5],[3,6],[2,6],[2,7],[3,7],[3,8],[6,8],[6,7],[7,7],[7,6],[6,6],[6,5],[5,5],[5,4] + ,[8,4],[8,3],[7,3],[7,2],[8,2],[8,1],[6,1],[6,2],[5,2],[5,1] + ,[3,2],[3,4],[4,4],[4,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],[30,31,32,33]] + ]] + ,[ 39,"'","'", "", "",[[0,0],[8,8]],[ + [[3,4],[3,7],[5,7],[5,4]] + ,[[0,1,2,3]] + ]] + ,[ 40,"(","(", "", "",[[0,0],[8,8]],[ + [[3,1],[3,2],[2,2],[2,6],[3,6],[3,7],[6,7],[6,6],[5,6],[5,5],[4,5],[4,3],[5,3],[5,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[ 41,")",")", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[3,2],[3,3],[4,3],[4,5],[3,5],[3,6],[2,6],[2,7],[5,7],[5,6],[6,6],[6,2],[5,2],[5,1],[4,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]] + ]] + ,[ 42,"*","*", "", "",[[0,0],[8,8]],[ + [[1,2],[1,3],[2,3],[2,4],[0,4],[0,5],[2,5],[2,6],[1,6],[1,7],[3,7],[3,6],[5,6],[5,7],[7,7],[7,6],[6,6] + ,[6,5],[8,5],[8,4],[6,4],[6,3],[7,3],[7,2],[5,2],[5,3],[3,3],[3,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[ 43,"+","+", "", "",[[0,0],[8,8]],[ + [[3,1],[3,3],[1,3],[1,5],[3,5],[3,7],[5,7],[5,5],[7,5],[7,3],[5,3],[5,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[ 44,",",",", "", "",[[0,0],[8,8]],[ + [[2,0],[2,1],[3,1],[3,3],[5,3],[5,1],[4,1],[4,0]] + ,[[0,1,2,3,4,5,6,7]] + ]] + ,[ 45,"-","-", "", "",[[0,0],[8,8]],[ + [[1,3],[1,5],[7,5],[7,3]] + ,[[0,1,2,3]] + ]] + ,[ 46,".",".", "", "",[[0,0],[8,8]],[ + [[3,1],[3,3],[5,3],[5,1]] + ,[[0,1,2,3]] + ]] + ,[ 47,"/","/", "", "",[[0,0],[8,8]],[ + [[1,1],[1,3],[2,3],[2,4],[3,4],[3,5],[4,5],[4,6],[5,6],[5,7],[7,7],[7,6],[6,6],[6,5],[5,5],[5,4],[4,4],[4,3],[3,3],[3,2],[2,2],[2,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]] + ]] + ,[ 48,"0","0", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,2],[6,2],[6,1] + ,[3,2],[3,3],[5,3],[5,2] + ,[3,4],[3,6],[5,6],[5,5],[4,5],[4,4]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11],[12,13,14,15],[16,17,18,19,20,21]] + ]] + ,[ 49,"1","1", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[3,2],[3,5],[2,5],[2,6],[3,6],[3,7],[5,7],[5,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[ 50,"2","2", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[2,2],[2,3],[3,3],[3,4],[4,4],[4,5],[5,5],[5,6],[3,6],[3,5],[1,5],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,5],[6,5],[6,4],[5,4],[5,3],[4,3],[4,2],[3,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]] + ]] + ,[ 51,"3","3", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,3],[3,3],[3,2],[5,2],[5,3],[4,3],[4,4],[3,4],[3,5],[4,5],[4,6],[1,6],[1,7],[7,7],[7,6],[6,6],[6,5],[5,5],[5,4],[6,4],[6,3],[7,3],[7,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[ 52,"4","4", "", "",[[0,0],[8,8]],[ + [[4,1],[4,2],[1,2],[1,4],[2,4],[2,5],[3,5],[3,6],[4,6],[4,7],[6,7],[6,3],[7,3],[7,2],[6,2],[6,1] + ,[3,3],[3,4],[4,4],[4,3]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[16,17,18,19]] + ]] + ,[ 53,"5","5", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,3],[3,3],[3,2],[5,2],[5,4],[1,4],[1,7],[7,7],[7,6],[3,6],[3,5],[6,5],[6,4],[7,4],[7,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[ 54,"6","6", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[6,7],[6,6],[3,6],[3,5],[6,5],[6,4],[7,4],[7,2],[6,2],[6,1] + ,[3,2],[3,4],[5,4],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[16,17,18,19]] + ]] + ,[ 55,"7","7", "", "",[[0,0],[8,8]],[ + [[2,1],[2,3],[3,3],[3,4],[4,4],[4,5],[5,5],[5,6],[1,6],[1,7],[7,7],[7,5],[6,5],[6,4],[5,4],[5,3],[4,3],[4,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]] + ]] + ,[ 56,"8","8", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,4],[2,4],[2,5],[1,5],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,5],[6,5],[6,4],[7,4],[7,2],[6,2],[6,1] + ,[3,2],[3,4],[5,4],[5,2] + ,[3,5],[3,6],[5,6],[5,5]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],[20,21,22,23],[24,25,26,27]] + ]] + ,[ 57,"9","9", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[4,2],[4,3],[5,3],[5,4],[2,4],[2,5],[1,5],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,3],[6,3],[6,2],[5,2],[5,1] + ,[3,5],[3,6],[5,6],[5,5]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],[20,21,22,23]] + ]] + ,[ 58,":",":", "", "",[[0,0],[8,8]],[ + [[3,1],[3,3],[5,3],[5,1] + ,[3,4],[3,6],[5,6],[5,4]] + ,[[0,1,2,3],[4,5,6,7]] + ]] + ,[ 59,";",";", "", "",[[0,0],[8,8]],[ + [[2,0],[2,1],[3,1],[3,3],[5,3],[5,1],[4,1],[4,0] + ,[3,4],[3,6],[5,6],[5,4]] + ,[[0,1,2,3,4,5,6,7],[8,9,10,11]] + ]] + ,[ 60,"<","<", "", "",[[0,0],[8,8]],[ + [[5,1],[5,2],[4,2],[4,3],[3,3],[3,4],[2,4],[2,5],[3,5],[3,6],[4,6],[4,7],[5,7],[5,8],[7,8],[7,7],[6,7],[6,6],[5,6],[5,5],[4,5],[4,4],[5,4],[5,3],[6,3],[6,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[ 61,"=","=", "", "",[[0,0],[8,8]],[ + [[1,2],[1,3],[7,3],[7,2] + ,[1,5],[1,6],[7,6],[7,5]] + ,[[0,1,2,3],[4,5,6,7]] + ]] + ,[ 62,">",">", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[2,2],[2,3],[3,3],[3,4],[4,4],[4,5],[3,5],[3,6],[2,6],[2,7],[1,7],[1,8],[3,8],[3,7],[4,7],[4,6],[5,6],[5,5],[6,5],[6,4],[5,4],[5,3],[4,3],[4,2],[3,2],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[ 63,"?","?", "", "",[[0,0],[8,8]],[ + [[3,1],[3,2],[5,2],[5,1] + ,[3,3],[3,4],[4,4],[4,5],[5,5],[5,6],[3,6],[3,5],[1,5],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,5],[6,5],[6,4],[5,4],[5,3]] + ,[[0,1,2,3],[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]] + ]] + ,[ 64,"@","@", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,3],[4,3],[4,5],[5,5],[5,6],[3,6],[3,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]] + ]] + ,[ 65,"A","A", "", "",[[0,0],[8,8]],[ + [[1,1],[1,5],[2,5],[2,6],[3,6],[3,7],[5,7],[5,6],[6,6],[6,5],[7,5],[7,1],[5,1],[5,2],[3,2],[3,1] + ,[3,3],[3,5],[5,5],[5,3]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[16,17,18,19]] + ]] + ,[ 66,"B","B", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[6,7],[6,6],[7,6],[7,5],[6,5],[6,4],[7,4],[7,2],[6,2],[6,1] + ,[3,5],[3,6],[5,6],[5,5] + ,[3,2],[3,4],[5,4],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11],[12,13,14,15],[16,17,18,19]] + ]] + ,[ 67,"C","C", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,5],[5,5],[5,6],[3,6],[3,2],[5,2],[5,3],[7,3],[7,2],[6,2],[6,1]] ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[ 68,"D","D", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[5,7],[5,6],[6,6],[6,5],[7,5],[7,3],[6,3],[6,2],[5,2],[5,1] + ,[3,2],[3,6],[4,6],[4,5],[5,5],[5,3],[4,3],[4,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11],[12,13,14,15,16,17,18,19]] + ]] + ,[ 69,"E","E", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[7,7],[7,6],[3,6],[3,5],[6,5],[6,4],[3,4],[3,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[ 70,"F","F", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[7,7],[7,6],[3,6],[3,5],[6,5],[6,4],[3,4],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9]] + ]] + ,[ 71,"G","G", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[7,7],[7,6],[3,6],[3,2],[5,2],[5,3],[4,3],[4,4],[7,4],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[ 72,"H","H", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,5],[5,5],[5,7],[7,7],[7,1],[5,1],[5,4],[3,4],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[ 73,"I","I", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[3,2],[3,6],[1,6],[1,7],[7,7],[7,6],[5,6],[5,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[ 74,"J","J", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,3],[3,3],[3,2],[5,2],[5,6],[4,6],[4,7],[7,7],[7,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13]] + ]] + ,[ 75,"K","K", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,5],[4,5],[4,6],[5,6],[5,7],[7,7],[7,6],[6,6],[6,5],[5,5],[5,3],[6,3],[6,2],[7,2],[7,1],[5,1],[5,2],[4,2],[4,3],[3,3],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]] + ]] + ,[ 76,"L","L", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5]] + ]] + ,[ 77,"M","M", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,6],[4,6],[4,5],[5,5],[5,6],[6,6],[6,7],[8,7],[8,1],[6,1],[6,4],[5,4],[5,3],[4,3],[4,4],[3,4],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[ 78,"N","N", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,6],[4,6],[4,5],[5,5],[5,7],[7,7],[7,1],[5,1],[5,2],[4,2],[4,3],[3,3],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[ 79,"O","O", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,2],[6,2],[6,1] + ,[3,2],[3,6],[5,6],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11],[12,13,14,15]] + ]] + ,[ 80,"P","P", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[6,7],[6,6],[7,6],[7,4],[6,4],[6,3],[3,3],[3,1] + ,[3,4],[3,6],[5,6],[5,4]] + ,[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13]] + ]] + ,[ 81,"Q","Q", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[2,6],[2,7],[6,7],[6,6],[7,6],[7,3],[6,3],[6,2],[7,2],[7,1],[5,1],[5,2],[4,2],[4,1] + ,[3,3],[3,6],[5,6],[5,3]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],[18,19,20,21]] + ]] + ,[ 82,"R","R", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[6,7],[6,6],[7,6],[7,4],[6,4],[6,2],[7,2],[7,1],[5,1],[5,2],[4,2],[4,3],[3,3],[3,1] + ,[3,4],[3,6],[5,6],[5,4]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[16,17,18,19]] + ]] + ,[ 83,"S","S", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[5,2],[5,4],[2,4],[2,5],[1,5],[1,6],[2,6],[2,7],[6,7],[6,6],[3,6],[3,5],[6,5],[6,4],[7,4],[7,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[ 84,"T","T", "", "",[[0,0],[8,8]],[ + [[3,1],[3,6],[1,6],[1,7],[7,7],[7,6],[5,6],[5,1]] + ,[[0,1,2,3,4,5,6,7]] + ]] + ,[ 85,"U","U", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,2],[5,2],[5,7],[7,7],[7,1]] + ,[[0,1,2,3,4,5,6,7]] + ]] + ,[ 86,"V","V", "", "",[[0,0],[8,8]],[ + [[3,1],[3,2],[2,2],[2,3],[1,3],[1,7],[3,7],[3,3],[5,3],[5,7],[7,7],[7,3],[6,3],[6,2],[5,2],[5,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[ 87,"W","W", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,4],[4,4],[4,5],[5,5],[5,4],[6,4],[6,7],[8,7],[8,1],[6,1],[6,2],[5,2],[5,3],[4,3],[4,2],[3,2],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[ 88,"X","X", "", "",[[0,0],[8,8]],[ + [[1,1],[1,3],[2,3],[2,5],[1,5],[1,7],[3,7],[3,5],[5,5],[5,7],[7,7],[7,5],[6,5],[6,3],[7,3],[7,1],[5,1],[5,3],[3,3],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[ 89,"Y","Y", "", "",[[0,0],[8,8]],[ + [[3,1],[3,4],[2,4],[2,5],[1,5],[1,7],[3,7],[3,5],[5,5],[5,7],[7,7],[7,5],[6,5],[6,4],[5,4],[5,1],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]] + ]] + ,[ 90,"Z","Z", "", "",[[0,0],[8,8]],[ + [[1,1],[1,3],[2,3],[2,4],[3,4],[3,5],[4,5],[4,6],[1,6],[1,7],[7,7],[7,6],[6,6],[6,5],[5,5],[5,4],[4,4],[4,3],[3,3],[3,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]] + ]] + ,[ 91,"[","[", "", "",[[0,0],[8,8]],[ // ] ] + [[2,1],[2,7],[6,7],[6,6],[4,6],[4,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7]] + ]] + ,[ 92,"\\","\\","", "",[[0,0],[8,8]],[ + [[6,1],[6,2],[5,2],[5,3],[4,3],[4,4],[3,4],[3,5],[2,5],[2,6],[1,6],[1,7],[3,7],[3,6],[4,6],[4,5],[5,5],[5,4],[6,4],[6,3],[7,3],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]] + ]] + ,[ 93,"]","]", "", "",[[0,0],[8,8]],[ // [ [ + [[2,1],[2,2],[4,2],[4,6],[2,6],[2,7],[6,7],[6,1]] + ,[[0,1,2,3,4,5,6,7]] + ]] + ,[ 94,"^","^", "", "",[[0,0],[8,8]],[ + [[2,4],[2,5] + ,[3-dx,5],[3,5+dy] + ,[3,6] + ,[4-dx,6],[4,6+dy] + ,[4,7],[5,7] + ,[5,6+dy],[5+dx,6] + ,[6,6] + ,[6,5+dy],[6+dx,5] + ,[7,5],[7,4],[6,4] + ,[6,5-dy],[6-dx,5] + ,[5,5] + ,[5,6-dy],[5-dx,6],[4+dx,6],[4,6-dy] + ,[4,5] + ,[3+dx,5],[3,5-dy] + ,[3,4]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[ 95,"_","_", "", "",[[0,0],[8,8]],[ + [[0,0],[0,1],[8,1],[8,0]] + ,[[0,1,2,3]] + ]] + ,[ 96,"`","`", "", "",[[0,0],[8,8]],[ + [[2,6],[2,7],[3,7] + ,[3,6+dy],[3+dx,6] + ,[4,6] + ,[4,5+dy],[4+dx,5] + ,[5,5],[5,4],[4,4] + ,[4,5-dy],[4-dx,5] + ,[3,5] + ,[3,6-dy],[3-dx,6]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[ 97,"a","a", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,3],[2,3],[2,4],[5,4],[5,5],[2,5],[2,6],[6,6],[6,5],[7,5],[7,1] + ,[3,2],[3,3],[5,3],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13],[14,15,16,17]] + ]] + ,[ 98,"b","b", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,5],[6,5],[6,4],[7,4],[7,2],[6,2],[6,1] + ,[3,2],[3,4],[5,4],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13]] + ]] + ,[ 99,"c","c", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,5],[2,5],[2,6],[6,6],[6,5],[3,5],[3,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[100,"d","d", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,4],[2,4],[2,5],[5,5],[5,7],[7,7],[7,1] + ,[3,2],[3,4],[5,4],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13]] + ]] + ,[101,"e","e", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,5],[2,5],[2,6],[6,6],[6,5],[7,5],[7,3],[3,3],[3,2],[6,2],[6,1] + ,[3,4],[3,5],[5,5],[5,4]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13],[14,15,16,17]] + ]] + ,[102,"f","f", "", "",[[0,0],[8,8]],[ + [[3,1],[3,4],[2,4],[2,5],[3,5],[3,6],[4,6],[4,7],[7,7],[7,6],[5,6],[5,5],[7,5],[7,4],[5,4],[5,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[103,"g","g", "", "",[[0,0],[8,8]],[ + [[1,0],[1,1],[5,1],[5,2],[2,2],[2,3],[1,3],[1,5],[2,5],[2,6],[6,6],[6,5],[7,5],[7,1],[6,1],[6,0] + ,[3,3],[3,5],[5,5],[5,3]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[16,17,18,19]] + ]] + ,[104,"h","h", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,5],[6,5],[6,4],[7,4],[7,1],[5,1],[5,4],[3,4],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11]] + ]] + ,[105,"i","i", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[3,2],[3,4],[2,4],[2,5],[5,5],[5,2],[6,2],[6,1] + ,[3,6],[3,7],[5,7],[5,6]] + ,[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13]] + ]] + ,[106,"j","j", "", "",[[0,0],[8,8]],[ + [[2,0],[2,1],[5,1],[5,5],[7,5],[7,1],[6,1],[6,0] + ,[5,6],[5,7],[7,7],[7,6]] + ,[[0,1,2,3,4,5,6,7],[8,9,10,11]] + ]] + ,[107,"k","k", "", "",[[0,0],[8,8]],[ + [[1,1],[1,7],[3,7],[3,4],[4,4],[4,5],[6,5],[6,4],[5,4],[5,3],[6,3],[6,2],[7,2],[7,1],[5,1],[5,2],[4,2],[4,3],[3,3],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[108,"l","l", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[3,2],[3,6],[2,6],[2,7],[5,7],[5,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9]] + ]] + ,[109,"m","m", "", "",[[0,0],[8,8]],[ + [[1,1],[1,6],[3,6],[3,5],[5,5],[5,6],[7,6],[7,5],[8,5],[8,1],[6,1],[6,3],[5,3],[5,2],[4,2],[4,3],[3,3],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]] + ]] + ,[110,"n","n", "", "",[[0,0],[8,8]],[ + [[1,1],[1,6],[6,6],[6,5],[7,5],[7,1],[5,1],[5,5],[3,5],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9]] + ]] + ,[111,"o","o", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,5],[2,5],[2,6],[6,6],[6,5],[7,5],[7,2],[6,2],[6,1] + ,[3,2],[3,5],[5,5],[5,2]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11],[12,13,14,15]] + ]] + ,[112,"p","p", "", "",[[0,0],[8,8]],[ + [[1,0],[1,6],[6,6],[6,5],[7,5],[7,3],[6,3],[6,2],[3,2],[3,0] + ,[3,3],[3,5],[5,5],[5,3]] + ,[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13]] + ]] + ,[113,"q","q", "", "",[[0,0],[8,8]],[ + [[5,0],[5,2],[2,2],[2,3],[1,3],[1,5],[2,5],[2,6],[7,6],[7,0] + ,[3,3],[3,5],[5,5],[5,3]] + ,[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13]] + ]] + ,[114,"r","r", "", "",[[0,0],[8,8]],[ + [[1,1],[1,6],[6,6],[6,5],[7,5],[7,4],[5,4],[5,5],[3,5],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9]] + ]] + ,[115,"s","s", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[5,2],[5,3],[2,3],[2,4],[1,4],[1,5],[2,5],[2,6],[7,6],[7,5],[3,5],[3,4],[6,4],[6,3],[7,3],[7,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[116,"t","t", "", "",[[0,0],[8,8]],[ + [[4,1],[4,2],[3,2],[3,5],[1,5],[1,6],[3,6],[3,7],[5,7],[5,6],[7,6],[7,5],[5,5],[5,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[117,"u","u", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[1,2],[1,6],[3,6],[3,2],[5,2],[5,6],[7,6],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9]] + ]] + ,[118,"v","v", "", "",[[0,0],[8,8]],[ + [[3,1],[3,2],[2,2],[2,3],[1,3],[1,6],[3,6],[3,3],[5,3],[5,6],[7,6],[7,3],[6,3],[6,2],[5,2],[5,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]] + ]] + ,[119,"w","w", "", "",[[0,0],[8,8]],[ + [[2,1],[2,3],[1,3],[1,6],[3,6],[3,4],[4,4],[4,5],[5,5],[5,4],[6,4],[6,6],[8,6],[8,3],[7,3],[7,1],[5,1],[5,2],[4,2],[4,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[120,"x","x", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[2,2],[2,3],[3,3],[3,4],[2,4],[2,5],[1,5],[1,6],[3,6],[3,5],[5,5],[5,6],[7,6],[7,5],[6,5],[6,4],[5,4],[5,3],[6,3],[6,2],[7,2],[7,1],[5,1],[5,2],[3,2],[3,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]] + ]] + ,[121,"y","y", "", "",[[0,0],[8,8]],[ + [[1,0],[1,1],[4,1],[4,2],[2,2],[2,3],[1,3],[1,6],[3,6],[3,3],[5,3],[5,6],[7,6],[7,2],[6,2],[6,1],[5,1],[5,0]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]] + ]] + ,[122,"z","z", "", "",[[0,0],[8,8]],[ + [[1,1],[1,2],[2,2],[2,3],[3,3],[3,4],[4,4],[4,5],[1,5],[1,6],[7,6],[7,5],[6,5],[6,4],[5,4],[5,3],[4,3],[4,2],[7,2],[7,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[123,"{","{", "", "",[[0,0],[8,8]],[ + [[4,1],[4,2],[3,2],[3,4],[2,4],[2,5],[3,5],[3,7],[4,7],[4,8],[6,8],[6,7],[5,7],[5,5],[4,5],[4,4],[5,4],[5,2],[6,2],[6,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[124,"|","|", "", "",[[0,0],[8,8]],[ + [[3,0],[3,8],[5,8],[5,0]] + ,[[0,1,2,3]] + ]] + ,[125,"}","}", "", "",[[0,0],[8,8]],[ + [[2,1],[2,2],[3,2],[3,4],[4,4],[4,5],[3,5],[3,7],[2,7],[2,8],[4,8],[4,7],[5,7],[5,5],[6,5],[6,4],[5,4],[5,2],[4,2],[4,1]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[126,"~","~", "", "",[[0,0],[8,8]],[ + [[2,5],[2,6] + ,[3-dx,6],[3,6+dy] + ,[3,7],[5,7],[5,6] + ,[6-dx,6],[6,6+dy] + ,[6,7],[7,7],[7,6] + ,[6+dx,6],[6,6-dy] + ,[6,5],[4,5],[4,6] + ,[3+dx,6],[3,6-dy] + ,[3,5]] + ,[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]] + ]] + ,[127,"^?","", "DEL","Delete",[[0,0],[8,8]],[]] + ] ]; + +// From http://www.brailleauthority.org/sizespacingofbraille/ +// +// Section 3.2 of Specification 800 (Braille Books and Pamphlets) February 2008 reads as follows: +// Size and Spacing +// 3.2.1 The nominal height of braille dots shall be 0.019 inches [0.48 mm] and shall be uniform within any given transcription. +// 3.2.2 The nominal base diameter of braille dots shall be 0.057 inches [1.44 mm]. +// 3.2.3 Cell spacing of dots shall conform to the following: +// 3.2.3.1 The nominal distance from center to center of adjacent dots (horizontally or vertically, but not diagonally) +// in the same cell shall be 0.092 inches [2.340 mm]. +// 3.2.3.2 The nominal distance from center to center of corresponding dots in adjacent cells shall be 0.245 inches [6.2 mm]. +// 3.2.4 The nominal line spacing of braille cells from center to center of nearest corresponding dots in adjacent lines shall +// be 0.400 inches [1.000 cm]. +// +// Additional References: +// http://www.loc.gov/nls/specs/800.pdf +// http://www.tiresias.org/research/reports/braille_cell.htm +module braille_ascii_spec800(inString,dot_backing=true,cell_backing=false,justify=1,align=-1,dot_h=0.48,dot_d=1.44,dot_spacing=2.340,cell_d2d_spacing=6.2, line_d2d_spacing=10.0, echo_translate=true) { + // justify: + // -1 : left side + // 0 : center + // 1 : right side (default) + // align: + // -1 : bottom braille cell edge - shift up (default) + // 0 : center braille cell + // 1 : top braille cell edge - shift down + thisFont=braille_ascii_font(dot_h=dot_h,dot_d=dot_d,dot_spacing=dot_spacing + ,cell_d2d_spacing=cell_d2d_spacing,line_d2d_spacing=line_d2d_spacing); + x_shift=thisFont[0][0]; + y_shift=thisFont[0][1]; + theseIndicies=search(inString,thisFont[2],1,1); + for( i=[0:len(theseIndicies)-1]) translate([i*x_shift-(1-justify)*x_shift*len(theseIndicies)/2,-y_shift*(align+1)/2]) { + dotPattern=thisFont[2][theseIndicies[i]][6]; + if(dot_backing) translate([cell_d2d_spacing/2-dot_spacing/2-dot_d/2,line_d2d_spacing/2-dot_spacing-dot_d/2,-dot_h]) + cube(size=[dot_spacing+dot_d,2*dot_spacing+dot_d,dot_h],center=false); + if(cell_backing) translate([0,0,-dot_h]) + cube(size=[x_shift,y_shift,dot_h],center=false); + if(echo_translate) echo(str(inString[i]," maps to '",thisFont[2][theseIndicies[i]][4],"'")); + for(dotIndex=dotPattern) { + translate([cell_d2d_spacing/2-dot_spacing/2+floor((dotIndex-1)/3)*dot_spacing + , line_d2d_spacing/2-dot_spacing+(2-(dotIndex-1)%3)*dot_spacing]) + scale([dot_d,dot_d,2*dot_h]) sphere($fn=8,r=0.5); + } + } +} + +// Encoding from http://en.wikipedia.org/wiki/Braille_ASCII +// Dot Pattern: +// 1 4 +// 2 5 +// 3 6 +function braille_ascii_font(dot_h=0.48,dot_d=1.44,dot_spacing=2.340,cell_d2d_spacing=6.2,line_d2d_spacing=10.0) = [ + [cell_d2d_spacing,line_d2d_spacing,0,"bump"],["Decimal Byte","Caret Notation","Character Escape Code","Abbreviation","Name","Bound Box","[bump_list]"] + ,[ + [ 0,"^@","\0","NUL","Null character",[[0,0],[2,3]],[]] + ,[ 1,"^A","", "SOH","Start of Header",[[0,0],[2,3]],[]] + ,[ 2,"^B","", "STX","Start of Text",[[0,0],[2,3]],[]] + ,[ 3,"^C","", "ETX","End of Text",[[0,0],[2,3]],[]] + ,[ 4,"^D","", "EOT","End of Transmission",[[0,0],[2,3]],[]] + ,[ 5,"^E","", "ENQ","Enquiry",[[0,0],[2,3]],[]] + ,[ 6,"^F","", "ACK","Acknowledgment",[[0,0],[2,3]],[]] + ,[ 7,"^G","\a","BEL","Bell",[[0,0],[2,3]],[]] + ,[ 8,"^H","\b","BS", "Backspace",[[0,0],[2,3]],[]] + ,[ 9,"^I","\t","HT", "Horizontal Tab",[[0,0],[2,3]],[]] + ,[ 10,"^J","\n","LF", "Line Feed",[[0,0],[2,3]],[]] + ,[ 11,"^K","\v","VT", "Vertical Tab",[[0,0],[2,3]],[]] + ,[ 12,"^L","\f","FF", "Form feed",[[0,0],[2,3]],[]] + ,[ 13,"^M","\r","CR", "Carriage return",[[0,0],[2,3]],[]] + ,[ 14,"^N","", "SO", "Shift Out",[[0,0],[2,3]],[]] + ,[ 15,"^O","", "SI", "Shift In",[[0,0],[2,3]],[]] + ,[ 16,"^P","", "DLE","Data Link Escape",[[0,0],[2,3]],[]] + ,[ 17,"^Q","", "DC1","Device Control 1",[[0,0],[2,3]],[]] + ,[ 18,"^R","", "DC2","Device Control 2",[[0,0],[2,3]],[]] + ,[ 19,"^S","", "DC3","Device Control 3",[[0,0],[2,3]],[]] + ,[ 20,"^T","", "DC4","Device Control 4",[[0,0],[2,3]],[]] + ,[ 21,"^U","", "NAK","Negative Acknowledgement",[[0,0],[2,3]],[]] + ,[ 22,"^V","", "SYN","Synchronous Idle",[[0,0],[2,3]],[]] + ,[ 23,"^W","", "ETB","End of Transmission Block",[[0,0],[2,3]],[]] + ,[ 24,"^X","", "CAN","Cancel",[[0,0],[2,3]],[]] + ,[ 25,"^Y","", "EM", "End of Medium",[[0,0],[2,3]],[]] + ,[ 26,"^Z","", "SUB","Substitute",[[0,0],[2,3]],[]] + ,[ 27,"^[","\e","ESC","Escape",[[0,0],[2,3]],[]] + ,[ 28,"^\\","", "FS", "File Separator",[[0,0],[2,3]],[]] + ,[ 29,"^]","", "GS", "Group Separator",[[0,0],[2,3]],[]] + ,[ 30,"^^","", "RS", "Record Separator",[[0,0],[2,3]],[]] + ,[ 31,"^_","", "US", "Unit Separator",[[0,0],[2,3]],[]] + ,[ 32," "," ", "", "Space",[[0,0],[2,3]],[]] + ,[ 33,"!","!", "", "the",[[0,0],[2,3]],[ 2,3,4,6 ]] + ,[ 34,"\"","\"","", "(contraction)",[[0,0],[2,3]],[ 5 ]] + ,[ 35,"#","#", "", "(number prefix)",[[0,0],[2,3]],[ 3,4,5,6 ]] + ,[ 36,"$","$", "", "ed",[[0,0],[2,3]],[ 1,2,4,6 ]] + ,[ 37,"%","%", "", "sh",[[0,0],[2,3]],[ 1,4,6 ]] + ,[ 38,"&","&", "", "and",[[0,0],[2,3]],[ 1,2,3,4,6 ]] + ,[ 39,"'","'", "", "",[[0,0],[2,3]],[ 3 ]] + ,[ 40,"(","(", "", "of",[[0,0],[2,3]],[ 1,2,3,5,6 ]] + ,[ 41,")",")", "", "with",[[0,0],[2,3]],[ 2,3,4,5,6 ]] + ,[ 42,"*","*", "", "ch",[[0,0],[2,3]],[ 1,6 ]] + ,[ 43,"+","+", "", "ing",[[0,0],[2,3]],[ 3,4,6 ]] + ,[ 44,",",",", "", "(uppercase prefix)",[[0,0],[2,3]],[ 6 ]] + ,[ 45,"-","-", "", "",[[0,0],[2,3]],[ 3,6 ]] + ,[ 46,".",".", "", "(italic prefix)",[[0,0],[2,3]],[ 4,6 ]] + ,[ 47,"/","/", "", "st",[[0,0],[2,3]],[ 3,4 ]] + ,[ 48,"0","0", "", "\"",[[0,0],[2,3]],[ 3,5,6 ]] + ,[ 49,"1","1", "", ",",[[0,0],[2,3]],[ 2 ]] + ,[ 50,"2","2", "", ";",[[0,0],[2,3]],[ 2,3 ]] + ,[ 51,"3","3", "", ":",[[0,0],[2,3]],[ 2,5 ]] + ,[ 52,"4","4", "", ".",[[0,0],[2,3]],[ 2,5,6 ]] + ,[ 53,"5","5", "", "en",[[0,0],[2,3]],[ 2,6 ]] + ,[ 54,"6","6", "", "!",[[0,0],[2,3]],[ 2,3,5 ]] + ,[ 55,"7","7", "", "( or )",[[0,0],[2,3]],[ 2,3,5,6 ]] + ,[ 56,"8","8", "", "\" or ?",[[0,0],[2,3]],[ 2,3,6 ]] + ,[ 57,"9","9", "", "in",[[0,0],[2,3]],[ 3,5 ]] + ,[ 58,":",":", "", "wh",[[0,0],[2,3]],[ 1,5,6 ]] + ,[ 59,";",";", "", "(letter prefix)",[[0,0],[2,3]],[ 5,6 ]] + ,[ 60,"<","<", "", "gh",[[0,0],[2,3]],[ 1,2,6 ]] + ,[ 61,"=","=", "", "for",[[0,0],[2,3]],[ 1,2,3,4,5,6 ]] + ,[ 62,">",">", "", "ar",[[0,0],[2,3]],[ 3,4,5 ]] + ,[ 63,"?","?", "", "th",[[0,0],[2,3]],[ 1,4,5,6 ]] + ,[ 64,"@","@", "", "(accent prefix)",[[0,0],[2,3]],[ 4 ]] + ,[ 65,"A","A", "", "a",[[0,0],[2,3]],[ 1 ]] + ,[ 66,"B","B", "", "b",[[0,0],[2,3]],[ 1,2 ]] + ,[ 67,"C","C", "", "c",[[0,0],[2,3]],[ 1,4 ]] + ,[ 68,"D","D", "", "d",[[0,0],[2,3]],[ 1,4,5 ]] + ,[ 69,"E","E", "", "e",[[0,0],[2,3]],[ 1,5 ]] + ,[ 70,"F","F", "", "f",[[0,0],[2,3]],[ 1,2,4 ]] + ,[ 71,"G","G", "", "g",[[0,0],[2,3]],[ 1,2,4,5 ]] + ,[ 72,"H","H", "", "h",[[0,0],[2,3]],[ 1,2,5 ]] + ,[ 73,"I","I", "", "i",[[0,0],[2,3]],[ 2,4 ]] + ,[ 74,"J","J", "", "j",[[0,0],[2,3]],[ 2,4,5 ]] + ,[ 75,"K","K", "", "k",[[0,0],[2,3]],[ 1,3 ]] + ,[ 76,"L","L", "", "l",[[0,0],[2,3]],[ 1,2,3 ]] + ,[ 77,"M","M", "", "m",[[0,0],[2,3]],[ 1,3,4 ]] + ,[ 78,"N","N", "", "n",[[0,0],[2,3]],[ 1,3,4,5 ]] + ,[ 79,"O","O", "", "o",[[0,0],[2,3]],[ 1,3,5 ]] + ,[ 80,"P","P", "", "p",[[0,0],[2,3]],[ 1,2,3,4 ]] + ,[ 81,"Q","Q", "", "q",[[0,0],[2,3]],[ 1,2,3,4,5 ]] + ,[ 82,"R","R", "", "r",[[0,0],[2,3]],[ 1,2,3,5 ]] + ,[ 83,"S","S", "", "s",[[0,0],[2,3]],[ 2,3,4 ]] + ,[ 84,"T","T", "", "t",[[0,0],[2,3]],[ 2,3,4,5 ]] + ,[ 85,"U","U", "", "u",[[0,0],[2,3]],[ 1,3,6 ]] + ,[ 86,"V","V", "", "v",[[0,0],[2,3]],[ 1,2,3,6 ]] + ,[ 87,"W","W", "", "w",[[0,0],[2,3]],[ 2,4,5,6 ]] + ,[ 88,"X","X", "", "x",[[0,0],[2,3]],[ 1,3,4,6 ]] + ,[ 89,"Y","Y", "", "y",[[0,0],[2,3]],[ 1,3,4,5,6 ]] + ,[ 90,"Z","Z", "", "z",[[0,0],[2,3]],[ 1,3,5,6 ]] + ,[ 91,"[","[", "", "ow",[[0,0],[2,3]],[ 2,4,6 ]] // ]] + ,[ 92,"\\","\\","", "ou",[[0,0],[2,3]],[ 1,2,5,6 ]] // [[ + ,[ 93,"]","]", "", "er",[[0,0],[2,3]],[ 1,2,4,5,6 ]] + ,[ 94,"^","^", "", "(contraction)",[[0,0],[2,3]],[ 4,5 ]] + ,[ 95,"_","_", "", "(contraction)",[[0,0],[2,3]],[ 4,5,6 ]] + ,[ 96,"`","`", "", "",[[0,0],[2,3]],[ + ]] +// Repeating upper-case patterns for lower-case letters. + ,[ 97,"a","a", "", "a",[[0,0],[2,3]],[ 1 ]] + ,[ 98,"b","b", "", "b",[[0,0],[2,3]],[ 1,2 ]] + ,[ 99,"c","c", "", "c",[[0,0],[2,3]],[ 1,4 ]] + ,[100,"d","d", "", "d",[[0,0],[2,3]],[ 1,4,5 ]] + ,[101,"e","e", "", "e",[[0,0],[2,3]],[ 1,5 ]] + ,[102,"f","f", "", "f",[[0,0],[2,3]],[ 1,2,4 ]] + ,[103,"g","g", "", "g",[[0,0],[2,3]],[ 1,2,4,5 ]] + ,[104,"h","h", "", "h",[[0,0],[2,3]],[ 1,2,5 ]] + ,[105,"i","i", "", "i",[[0,0],[2,3]],[ 2,4 ]] + ,[106,"j","j", "", "j",[[0,0],[2,3]],[ 2,4,5 ]] + ,[107,"k","k", "", "k",[[0,0],[2,3]],[ 1,3 ]] + ,[108,"l","l", "", "l",[[0,0],[2,3]],[ 1,2,3 ]] + ,[109,"m","m", "", "m",[[0,0],[2,3]],[ 1,3,4 ]] + ,[110,"n","n", "", "n",[[0,0],[2,3]],[ 1,3,4,5 ]] + ,[111,"o","o", "", "o",[[0,0],[2,3]],[ 1,3,5 ]] + ,[112,"p","p", "", "p",[[0,0],[2,3]],[ 1,2,3,4 ]] + ,[113,"q","q", "", "q",[[0,0],[2,3]],[ 1,2,3,4,5 ]] + ,[114,"r","r", "", "r",[[0,0],[2,3]],[ 1,2,3,5 ]] + ,[115,"s","s", "", "s",[[0,0],[2,3]],[ 2,3,4 ]] + ,[116,"t","t", "", "t",[[0,0],[2,3]],[ 2,3,4,5 ]] + ,[117,"u","u", "", "u",[[0,0],[2,3]],[ 1,3,6 ]] + ,[118,"v","v", "", "v",[[0,0],[2,3]],[ 1,2,3,6 ]] + ,[119,"w","w", "", "w",[[0,0],[2,3]],[ 2,4,5,6 ]] + ,[120,"x","x", "", "x",[[0,0],[2,3]],[ 1,3,4,6 ]] + ,[121,"y","y", "", "y",[[0,0],[2,3]],[ 1,3,4,5,6 ]] + ,[122,"z","z", "", "z",[[0,0],[2,3]],[ 1,3,5,6 ]] + ,[123,"{","{", "", "",[[0,0],[2,3]],[ + ]] + ,[124,"|","|", "", "",[[0,0],[2,3]],[ + ]] + ,[125,"}","}", "", "",[[0,0],[2,3]],[ + ]] + ,[126,"~","~", "", "",[[0,0],[2,3]],[ + ]] + ,[127,"^?","", "DEL","Delete",[[0,0],[2,3]],[]] + ] ]; diff --git a/string-art-model/libraries/MCAD/gears.scad b/string-art-model/libraries/MCAD/gears.scad new file mode 100644 index 0000000..29ca9a2 --- /dev/null +++ b/string-art-model/libraries/MCAD/gears.scad @@ -0,0 +1,199 @@ +// Copyright 2010 D1plo1d +// LGPL 2.1 + + +//test_involute_curve(); +//test_gears(); +//demo_3d_gears(); + +// Geometry Sources: +// http://www.cartertools.com/involute.html +// gears.py (inkscape extension: /usr/share/inkscape/extensions/gears.py) +// Usage: +// Diametral pitch: Number of teeth per unit length. +// Circular pitch: Length of the arc from one tooth to the next +// Clearance: Radial distance between top of tooth on one gear to bottom of gap on another. + +function pitch_circular2diameter(number_of_teeth,circular_pitch) = number_of_teeth * circular_pitch / 180; +function pitch_diametral2diameter(number_of_teeth,diametral_pitch) = number_of_teeth / diametral_pitch; + +module gear(number_of_teeth, + circular_pitch=false, diametral_pitch=false, + pressure_angle=20, clearance = 0, + verbose=false) +{ + if(verbose) { + echo("gear arguments:"); + echo(str(" number_of_teeth: ", number_of_teeth)); + echo(str(" circular_pitch: ", circular_pitch)); + echo(str(" diametral_pitch: ", diametral_pitch)); + echo(str(" pressure_angle: ", pressure_angle)); + echo(str(" clearance: ", clearance)); + } + if (circular_pitch==false && diametral_pitch==false) echo("MCAD ERROR: gear module needs either a diametral_pitch or circular_pitch"); + if(verbose) echo("gear calculations:"); + + //Convert diametrial pitch to our native circular pitch + circular_pitch = (circular_pitch!=false?circular_pitch:180/diametral_pitch); + + // Pitch diameter: Diameter of pitch circle. + pitch_diameter = pitch_circular2diameter(number_of_teeth,circular_pitch); + if(verbose) echo (str(" pitch_diameter: ", pitch_diameter)); + pitch_radius = pitch_diameter/2; + + // Base Circle + base_diameter = pitch_diameter*cos(pressure_angle); + if(verbose) echo (str(" base_diameter: ", base_diameter)); + base_radius = base_diameter/2; + + // Diametrial pitch: Number of teeth per unit length. + pitch_diametrial = number_of_teeth / pitch_diameter; + if(verbose) echo (str(" pitch_diametrial: ", pitch_diametrial)); + + // Addendum: Radial distance from pitch circle to outside circle. + addendum = 1/pitch_diametrial; + if(verbose) echo (str(" addendum: ", addendum)); + + //Outer Circle + outer_radius = pitch_radius+addendum; + outer_diameter = outer_radius*2; + if(verbose) echo (str(" outer_diameter: ", outer_diameter)); + + // Dedendum: Radial distance from pitch circle to root diameter + dedendum = addendum + clearance; + if(verbose) echo (str(" dedendum: ", dedendum)); + + // Root diameter: Diameter of bottom of tooth spaces. + root_radius = pitch_radius-dedendum; + root_diameter = root_radius * 2; + if(verbose) echo (str(" root_diameter: ", root_diameter)); + + half_thick_angle = 360 / (4 * number_of_teeth); + if(verbose) echo (str(" half_thick_angle: ", half_thick_angle)); + + union() + { + rotate(half_thick_angle) circle($fn=number_of_teeth*2, r=root_radius*1.001); + + for (i= [1:number_of_teeth]) + //for (i = [0]) + { + rotate([0,0,i*360/number_of_teeth]) + { + involute_gear_tooth( + pitch_radius = pitch_radius, + root_radius = root_radius, + base_radius = base_radius, + outer_radius = outer_radius, + half_thick_angle = half_thick_angle); + } + } + } +} + + +module involute_gear_tooth( + pitch_radius, + root_radius, + base_radius, + outer_radius, + half_thick_angle + ) +{ + pitch_to_base_angle = involute_intersect_angle( base_radius, pitch_radius ); + + outer_to_base_angle = involute_intersect_angle( base_radius, outer_radius ); + + base1 = 0 - pitch_to_base_angle - half_thick_angle; + pitch1 = 0 - half_thick_angle; + outer1 = outer_to_base_angle - pitch_to_base_angle - half_thick_angle; + + b1 = polar_to_cartesian([ base1, base_radius ]); + p1 = polar_to_cartesian([ pitch1, pitch_radius ]); + o1 = polar_to_cartesian([ outer1, outer_radius ]); + + b2 = polar_to_cartesian([ -base1, base_radius ]); + p2 = polar_to_cartesian([ -pitch1, pitch_radius ]); + o2 = polar_to_cartesian([ -outer1, outer_radius ]); + + // ( root_radius > base_radius variables ) + pitch_to_root_angle = pitch_to_base_angle - involute_intersect_angle(base_radius, root_radius ); + root1 = pitch1 - pitch_to_root_angle; + root2 = -pitch1 + pitch_to_root_angle; + r1_t = polar_to_cartesian([ root1, root_radius ]); + r2_t = polar_to_cartesian([ -root1, root_radius ]); + + // ( else ) + r1_f = polar_to_cartesian([ base1, root_radius ]); + r2_f = polar_to_cartesian([ -base1, root_radius ]); + + if (root_radius > base_radius) + { + //echo("true"); + polygon( points = [ + r1_t,p1,o1,o2,p2,r2_t + ], convexity = 3); + } + else + { + polygon( points = [ + r1_f, b1,p1,o1,o2,p2,b2,r2_f + ], convexity = 3); + } + +} + +// Mathematical Functions +//=============== + +// Finds the angle of the involute about the base radius at the given distance (radius) from it's center. +//source: http://www.mathhelpforum.com/math-help/geometry/136011-circle-involute-solving-y-any-given-x.html + +function involute_intersect_angle(base_radius, radius) = sqrt( pow(radius/base_radius,2) - 1); + + + +// Polar coord [angle, radius] to cartesian coord [x,y] + +function polar_to_cartesian(polar) = [ + polar[1]*cos(polar[0]), + polar[1]*sin(polar[0]) +]; + + +// Test Cases +//=============== + +module test_gears() +{ + gear(number_of_teeth=51,circular_pitch=200); + translate([0, 50])gear(number_of_teeth=17,circular_pitch=200); + translate([-50,0]) gear(number_of_teeth=17,diametral_pitch=1); +} + +module demo_3d_gears() +{ + //double helical gear + translate([50,0]) + { + linear_extrude(height = 10, center = true, convexity = 10, twist = -45) + gear(number_of_teeth=17,diametral_pitch=1); + translate([0,0,10]) + rotate([0,180,180/17]) + linear_extrude(height = 10, center = true, convexity = 10, twist = 45) + gear(number_of_teeth=17,diametral_pitch=1); + } + + //spur gear + translate([0,-50]) linear_extrude(height = 10, center = true, convexity = 10, twist = 0) + gear(number_of_teeth=17,diametral_pitch=1); + +} + +module test_involute_curve() +{ + for (i=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) + { + translate(polar_to_cartesian([involute_intersect_angle( 0.1,i) , i ])) circle($fn=15, r=0.5); + } +} diff --git a/string-art-model/libraries/MCAD/gridbeam.scad b/string-art-model/libraries/MCAD/gridbeam.scad new file mode 100644 index 0000000..b7fd0b3 --- /dev/null +++ b/string-art-model/libraries/MCAD/gridbeam.scad @@ -0,0 +1,185 @@ +/********************************* +* OpenSCAD GridBeam Library * +* (c) Timothy Schmidt 2013 * +* http://www.github.com/gridbeam * +* License: LGPL 2.1 or later * +*********************************/ + +/* Todo: + - implement "dxf" mode + - implement hole cutout pattern - interference based on hole size, compatible with two sizes above and below the currently set size. +*/ + +// zBeam(segments) - create a vertical gridbeam strut 'segments' long +// xBeam(segments) - create a horizontal gridbeam strut along the X axis +// yBeam(segments) - create a horizontal gridbeam strut along the Y axis +// zBolt(segments) - create a bolt 'segments' in length +// xBolt(segments) +// yBolt(segments) +// topShelf(width, depth, corners) - create a shelf suitable for use in gridbeam structures width and depth in 'segments', corners == 1 notches corners +// bottomShelf(width, depth, corners) - like topShelf, but aligns shelf to underside of beams +// backBoard(width, height, corners) - create a backing board suitable for use in gridbeam structures width and height in 'segments', corners == 1 notches corners +// frontBoard(width, height, corners) - like backBoard, but aligns board to front side of beams +// translateBeam([x, y, z]) - translate gridbeam struts or shelves in X, Y, or Z axes in units 'segments' + +// To render the DXF file from the command line: +// openscad -x connector.dxf -D'mode="dxf"' connector.scad +mode = "model"; +//mode = "dxf"; + +include + +beam_width = inch * 1.5; +beam_hole_diameter = inch * 5/16; +beam_hole_radius = beam_hole_diameter / 2; +beam_is_hollow = 1; +beam_wall_thickness = inch * 1/8; +beam_shelf_thickness = inch * 1/4; + +module zBeam(segments) { +if (mode == "model") { + difference() { + cube([beam_width, beam_width, beam_width * segments]); + for(i = [0 : segments - 1]) { + translate([beam_width / 2, beam_width + 1, beam_width * i + beam_width / 2]) + rotate([90,0,0]) + cylinder(r=beam_hole_radius, h=beam_width + 2); + + translate([-1, beam_width / 2, beam_width * i + beam_width / 2]) + rotate([0,90,0]) + cylinder(r=beam_hole_radius, h=beam_width + 2); + } + if (beam_is_hollow == 1) { + translate([beam_wall_thickness, beam_wall_thickness, -1]) + cube([beam_width - beam_wall_thickness * 2, beam_width - beam_wall_thickness * 2, beam_width * segments + 2]); + } +} +} + +if (mode == "dxf") { + +} +} + +module xBeam(segments) { +if (mode == "model") { + translate([0,0,beam_width]) + rotate([0,90,0]) + zBeam(segments); +} + +if (mode == "dxf") { + +} +} + +module yBeam(segments) { +if (mode == "model") { + translate([0,0,beam_width]) + rotate([-90,0,0]) + zBeam(segments); +} + +if (mode == "dxf") { + +} +} + +module zBolt(segments) { +if (mode == "model") { + +} + +if (mode == "dxf") { + +} +} + +module xBolt(segments) { +if (mode == "model") { +} + +if (mode == "dxf") { + +} +} + +module yBolt(segments) { +if (mode == "model") { +} + +if (mode == "dxf") { + +} +} + +module translateBeam(v) translate(v * beam_width) children([0 : $children - 1]); + +module topShelf(width, depth, corners) { +if (mode == "model") { + difference() { + cube([width * beam_width, depth * beam_width, beam_shelf_thickness]); + + if (corners == 1) { + translate([-1, -1, -1]) + cube([beam_width + 2, beam_width + 2, beam_shelf_thickness + 2]); + translate([-1, (depth - 1) * beam_width, -1]) + cube([beam_width + 2, beam_width + 2, beam_shelf_thickness + 2]); + translate([(width - 1) * beam_width, -1, -1]) + cube([beam_width + 2, beam_width + 2, beam_shelf_thickness + 2]); + translate([(width - 1) * beam_width, (depth - 1) * beam_width, -1]) + cube([beam_width + 2, beam_width + 2, beam_shelf_thickness + 2]); + } + } +} + +if (mode == "dxf") { + +} +} + +module bottomShelf(width, depth, corners) { +if (mode == "model") { + translate([0,0,-beam_shelf_thickness]) + topShelf(width, depth, corners); +} + +if (mode == "dxf") { + +} +} + +module backBoard(width, height, corners) { +if (mode == "model") { + translate([beam_width, 0, 0]) + difference() { + cube([beam_shelf_thickness, width * beam_width, height * beam_width]); + + if (corners == 1) { + translate([-1, -1, -1]) + cube([beam_shelf_thickness + 2, beam_width + 2, beam_width + 2]); + translate([-1, -1, (height - 1) * beam_width]) + cube([beam_shelf_thickness + 2, beam_width + 2, beam_width + 2]); + translate([-1, (width - 1) * beam_width, -1]) + cube([beam_shelf_thickness + 2, beam_width + 2, beam_width + 2]); + translate([-1, (width - 1) * beam_width, (height - 1) * beam_width]) + cube([beam_shelf_thickness + 2, beam_width + 2, beam_width + 2]); + } + } +} + +if (mode == "dxf") { + +} +} + +module frontBoard(width, height, corners) { +if (mode == "model") { + translate([-beam_width - beam_shelf_thickness, 0, 0]) + backBoard(width, height, corners); +} + +if (mode == "dxf") { + +} +} diff --git a/string-art-model/libraries/MCAD/hardware.scad b/string-art-model/libraries/MCAD/hardware.scad new file mode 100644 index 0000000..025430d --- /dev/null +++ b/string-art-model/libraries/MCAD/hardware.scad @@ -0,0 +1,122 @@ +// License: LGPL 2.1 + +rodsize = 6; //threaded/smooth rod diameter in mm +xaxis = 182.5; //width of base in mm +yaxis = 266.5; //length of base in mm + + +screwsize = 3; //bearing bore/screw diameter in mm +bearingsize = 10; //outer diameter of bearings in mm +bearingwidth = 4; //width of bearings in mm + + +rodpitch = rodsize / 6; +rodnutsize = 0.8 * rodsize; +rodnutdiameter = 1.9 * rodsize; +rodwashersize = 0.2 * rodsize; +rodwasherdiameter = 2 * rodsize; +screwpitch = screwsize / 6; +nutsize = 0.8 * screwsize; +nutdiameter = 1.9 * screwsize; +washersize = 0.2 * screwsize; +washerdiameter = 2 * screwsize; +partthick = 2 * rodsize; +vertexrodspace = 2 * rodsize; + + +c = [0.3, 0.3, 0.3]; +rodendoffset = rodnutsize + rodwashersize * 2 + partthick / 2; +vertexoffset = vertexrodspace + rodendoffset; + + +renderrodthreads = false; +renderscrewthreads = false; +fn = 36; + + + +module rod(length, threaded) if (threaded && renderrodthreads) { + linear_extrude(height = length, center = true, convexity = 10, twist = -360 * length / rodpitch, $fn = fn) + translate([rodsize * 0.1 / 2, 0, 0]) + circle(r = rodsize * 0.9 / 2, $fn = fn); +} else cylinder(h = length, r = rodsize / 2, center = true, $fn = fn); + + +module screw(length, nutpos, washer, bearingpos = -1) union(){ + translate([0, 0, -length / 2]) if (renderscrewthreads) { + linear_extrude(height = length, center = true, convexity = 10, twist = -360 * length / screwpitch, $fn = fn) + translate([screwsize * 0.1 / 2, 0, 0]) + circle(r = screwsize * 0.9 / 2, $fn = fn); + } else cylinder(h = length, r = screwsize / 2, center = true, $fn = fn); + render() difference() { + translate([0, 0, screwsize / 2]) cylinder(h = screwsize, r = screwsize, center = true, $fn = fn); + translate([0, 0, screwsize]) cylinder(h = screwsize, r = screwsize / 2, center = true, $fn = 6); + } + if (washer > 0 && nutpos > 0) { + washer(nutpos); + nut(nutpos + washersize); + } else if (nutpos > 0) nut(nutpos); + if (bearingpos >= 0) bearing(bearingpos); +} + + +module bearing(position) render() translate([0, 0, -position - bearingwidth / 2]) union() { + difference() { + cylinder(h = bearingwidth, r = bearingsize / 2, center = true, $fn = fn); + cylinder(h = bearingwidth * 2, r = bearingsize / 2 - 1, center = true, $fn = fn); + } + difference() { + cylinder(h = bearingwidth - 0.5, r = bearingsize / 2 - 0.5, center = true, $fn = fn); + cylinder(h = bearingwidth * 2, r = screwsize / 2 + 0.5, center = true, $fn = fn); + } + difference() { + cylinder(h = bearingwidth, r = screwsize / 2 + 1, center = true, $fn = fn); + cylinder(h = bearingwidth + 0.1, r = screwsize / 2, center = true, $fn = fn); + } +} + + +module nut(position, washer) render() translate([0, 0, -position - nutsize / 2]) { + intersection() { + scale([1, 1, 0.5]) sphere(r = 1.05 * screwsize, center = true); + difference() { + cylinder (h = nutsize, r = nutdiameter / 2, center = true, $fn = 6); + cylinder(r = screwsize / 2, h = nutsize + 0.1, center = true, $fn = fn); + } + } + if (washer > 0) washer(0); +} + + +module washer(position) render() translate ([0, 0, -position - washersize / 2]) difference() { + cylinder(r = washerdiameter / 2, h = washersize, center = true, $fn = fn); + cylinder(r = screwsize / 2, h = washersize + 0.1, center = true, $fn = fn); +} + +module rodnut(position, washer) render() translate([0, 0, position]) { + intersection() { + scale([1, 1, 0.5]) sphere(r = 1.05 * rodsize, center = true); + difference() { + cylinder (h = rodnutsize, r = rodnutdiameter / 2, center = true, $fn = 6); + rod(rodnutsize + 0.1); + } + } + if (washer == 1 || washer == 4) rodwasher(((position > 0) ? -1 : 1) * (rodnutsize + rodwashersize) / 2); + if (washer == 2 || washer == 4) rodwasher(((position > 0) ? 1 : -1) * (rodnutsize + rodwashersize) / 2); +} + + +module rodwasher(position) render() translate ([0, 0, position]) difference() { + cylinder(r = rodwasherdiameter / 2, h = rodwashersize, center = true, $fn = fn); + rod(rodwashersize + 0.1); +} + + +rod(20); +translate([rodsize * 2.5, 0, 0]) rod(20, true); +translate([rodsize * 5, 0, 0]) screw(10, true); +translate([rodsize * 7.5, 0, 0]) bearing(); +translate([rodsize * 10, 0, 0]) rodnut(); +translate([rodsize * 12.5, 0, 0]) rodwasher(); +translate([rodsize * 15, 0, 0]) nut(); +translate([rodsize * 17.5, 0, 0]) washer(); \ No newline at end of file diff --git a/string-art-model/libraries/MCAD/involute_gears.scad b/string-art-model/libraries/MCAD/involute_gears.scad new file mode 100644 index 0000000..39b24aa --- /dev/null +++ b/string-art-model/libraries/MCAD/involute_gears.scad @@ -0,0 +1,847 @@ +// Parametric Involute Bevel and Spur Gears by GregFrost +// It is licensed under the Creative Commons - GNU LGPL 2.1 license. +// © 2010 by GregFrost, thingiverse.com/Amp +// http://www.thingiverse.com/thing:3575 and http://www.thingiverse.com/thing:3752 + +// Simple Test: +//gear (circular_pitch=700, +// gear_thickness = 12, +// rim_thickness = 15, +// hub_thickness = 17, +// circles=8); + +//Complex Spur Gear Test: +//test_gears (); + +// Meshing Double Helix: +//test_meshing_double_helix (); + +module test_meshing_double_helix(){ + meshing_double_helix (); +} + +// Demonstrate the backlash option for Spur gears. +//test_backlash (); + +// Demonstrate how to make meshing bevel gears. +//test_bevel_gear_pair(); + +module test_bevel_gear_pair(){ + bevel_gear_pair (); +} + +module test_bevel_gear(){bevel_gear();} + +//bevel_gear(); + +pi=3.1415926535897932384626433832795; + +//================================================== +// Bevel Gears: +// Two gears with the same cone distance, circular pitch (measured at the cone distance) +// and pressure angle will mesh. + +module bevel_gear_pair ( + gear1_teeth = 41, + gear2_teeth = 7, + axis_angle = 90, + outside_circular_pitch=1000) +{ + outside_pitch_radius1 = gear1_teeth * outside_circular_pitch / 360; + outside_pitch_radius2 = gear2_teeth * outside_circular_pitch / 360; + pitch_apex1=outside_pitch_radius2 * sin (axis_angle) + + (outside_pitch_radius2 * cos (axis_angle) + outside_pitch_radius1) / tan (axis_angle); + cone_distance = sqrt (pow (pitch_apex1, 2) + pow (outside_pitch_radius1, 2)); + pitch_apex2 = sqrt (pow (cone_distance, 2) - pow (outside_pitch_radius2, 2)); + echo ("cone_distance", cone_distance); + pitch_angle1 = asin (outside_pitch_radius1 / cone_distance); + pitch_angle2 = asin (outside_pitch_radius2 / cone_distance); + echo ("pitch_angle1, pitch_angle2", pitch_angle1, pitch_angle2); + echo ("pitch_angle1 + pitch_angle2", pitch_angle1 + pitch_angle2); + + rotate([0,0,90]) + translate ([0,0,pitch_apex1+20]) + { + translate([0,0,-pitch_apex1]) + bevel_gear ( + number_of_teeth=gear1_teeth, + cone_distance=cone_distance, + pressure_angle=30, + outside_circular_pitch=outside_circular_pitch); + + rotate([0,-(pitch_angle1+pitch_angle2),0]) + translate([0,0,-pitch_apex2]) + bevel_gear ( + number_of_teeth=gear2_teeth, + cone_distance=cone_distance, + pressure_angle=30, + outside_circular_pitch=outside_circular_pitch); + } +} + +//Bevel Gear Finishing Options: +bevel_gear_flat = 0; +bevel_gear_back_cone = 1; + +module bevel_gear ( + number_of_teeth=11, + cone_distance=100, + face_width=20, + outside_circular_pitch=1000, + pressure_angle=30, + clearance = 0.2, + bore_diameter=5, + gear_thickness = 15, + backlash = 0, + involute_facets=0, + finish = -1) +{ + echo ("bevel_gear", + "teeth", number_of_teeth, + "cone distance", cone_distance, + face_width, + outside_circular_pitch, + pressure_angle, + clearance, + bore_diameter, + involute_facets, + finish); + + // Pitch diameter: Diameter of pitch circle at the fat end of the gear. + outside_pitch_diameter = number_of_teeth * outside_circular_pitch / 180; + outside_pitch_radius = outside_pitch_diameter / 2; + + // The height of the pitch apex. + pitch_apex = sqrt (pow (cone_distance, 2) - pow (outside_pitch_radius, 2)); + pitch_angle = asin (outside_pitch_radius/cone_distance); + + echo ("Num Teeth:", number_of_teeth, " Pitch Angle:", pitch_angle); + + finish = (finish != -1) ? finish : (pitch_angle < 45) ? bevel_gear_flat : bevel_gear_back_cone; + + apex_to_apex=cone_distance / cos (pitch_angle); + back_cone_radius = apex_to_apex * sin (pitch_angle); + + // Calculate and display the pitch angle. This is needed to determine the angle to mount two meshing cone gears. + + // Base Circle for forming the involute teeth shape. + base_radius = back_cone_radius * cos (pressure_angle); + + // Diametrial pitch: Number of teeth per unit length. + pitch_diametrial = number_of_teeth / outside_pitch_diameter; + + // Addendum: Radial distance from pitch circle to outside circle. + addendum = 1 / pitch_diametrial; + // Outer Circle + outer_radius = back_cone_radius + addendum; + + // Dedendum: Radial distance from pitch circle to root diameter + dedendum = addendum + clearance; + dedendum_angle = atan (dedendum / cone_distance); + root_angle = pitch_angle - dedendum_angle; + + root_cone_full_radius = tan (root_angle)*apex_to_apex; + back_cone_full_radius=apex_to_apex / tan (pitch_angle); + + back_cone_end_radius = + outside_pitch_radius - + dedendum * cos (pitch_angle) - + gear_thickness / tan (pitch_angle); + back_cone_descent = dedendum * sin (pitch_angle) + gear_thickness; + + // Root diameter: Diameter of bottom of tooth spaces. + root_radius = back_cone_radius - dedendum; + + half_tooth_thickness = outside_pitch_radius * sin (360 / (4 * number_of_teeth)) - backlash / 4; + half_thick_angle = asin (half_tooth_thickness / back_cone_radius); + + face_cone_height = apex_to_apex-face_width / cos (pitch_angle); + face_cone_full_radius = face_cone_height / tan (pitch_angle); + face_cone_descent = dedendum * sin (pitch_angle); + face_cone_end_radius = + outside_pitch_radius - + face_width / sin (pitch_angle) - + face_cone_descent / tan (pitch_angle); + + // For the bevel_gear_flat finish option, calculate the height of a cube to select the portion of the gear that includes the full pitch face. + bevel_gear_flat_height = pitch_apex - (cone_distance - face_width) * cos (pitch_angle); + +// translate([0,0,-pitch_apex]) + difference () + { + intersection () + { + union() + { + rotate (half_thick_angle) + translate ([0,0,pitch_apex-apex_to_apex]) + cylinder ($fn=number_of_teeth*2, r1=root_cone_full_radius,r2=0,h=apex_to_apex); + for (i = [1:number_of_teeth]) +// for (i = [1:1]) + { + rotate ([0,0,i*360/number_of_teeth]) + { + involute_bevel_gear_tooth ( + back_cone_radius = back_cone_radius, + root_radius = root_radius, + base_radius = base_radius, + outer_radius = outer_radius, + pitch_apex = pitch_apex, + cone_distance = cone_distance, + half_thick_angle = half_thick_angle, + involute_facets = involute_facets); + } + } + } + + if (finish == bevel_gear_back_cone) + { + translate ([0,0,-back_cone_descent]) + cylinder ( + $fn=number_of_teeth*2, + r1=back_cone_end_radius, + r2=back_cone_full_radius*2, + h=apex_to_apex + back_cone_descent); + } + else + { + translate ([-1.5*outside_pitch_radius,-1.5*outside_pitch_radius,0]) + cube ([3*outside_pitch_radius, + 3*outside_pitch_radius, + bevel_gear_flat_height]); + } + } + + if (finish == bevel_gear_back_cone) + { + translate ([0,0,-face_cone_descent]) + cylinder ( + r1=face_cone_end_radius, + r2=face_cone_full_radius * 2, + h=face_cone_height + face_cone_descent+pitch_apex); + } + + translate ([0,0,pitch_apex - apex_to_apex]) + cylinder (r=bore_diameter/2,h=apex_to_apex); + } +} + +module involute_bevel_gear_tooth ( + back_cone_radius, + root_radius, + base_radius, + outer_radius, + pitch_apex, + cone_distance, + half_thick_angle, + involute_facets) +{ +// echo ("involute_bevel_gear_tooth", +// back_cone_radius, +// root_radius, +// base_radius, +// outer_radius, +// pitch_apex, +// cone_distance, +// half_thick_angle); + + min_radius = max (base_radius*2,root_radius*2); + + pitch_point = + involute ( + base_radius*2, + involute_intersect_angle (base_radius*2, back_cone_radius*2)); + pitch_angle = atan2 (pitch_point[1], pitch_point[0]); + centre_angle = pitch_angle + half_thick_angle; + + start_angle = involute_intersect_angle (base_radius*2, min_radius); + stop_angle = involute_intersect_angle (base_radius*2, outer_radius*2); + + res=(involute_facets!=0)?involute_facets:($fn==0)?5:$fn/4; + + translate ([0,0,pitch_apex]) + rotate ([0,-atan(back_cone_radius/cone_distance),0]) + translate ([-back_cone_radius*2,0,-cone_distance*2]) + union () + { + for (i=[1:res]) + { + let ( + point1= + involute (base_radius*2,start_angle+(stop_angle - start_angle)*(i-1)/res), + point2= + involute (base_radius*2,start_angle+(stop_angle - start_angle)*(i)/res)) + { + let ( + side1_point1 = rotate_point (centre_angle, point1), + side1_point2 = rotate_point (centre_angle, point2), + side2_point1 = mirror_point (rotate_point (centre_angle, point1)), + side2_point2 = mirror_point (rotate_point (centre_angle, point2))) + { + polyhedron ( + points=[ + [back_cone_radius*2+0.1,0,cone_distance*2], + [side1_point1[0],side1_point1[1],0], + [side1_point2[0],side1_point2[1],0], + [side2_point2[0],side2_point2[1],0], + [side2_point1[0],side2_point1[1],0], + [0.1,0,0]], + triangles=[[0,2,1],[0,3,2],[0,4,3],[0,1,5],[1,2,5],[2,3,5],[3,4,5],[0,5,4]]); + } + } + } + } +} + +module gear ( + number_of_teeth=15, + circular_pitch=undef, diametral_pitch=undef, + pressure_angle=28, + clearance = undef, + gear_thickness=5, + rim_thickness=undef, + rim_width=undef, + hub_thickness=undef, + hub_diameter=undef, + spokes=0, + spoke_width=undef, + spoke_thickness=undef, + spoke_square=false, + centered_gear=false, + centered_hub=false, + bore_diameter=undef, + circles=0, + circle_diameter=undef, + backlash=0, + twist=0, + involute_facets=0, + flat=false) +{ + // Check for undefined circular pitch (happens when neither circular_pitch or diametral_pitch are specified) + if (circular_pitch==undef) + echo("MCAD ERROR: gear module needs either a diametral_pitch or circular_pitch"); + + //Convert diametrial pitch to our native circular pitch + circular_pitch = (circular_pitch!=undef?circular_pitch:pi/diametral_pitch); + + // Calculate default clearance if not specified + clearance = (clearance!=undef?clearance:0.25 * circular_pitch / pi); + + // Pitch diameter: Diameter of pitch circle. + pitch_diameter = number_of_teeth * circular_pitch / pi; + pitch_radius = pitch_diameter/2; + echo (str("Teeth: ", number_of_teeth, ", Pitch Radius: ", pitch_radius, ", Clearance: ", clearance)); + + // Base Circle + base_radius = pitch_radius*cos(pressure_angle); + + // Diametrial pitch: Number of teeth per unit length. + pitch_diametrial = number_of_teeth / pitch_diameter; + + // Addendum: Radial distance from pitch circle to outside circle. + addendum = 1/pitch_diametrial; + + //Outer Circle + outer_radius = pitch_radius+addendum; + + // Dedendum: Radial distance from pitch circle to root diameter + dedendum = addendum + clearance; + + // Root diameter: Diameter of bottom of tooth spaces. + root_radius = pitch_radius-dedendum; + backlash_angle = backlash / pitch_radius * 180 / pi; + half_thick_angle = (360 / number_of_teeth - backlash_angle) / 4; + + // Variables controlling the rim. + rim_thickness = (rim_thickness!=undef?(rim_thickness!=0?rim_thickness:gear_thickness):gear_thickness * 1.5); + rim_width = (rim_width!=undef?rim_width:root_radius * .1); + rim_radius = root_radius - rim_width; + + // Variables controlling the hub + hub_thickness = (hub_thickness!=undef?(hub_thickness!=0?hub_thickness:gear_thickness):gear_thickness * 2); + hub_diameter = (hub_diameter!=undef?hub_diameter:root_radius * .3); + hub_base = (centered_hub == false)? 0 : rim_thickness/2 - hub_thickness/2; + + // Variables controlling the spokes + spokes = spokes == undef? 0 : spokes; + spoke_thickness = (spoke_thickness == undef)? rim_thickness : spoke_thickness; + spoke_width = (spokes==0)? 1 : (spoke_width == undef)? 0.75 * pi * hub_diameter / spokes : spoke_width; + //spoke_depth is depth spoke must penetrate into hub to ensure complete penetration + spoke_depth = ((hub_diameter/2)^2-(spoke_width/2)^2)^0.5 +.01; + //spoke length is length of spoke including the depth sunk into the hub + spoke_length = spoke_depth+rim_radius-(hub_diameter/2.0); + //spoke raius is the distance from gear center to base of the spoke(inside the hub) + spoke_radius = (hub_diameter/2.0)-spoke_depth; + //echo (str("spoke_width: ",spoke_width,", hub_diameter: ",hub_diameter, ", spoke_depth: ",spoke_depth)); + + // Variables controlling the bore + bore_diameter = bore_diameter!=undef?bore_diameter:root_radius * .1; + + // Variables controlling the circular holes in the gear. + circle_orbit_diameter=hub_diameter/2+rim_radius; + circle_orbit_curcumference=pi*circle_orbit_diameter; + + // Limit the circle size to 90% of the gear face. + circle_default_diameter = min ( + 0.70*circle_orbit_curcumference/circles, + (rim_radius+hub_diameter/2)*0.9); + circle_diameter=(circle_diameter != undef)? circle_diameter : circle_default_diameter; + echo(str("cir_orb_dia: ", circle_orbit_diameter, ", cir_orb_circumf: ", circle_orbit_curcumference, ", default cir dia: ",circle_default_diameter, ", cir_dia:",circle_diameter)); + difference() + { + union () + { + difference () + { + //start with a plane toothed disk gear + linear_extrude_flat_option(flat=flat, height=rim_thickness, convexity=10, twist=twist) + gear_shape ( + number_of_teeth, + pitch_radius = pitch_radius, + root_radius = root_radius, + base_radius = base_radius, + outer_radius = outer_radius, + half_thick_angle = half_thick_angle, + involute_facets=involute_facets); + + //if we have a 0 hub thickness, then hub must be removed + if (hub_thickness == 0) + translate ([0,0,-1]) + cylinder (r=rim_radius,h=rim_thickness+2); + //if the rim is thicker than the gear, carve out gear body + else if (rim_thickness>gear_thickness){ + //if not centered, carve out only the top + if (centered_gear == false){ + translate ([0,0,gear_thickness]) + cylinder (r=rim_radius,h=rim_thickness); + } + else + //carve out half from top and half from bottom + union () + { + translate ([0,0,(gear_thickness + rim_thickness)/2]) + cylinder (r=rim_radius,h=rim_thickness+1); + translate ([0,0,-1 -(gear_thickness + rim_thickness)/2]) + cylinder (r=rim_radius,h=rim_thickness+1); + } + + } + } + + //extend the gear body if gear_thickness > rim_thickness unless spoked, + if (gear_thickness > rim_thickness) + { + if (centered_gear == false) + { + linear_extrude_flat_option(flat=flat, height=gear_thickness) + circle (r=rim_radius); + } + else + { + translate ([0,0,-(gear_thickness - rim_thickness)/2]) + linear_extrude_flat_option(flat=flat, height=gear_thickness) + circle (r=rim_radius); + } + //if rim is thicker than body, body protrudes into rim + } + //add the hub + translate ([0,0,hub_base]) + linear_extrude_flat_option(flat=flat, height=hub_thickness) + circle (r=hub_diameter/2); + + //add in spokes + if (spokes>0) + { + for(i=[0:spokes-1]) + translate([0,0,rim_thickness/2]) + rotate([90,0,i*360/spokes]) + translate([0,0,spoke_radius]) + { + if (spoke_square==true){ + resize([spoke_width,spoke_thickness,spoke_length]) + translate([0,0,.5]) + cube(1,center=true); + } + if (spoke_square==false){ + resize([spoke_width,spoke_thickness,spoke_length]) + cylinder(h=10,d=10); + } + } + } + } + + //remove the center bore + translate ([0,0,-1]) + linear_extrude_flat_option(flat =flat, height=2+max(rim_thickness,hub_thickness,gear_thickness)) + circle (r=bore_diameter/2); + + //remove circles from gear body + if (circles>0) + { + for(i=[0:circles-1]) + rotate([0,0,i*360/circles]) + translate([circle_orbit_diameter/2,0,-1]) + linear_extrude_flat_option(flat =flat, height=max(gear_thickness,rim_thickness)+3) + circle(r=circle_diameter/2); + } + } +} + +module rack( + number_of_teeth=15, + circular_pitch=false, diametral_pitch=false, + pressure_angle=28, + clearance=0.2, + rim_thickness=8, + rim_width=5, + flat=false) +{ + + if (circular_pitch==false && diametral_pitch==false) + echo("MCAD ERROR: gear module needs either a diametral_pitch or circular_pitch"); + + //Convert diametrial pitch to our native circular pitch + circular_pitch = (circular_pitch!=false?circular_pitch:pi/diametral_pitch); + pitch = circular_pitch; + + addendum = circular_pitch / pi; + dedendum = addendum + clearance; + pitch_slope = tan(pressure_angle); + + linear_extrude_flat_option(flat=flat, height=rim_thickness) + union() + { + translate([0,-dedendum-rim_width/2]) + square([number_of_teeth*pitch, rim_width],center=true); + + p1 = pitch / 4 + pitch_slope * dedendum; + p2 = pitch / 4 - pitch_slope * addendum; + for(i=[1:number_of_teeth]) + translate([pitch*(i-number_of_teeth/2-0.5),0]) + polygon(points=[ + [-p1,-dedendum], + [p1,-dedendum], + [p2,addendum], + [-p2,addendum] + ]); + } +} + +module linear_extrude_flat_option(flat =false, height = 10, center = false, convexity = 2, twist = 0) +{ + if(flat==false) + { + linear_extrude(height = height, center = center, convexity = convexity, twist= twist) children(0); + } + else + { + children(0); + } + +} + +module gear_shape ( + number_of_teeth, + pitch_radius, + root_radius, + base_radius, + outer_radius, + half_thick_angle, + involute_facets) +{ + union() + { + rotate (half_thick_angle) circle ($fn=number_of_teeth*2, r=root_radius); + + for (i = [1:number_of_teeth]) + { + rotate ([0,0,i*360/number_of_teeth]) + { + involute_gear_tooth ( + pitch_radius = pitch_radius, + root_radius = root_radius, + base_radius = base_radius, + outer_radius = outer_radius, + half_thick_angle = half_thick_angle, + involute_facets=involute_facets); + } + } + } +} + +module involute_gear_tooth ( + pitch_radius, + root_radius, + base_radius, + outer_radius, + half_thick_angle, + involute_facets) +{ + min_radius = max (base_radius,root_radius); + + pitch_point = involute (base_radius, involute_intersect_angle (base_radius, pitch_radius)); + pitch_angle = atan2 (pitch_point[1], pitch_point[0]); + centre_angle = pitch_angle + half_thick_angle; + + start_angle = involute_intersect_angle (base_radius, min_radius); + stop_angle = involute_intersect_angle (base_radius, outer_radius); + + res=(involute_facets!=0)?involute_facets:($fn==0)?5:$fn/4; + + union () + { + for (i=[1:res]) { + point1=involute (base_radius,start_angle+(stop_angle - start_angle)*(i-1)/res); + point2=involute (base_radius,start_angle+(stop_angle - start_angle)*i/res); + side1_point1=rotate_point (centre_angle, point1); + side1_point2=rotate_point (centre_angle, point2); + side2_point1=mirror_point (rotate_point (centre_angle, point1)); + side2_point2=mirror_point (rotate_point (centre_angle, point2)); + polygon ( + points=[[0,0],side1_point1,side1_point2,side2_point2,side2_point1], + paths=[[0,1,2,3,4,0]]); + } + } +} + +// Mathematical Functions +//=============== + +// Finds the angle of the involute about the base radius at the given distance (radius) from it's center. +//source: http://www.mathhelpforum.com/math-help/geometry/136011-circle-involute-solving-y-any-given-x.html + +function involute_intersect_angle (base_radius, radius) = sqrt (pow (radius/base_radius, 2) - 1) * 180 / pi; + +// Calculate the involute position for a given base radius and involute angle. + +function rotated_involute (rotate, base_radius, involute_angle) = +[ + cos (rotate) * involute (base_radius, involute_angle)[0] + sin (rotate) * involute (base_radius, involute_angle)[1], + cos (rotate) * involute (base_radius, involute_angle)[1] - sin (rotate) * involute (base_radius, involute_angle)[0] +]; + +function mirror_point (coord) = +[ + coord[0], + -coord[1] +]; + +function rotate_point (rotate, coord) = +[ + cos (rotate) * coord[0] + sin (rotate) * coord[1], + cos (rotate) * coord[1] - sin (rotate) * coord[0] +]; + +function involute (base_radius, involute_angle) = +[ + base_radius*(cos (involute_angle) + involute_angle*pi/180*sin (involute_angle)), + base_radius*(sin (involute_angle) - involute_angle*pi/180*cos (involute_angle)) +]; + + +// Test Cases +//=============== + +module test_gears() +{ + $fs = 0.2; + $fa =1; + translate([17,-15]) + { + gear (number_of_teeth=17, + circular_pitch=500*pi/180, + spokes=6, + spoke_thickness=4, + gear_thickness=0, + rim_thickness=5, + hub_thickness=5, + hub_diameter=10, + circles=0); + + rotate ([0,0,360*4/17]) + translate ([39.088888,0,0]) + { + gear (number_of_teeth=11, + circular_pitch=500*pi/180, + hub_diameter=0, + rim_width=65); + translate ([0,0,8]) + { + gear (number_of_teeth=6, + circular_pitch=300*pi/180, + hub_diameter=0, + rim_width=5, + rim_thickness=6, + pressure_angle=31); + rotate ([0,0,360*5/6]) + translate ([22.5,0,1]) + gear (number_of_teeth=21, + circular_pitch=300*pi/180, + bore_diameter=2, + hub_diameter=4, + rim_width=1, + hub_thickness=4, + rim_thickness=4, + gear_thickness=3, + pressure_angle=31); + } + } + + translate ([-61.1111111,0,0]) + { + gear (number_of_teeth=27, + circular_pitch=500*pi/180, + circles=6, + circle_diameter=12, + spokes=6, + gear_thickness=2, + hub_thickness=10, + centered_gear=true, + spoke_thickness=3, + hub_diameter=2*8.88888889); + + translate ([-37.5,0,0]) + rotate ([0,0,-90]) + rack ( + circular_pitch=500*pi/180 + ); + + translate ([0,0,10]) + { + gear ( + number_of_teeth=14, + circular_pitch=200*pi/180, + pressure_angle=5, + twist=30, + clearance = 0.2, + gear_thickness = 10, + rim_thickness = 10, + rim_width = 15, + bore_diameter=5, + circles=0); + translate ([13.8888888,0,1]) + gear ( + number_of_teeth=10, + circular_pitch=200*pi/180, + pressure_angle=5, + clearance = 0.2, + gear_thickness = 10, + rim_thickness = 8, + twist=-30*8/10, + rim_width = 15, + hub_thickness = 10, + centered_hub=true, + hub_diameter=7, + bore_diameter=4, + circles=0); + } + } + + rotate ([0,0,360*-5/17]) + translate ([44.444444444,0,0]) + gear (number_of_teeth=15, + circular_pitch=500*pi/180, + hub_diameter=10, + rim_width=5, + rim_thickness=5, + gear_thickness=4, + hub_thickness=6, + circles=9); + + rotate ([0,0,360*-1/17]) + translate ([30.5555555,0,-1]) + gear (number_of_teeth=5, + circular_pitch=500*pi/180, + hub_diameter=0, + rim_width=5, + rim_thickness=10); + } +} + +module meshing_double_helix () +{ + test_double_helix_gear (); + + mirror ([0,1,0]) + translate ([58.33333333,0,0]) + test_double_helix_gear (teeth=13,circles=6); +} + +module test_double_helix_gear ( + teeth=17, + circles=8) +{ + //double helical gear + { + twist=200; + height=20; + pressure_angle=30; + + gear (number_of_teeth=teeth, + circular_pitch=700*pi/180, + pressure_angle=pressure_angle, + clearance = 0.2, + gear_thickness = height/2*0.5, + rim_thickness = height/2, + rim_width = 5, + hub_thickness = height/2*1.2, + hub_diameter=15, + bore_diameter=5, + circles=circles, + twist=twist/teeth); + mirror([0,0,1]) + gear (number_of_teeth=teeth, + circular_pitch=700*pi/180, + pressure_angle=pressure_angle, + clearance = 0.2, + gear_thickness = height/2, + rim_thickness = height/2, + rim_width = 5, + hub_thickness = height/2, + hub_diameter=15, + bore_diameter=5, + circles=circles, + twist=twist/teeth); + } +} + +module test_backlash () +{ + backlash = 2; + teeth = 15; + + translate ([-29.166666,0,0]) + { + translate ([58.3333333,0,0]) + rotate ([0,0,-360/teeth/4]) + gear ( + number_of_teeth = teeth, + circular_pitch=700*pi/180, + gear_thickness = 12, + rim_thickness = 15, + rim_width = 5, + hub_thickness = 17, + hub_diameter=15, + bore_diameter=5, + backlash = 2, + circles=8); + + rotate ([0,0,360/teeth/4]) + gear ( + number_of_teeth = teeth, + circular_pitch=700*pi/180, + gear_thickness = 12, + rim_thickness = 15, + rim_width = 5, + hub_thickness = 17, + hub_diameter=15, + bore_diameter=5, + backlash = 2, + circles=8); + } + + color([0,0,1,0.5]) + translate([0,0,-5]) + cylinder ($fn=20,r=backlash / 4,h=25); +} + diff --git a/string-art-model/libraries/MCAD/layouts.scad b/string-art-model/libraries/MCAD/layouts.scad new file mode 100644 index 0000000..99496aa --- /dev/null +++ b/string-art-model/libraries/MCAD/layouts.scad @@ -0,0 +1,44 @@ + /* + * OpenSCAD Layout Library (www.openscad.org) + * Copyright (C) 2012 Peter Uithoven + * + * License: LGPL 2.1 or later +*/ + +//list(iHeight); +//grid(iWidth,iHeight,inYDir = true,limit=3) + +// Examples: +/*list(15) +{ + square([25,10]); + square([25,10]); + square([25,10]); + square([25,10]); + square([25,10]); +}*/ +/*grid(30,15,false,2) +{ + square([25,10]); + square([25,10]); + square([25,10]); + square([25,10]); + square([25,10]); +}*/ + +//---------------------- + +module list(iHeight) +{ + for (i = [0 : $children-1]) + translate([0,i*iHeight]) children(i); +} +module grid(iWidth,iHeight,inYDir = true,limit=3) +{ + for (i = [0 : $children-1]) + { + translate([(inYDir)? (iWidth)*(i%limit) : (iWidth)*floor(i/limit), + (inYDir)? (iHeight)*floor(i/limit) : (iHeight)*(i%limit)]) + children(i); + } +} \ No newline at end of file diff --git a/string-art-model/libraries/MCAD/lego_compatibility.scad b/string-art-model/libraries/MCAD/lego_compatibility.scad new file mode 100644 index 0000000..e0e759a --- /dev/null +++ b/string-art-model/libraries/MCAD/lego_compatibility.scad @@ -0,0 +1,157 @@ +// This file is placed under the public domain + +// from: http://www.thingiverse.com/thing:9512 +// Author: nefercheprure + +// Examples: +// standard LEGO 2x1 tile has no pin +// block(1,2,1/3,reinforcement=false,flat_top=true); +// standard LEGO 2x1 flat has pin +// block(1,2,1/3,reinforcement=true); +// standard LEGO 2x1 brick has pin +// block(1,2,1,reinforcement=true); +// standard LEGO 2x1 brick without pin +// block(1,2,1,reinforcement=false); +// standard LEGO 2x1x5 brick has no pin and has hollow knobs +// block(1,2,5,reinforcement=false,hollow_knob=true); + + +knob_diameter=4.8; //knobs on top of blocks +knob_height=2; +knob_spacing=8.0; +wall_thickness=1.45; +roof_thickness=1.05; +block_height=9.5; +pin_diameter=3; //pin for bottom blocks with width or length of 1 +post_diameter=6.5; +reinforcing_width=1.5; +axle_spline_width=2.0; +axle_diameter=5; +cylinder_precision=0.5; + +/* EXAMPLES: + +block(2,1,1/3,axle_hole=false,circular_hole=true,reinforcement=true,hollow_knob=true,flat_top=true); + +translate([50,-10,0]) + block(1,2,1/3,axle_hole=false,circular_hole=true,reinforcement=false,hollow_knob=true,flat_top=true); + +translate([10,0,0]) + block(2,2,1/3,axle_hole=false,circular_hole=true,reinforcement=true,hollow_knob=true,flat_top=true); +translate([30,0,0]) + block(2,2,1/3,axle_hole=false,circular_hole=true,reinforcement=true,hollow_knob=false,flat_top=false); +translate([50,0,0]) + block(2,2,1/3,axle_hole=false,circular_hole=true,reinforcement=true,hollow_knob=true,flat_top=false); +translate([0,20,0]) + block(3,2,2/3,axle_hole=false,circular_hole=true,reinforcement=true,hollow_knob=true,flat_top=false); +translate([20,20,0]) + block(3,2,1,axle_hole=true,circular_hole=false,reinforcement=true,hollow_knob=false,flat_top=false); +translate([40,20,0]) + block(3,2,1/3,axle_hole=false,circular_hole=false,reinforcement=false,hollow_knob=false,flat_top=false); +translate([0,-10,0]) + block(1,5,1/3,axle_hole=true,circular_hole=false,reinforcement=true,hollow_knob=false,flat_top=false); +translate([0,-20,0]) + block(1,5,1/3,axle_hole=true,circular_hole=false,reinforcement=true,hollow_knob=true,flat_top=false); +translate([0,-30,0]) + block(1,5,1/3,axle_hole=true,circular_hole=false,reinforcement=true,hollow_knob=true,flat_top=true); +//*/ + +module block(width,length,height,axle_hole=false,reinforcement=false, hollow_knob=false, flat_top=false, circular_hole=false, solid_bottom=true, center=false) { + overall_length=(length-1)*knob_spacing+knob_diameter+wall_thickness*2; + overall_width=(width-1)*knob_spacing+knob_diameter+wall_thickness*2; + center= center==true ? 1 : 0; + translate(center*[-overall_length/2, -overall_width/2, 0]) + union() { + difference() { + union() { + // body: + cube([overall_length,overall_width,height*block_height]); + // knobs: + if (flat_top != true) + translate([knob_diameter/2+wall_thickness,knob_diameter/2+wall_thickness,0]) + for (ycount=[0:width-1]) + for (xcount=[0:length-1]) { + translate([xcount*knob_spacing,ycount*knob_spacing,0]) + difference() { + cylinder(r=knob_diameter/2,h=block_height*height+knob_height,$fs=cylinder_precision); + if (hollow_knob==true) + translate([0,0,-roof_thickness]) + cylinder(r=pin_diameter/2,h=block_height*height+knob_height+2*roof_thickness,$fs=cylinder_precision); + } + } + } + // hollow bottom: + if (solid_bottom == false) + translate([wall_thickness,wall_thickness,-roof_thickness]) cube([overall_length-wall_thickness*2,overall_width-wall_thickness*2,block_height*height]); + // flat_top -> groove around bottom + if (flat_top == true) { + translate([-wall_thickness/2,-wall_thickness*2/3,-wall_thickness/2]) + cube([overall_length+wall_thickness,wall_thickness,wall_thickness]); + translate([-wall_thickness/2,overall_width-wall_thickness/3,-wall_thickness/2]) + cube([overall_length+wall_thickness,wall_thickness,wall_thickness]); + + translate([-wall_thickness*2/3,-wall_thickness/2,-wall_thickness/2]) + cube([wall_thickness,overall_width+wall_thickness,wall_thickness]); + translate([overall_length-wall_thickness/3,0,-wall_thickness/2]) + cube([wall_thickness,overall_width+wall_thickness,wall_thickness]); + } + if (axle_hole==true) + if (width>1 && length>1) for (ycount=[1:width-1]) + for (xcount=[1:length-1]) + translate([xcount*knob_spacing,ycount*knob_spacing,roof_thickness]) axle(height); + if (circular_hole==true) + if (width>1 && length>1) for (ycount=[1:width-1]) + for (xcount=[1:length-1]) + translate([xcount*knob_spacing,ycount*knob_spacing,roof_thickness]) + cylinder(r=knob_diameter/2, h=height*block_height+roof_thickness/4,$fs=cylinder_precision); + } + + if (reinforcement==true && width>1 && length>1) + difference() { + for (ycount=[1:width-1]) + for (xcount=[1:length-1]) + translate([xcount*knob_spacing,ycount*knob_spacing,0]) reinforcement(height); + for (ycount=[1:width-1]) + for (xcount=[1:length-1]) + translate([xcount*knob_spacing,ycount*knob_spacing,-roof_thickness/2]) cylinder(r=knob_diameter/2, h=height*block_height+roof_thickness, $fs=cylinder_precision); + } + // posts: + if (solid_bottom == false) + if (width>1 && length>1) for (ycount=[1:width-1]) + for (xcount=[1:length-1]) + translate([xcount*knob_spacing,ycount*knob_spacing,0]) post(height); + + if (reinforcement == true && width==1 && length!=1) + for (xcount=[1:length-1]) + translate([xcount*knob_spacing,overall_width/2,0]) cylinder(r=pin_diameter/2,h=block_height*height,$fs=cylinder_precision); + + if (reinforcement == true && length==1 && width!=1) + for (ycount=[1:width-1]) + translate([overall_length/2,ycount*knob_spacing,0]) cylinder(r=pin_diameter/2,h=block_height*height,$fs=cylinder_precision); + } +} + +module post(height) { + difference() { + cylinder(r=post_diameter/2, h=height*block_height-roof_thickness/2,$fs=cylinder_precision); + translate([0,0,-roof_thickness/2]) + cylinder(r=knob_diameter/2, h=height*block_height+roof_thickness/4,$fs=cylinder_precision); + } +} + +module reinforcement(height) { + union() { + translate([0,0,height*block_height/2]) union() { + cube([reinforcing_width,knob_spacing+knob_diameter+wall_thickness/2,height*block_height],center=true); + rotate(v=[0,0,1],a=90) cube([reinforcing_width,knob_spacing+knob_diameter+wall_thickness/2,height*block_height], center=true); + } + } +} + +module axle(height) { + translate([0,0,height*block_height/2]) union() { + cube([axle_diameter,axle_spline_width,height*block_height],center=true); + cube([axle_spline_width,axle_diameter,height*block_height],center=true); + } +} + diff --git a/string-art-model/libraries/MCAD/lgpl-2.1.txt b/string-art-model/libraries/MCAD/lgpl-2.1.txt new file mode 100644 index 0000000..4362b49 --- /dev/null +++ b/string-art-model/libraries/MCAD/lgpl-2.1.txt @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/string-art-model/libraries/MCAD/libtriangles.scad b/string-art-model/libraries/MCAD/libtriangles.scad new file mode 100644 index 0000000..d5f207e --- /dev/null +++ b/string-art-model/libraries/MCAD/libtriangles.scad @@ -0,0 +1,60 @@ +//Copyright (C) 2013 Alex Davies +//License: LGPL 2.1 or later +//todo, make library work with negative lengths by adding triangles to the inside of every surface. basicaly copy and paste the current triangles set and reverse the first and last digit of every triangle. In 4 character traingles switcht the middle ones around as well. Not sure if that' actually useful though. + +module rightpyramid(rightpyramidx, rightpyramidy, rightpyramidz) { + polyhedron ( points = [[0,0,0], + [rightpyramidx, 0, 0], + [0, rightpyramidy, 0], + [rightpyramidx, rightpyramidy, 0], + [rightpyramidx/2, rightpyramidy, rightpyramidz]], + + triangles = [[0,1,2],[2,1,3],[4,1,0],[3,1,4],[2,3,4],[0,2,4]]); + +} + +module cornerpyramid(cornerpyramidx, cornerpyramidy, cornerpyramidz) { + polyhedron ( points = [[0,0,0], + [cornerpyramidx, 0, 0], + [0, cornerpyramidy, 0], + [cornerpyramidx, cornerpyramidy, 0], + [0, cornerpyramidy, cornerpyramidz]], + + triangles = [[0,1,2],[2,1,3],[4,1,0],[3,1,4],[2,3,4],[0,2,4]]); + +} + +module eqlpyramid(eqlpyramidx, eqlpyramidy, eqlpyramidz) { + polyhedron ( points = [[0,0,0], + [eqlpyramidx, 0, 0], + [0, eqlpyramidy, 0], + [eqlpyramidx, eqlpyramidy, 0], + [eqlpyramidx/2, eqlpyramidy/2, eqlpyramidz]], + + triangles = [[0,1,2],[2,1,3],[4,1,0],[3,1,4],[2,3,4],[0,2,4]]); + +} + + +module rightprism(rightprismx,rightprismy,rightprismz){ + polyhedron ( points = [[0,0,0], + [rightprismx,0,0], + [rightprismx,rightprismy,0], + [0,rightprismy,0], + [0,rightprismy,rightprismz], + [0,0,rightprismz]], + triangles = [[0,1,2,3],[5,1,0],[5,4,2,1],[4,3,2],[0,3,4,5]]); +} + + + +module eqlprism(rightprismx,rightprismy,rightprismz){ + polyhedron ( points = [[0,0,0], + [rightprismx,0,0], + [rightprismx,rightprismy,0], + [0,rightprismy,0], + [rightprismx/2,rightprismy,rightprismz], + [rightprismx/2,0,rightprismz]], + triangles = [[0,1,2,3],[5,1,0],[5,4,2,1],[4,3,2],[0,3,4,5]]); +} + diff --git a/string-art-model/libraries/MCAD/linear_bearing.scad b/string-art-model/libraries/MCAD/linear_bearing.scad new file mode 100644 index 0000000..8f98bf8 --- /dev/null +++ b/string-art-model/libraries/MCAD/linear_bearing.scad @@ -0,0 +1,98 @@ +//By Glen Chung, 2013. +//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + +include +include + +LINEAR_BEARING_dr = 0; //Inscribed circle +LINEAR_BEARING_D = 1; //Outer diameter +LINEAR_BEARING_L = 2; //Length +LINEAR_BEARING_B = 3; //Outer locking groove B +LINEAR_BEARING_D1 = 4; //Outer locking groove D1 +LINEAR_BEARING_W = 5; //W + + +// Common bearing names +LinearBearing = "LM8UU"; + +// Linear Bearing dimensions +// model == "XXXXX" ? [ dr, D, L, B, D1, W]: +function linearBearingDimensions(model) = + model == "LM3UU" ? [ 3*mm, 7*mm, 10*mm, 0.0*mm, 0.0*mm, 0.00*mm]: + model == "LM4UU" ? [ 4*mm, 8*mm, 12*mm, 0.0*mm, 0.0*mm, 0.00*mm]: + model == "LM5UU" ? [ 5*mm, 10*mm, 15*mm, 10.2*mm, 9.6*mm, 1.10*mm]: + model == "LM6UU" ? [ 6*mm, 12*mm, 19*mm, 13.5*mm, 11.5*mm, 1.10*mm]: + model == "LM8SUU" ? [ 8*mm, 15*mm, 17*mm, 11.5*mm, 14.3*mm, 1.10*mm]: + model == "LM10UU" ? [ 10*mm, 19*mm, 29*mm, 22.0*mm, 18.0*mm, 1.30*mm]: + model == "LM12UU" ? [ 12*mm, 21*mm, 30*mm, 23.0*mm, 20.0*mm, 1.30*mm]: + model == "LM13UU" ? [ 13*mm, 23*mm, 32*mm, 23.0*mm, 22.0*mm, 1.30*mm]: + model == "LM16UU" ? [ 16*mm, 28*mm, 37*mm, 26.5*mm, 27.0*mm, 1.60*mm]: + model == "LM20UU" ? [ 20*mm, 32*mm, 42*mm, 30.5*mm, 30.5*mm, 1.60*mm]: + model == "LM25UU" ? [ 25*mm, 40*mm, 59*mm, 41.0*mm, 38.0*mm, 1.85*mm]: + model == "LM30UU" ? [ 30*mm, 45*mm, 64*mm, 44.5*mm, 43.0*mm, 1.85*mm]: + model == "LM35UU" ? [ 35*mm, 52*mm, 70*mm, 49.5*mm, 49.0*mm, 2.10*mm]: + model == "LM40UU" ? [ 40*mm, 60*mm, 80*mm, 60.5*mm, 57.0*mm, 2.10*mm]: + model == "LM50UU" ? [ 50*mm, 80*mm, 100*mm, 74.0*mm, 76.5*mm, 2.60*mm]: + model == "LM60UU" ? [ 60*mm, 90*mm, 110*mm, 85.0*mm, 86.5*mm, 3.15*mm]: + model == "LM80UU" ? [ 80*mm, 120*mm, 140*mm, 105.5*mm, 116.0*mm, 4.15*mm]: + model == "LM100UU" ? [100*mm, 150*mm, 150*mm, 125.5*mm, 145.0*mm, 4.15*mm]: + /*model == "LM8UU" ?*/ [ 8*mm, 15*mm, 24*mm, 17.5*mm, 14.3*mm, 1.10*mm]; + + +function linearBearing_dr(model) = linearBearingDimensions(model)[LINEAR_BEARING_dr]; +function linearBearing_D(model) = linearBearingDimensions(model)[LINEAR_BEARING_D]; +function linearBearing_L(model) = linearBearingDimensions(model)[LINEAR_BEARING_L]; +function linearBearing_B(model) = linearBearingDimensions(model)[LINEAR_BEARING_B]; +function linearBearing_D1(model) = linearBearingDimensions(model)[LINEAR_BEARING_D1]; +function linearBearing_W(model) = linearBearingDimensions(model)[LINEAR_BEARING_W]; + +module linearBearing(pos=[0,0,0], angle=[0,0,0], model=LinearBearing, + material=Steel, sideMaterial=BlackPaint) { + dr = linearBearing_dr(model); + D = linearBearing_D(model); + L = linearBearing_L(model); + B = linearBearing_B(model); + D1 = linearBearing_D1(model); + W = linearBearing_W(model); + + innerRim = dr + (D - dr) * 0.2; + outerRim = D - (D - dr) * 0.2; + midSink = W/4; + + translate(pos) rotate(angle) union() { + color(material) + difference() { + // Basic ring + Ring([0,0,0], D, dr, L, material, material); + + if(W) { + // Side shields + Ring([0,0,-epsilon], outerRim, innerRim, L*epsilon+midSink, sideMaterial, material); + Ring([0,0,L-midSink-epsilon], outerRim, innerRim, L*epsilon+midSink, sideMaterial, material); + //Outer locking groove + Ring([0,0,(L-B)/2], D+epsilon, outerRim+W/2, W, material, material); + Ring([0,0,L-(L-B)/2], D+epsilon, outerRim+W/2, W, material, material); + } + } + if(W) + Ring([0,0,midSink], D-L*epsilon, dr+L*epsilon, L-midSink*2, sideMaterial, sideMaterial); + } + + module Ring(pos, od, id, h, material, holeMaterial) { + color(material) { + translate(pos) + difference() { + cylinder(r=od/2, h=h, $fn = 100); + color(holeMaterial) + translate([0,0,-10*epsilon]) + cylinder(r=id/2, h=h+20*epsilon, $fn = 100); + } + } + } + +} + + +//examples +//linearBearing(model="LM8UU"); +//linearBearing(model="LM10UU"); diff --git a/string-art-model/libraries/MCAD/materials.scad b/string-art-model/libraries/MCAD/materials.scad new file mode 100644 index 0000000..f75edf7 --- /dev/null +++ b/string-art-model/libraries/MCAD/materials.scad @@ -0,0 +1,45 @@ +/* + * Material colors. + * + * Originally by Hans Häggström, 2010. + * Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + */ + +// Material colors +Oak = [0.65, 0.5, 0.4]; +Pine = [0.85, 0.7, 0.45]; +Birch = [0.9, 0.8, 0.6]; +FiberBoard = [0.7, 0.67, 0.6]; +BlackPaint = [0.2, 0.2, 0.2]; +Iron = [0.36, 0.33, 0.33]; +Steel = [0.65, 0.67, 0.72]; +Stainless = [0.45, 0.43, 0.5]; +Aluminum = [0.77, 0.77, 0.8]; +Brass = [0.88, 0.78, 0.5]; +Transparent = [1, 1, 1, 0.2]; + +// Example, uncomment to view +//color_demo(); + +module color_demo(){ + // Wood + colorTest(Oak, 0, 0); + colorTest(Pine, 1, 0); + colorTest(Birch, 2, 0); + + // Metals + colorTest(Iron, 0, 1); + colorTest(Steel, 1, 1); + colorTest(Stainless, 2, 1); + colorTest(Aluminum, 3, 1); + + // Mixboards + colorTest(FiberBoard, 0, 2); + + // Paints + colorTest(BlackPaint, 0, 3); +} + +module colorTest(col, row=0, c=0) { + color(col) translate([row * 30,c*30,0]) sphere(r=10); +} diff --git a/string-art-model/libraries/MCAD/math.scad b/string-art-model/libraries/MCAD/math.scad new file mode 100644 index 0000000..25b6721 --- /dev/null +++ b/string-art-model/libraries/MCAD/math.scad @@ -0,0 +1,6 @@ +// MIT license + +include + +function deg(angle) = 360*angle/TAU; + diff --git a/string-art-model/libraries/MCAD/metric_fastners.scad b/string-art-model/libraries/MCAD/metric_fastners.scad new file mode 100644 index 0000000..08b371d --- /dev/null +++ b/string-art-model/libraries/MCAD/metric_fastners.scad @@ -0,0 +1,111 @@ +/* + * OpenSCAD Metric Fastners Library (www.openscad.org) + * Copyright (C) 2010-2011 Giles Bathgate + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * LGPL version 2.1, or (at your option) any later version of the GPL. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * +*/ + +$fn=50; +apply_chamfer=true; + +module cap_bolt(dia,len) +{ + e=1.5*dia; + h1=1.25*dia; + cylinder(r=dia/2,h=len); + translate([0,0,-h1]) cylinder(r=e/2,h=h1); +} + +module csk_bolt(dia,len) +{ + h1=0.6*dia; + h2=len-h1; + cylinder(r=dia/2,h=h2); + cylinder(r1=dia,r2=dia/2,h=h1); +} + +module washer(dia) +{ + t=0.1*dia; + difference() + { + cylinder(r=dia,h=t); + translate([0,0,-t/2])cylinder(r=dia/2,h=t*2); + } +} + +module flat_nut(dia) +{ + m=0.8*dia; + e=1.8*dia; + c=0.2*dia; + difference() + { + cylinder(r=e/2,h=m,$fn=6); + translate([0,0,-m/2])cylinder(r=dia/2,h=m*2); + if(apply_chamfer) + translate([0,0,c])cylinder_chamfer(e/2,c); + } +} + +module bolt(dia,len) +{ + e=1.8*dia; + k=0.7*dia; + c=0.2*dia; + difference() + { + cylinder(r=e/2,h=k,$fn=6); + if(apply_chamfer) + translate([0,0,c])cylinder_chamfer(e/2,c); + } + + cylinder(r=dia/2,h=len); + +} + +module cylinder_chamfer(r1,r2) +{ + t=r1-r2; + p=r2*2; + rotate_extrude() + difference() + { + translate([t,-p])square([p,p]); + translate([t,0])circle(r2); + } +} + +module chamfer(len,r) +{ + p=r*2; + linear_extrude(height=len) + difference() + { + square([p,p]); + circle(r); + } +} + +union() +{ +//csk_bolt(3,14); +//washer(3); +//flat_nut(3); +//bolt(4,14); +//cylinder_chamfer(8,1); +//chamfer(10,2); +} diff --git a/string-art-model/libraries/MCAD/motors.scad b/string-art-model/libraries/MCAD/motors.scad new file mode 100644 index 0000000..d575164 --- /dev/null +++ b/string-art-model/libraries/MCAD/motors.scad @@ -0,0 +1,98 @@ +// Copyright 2010 D1plo1d + +// This library is dual licensed under the GPL 3.0 and the GNU Lesser General Public License as per http://creativecommons.org/licenses/LGPL/2.1/ . + +include + + +//generates a motor mount for the specified nema standard #. +module stepper_motor_mount(nema_standard,slide_distance=0, mochup=true, tolerance=0) { + //dimensions from: + // http://www.numberfactory.com/NEMA%20Motor%20Dimensions.htm + if (nema_standard == 17) + { + _stepper_motor_mount( + motor_shaft_diameter = 0.1968*mm_per_inch, + motor_shaft_length = 0.945*mm_per_inch, + pilot_diameter = 0.866*mm_per_inch, + pilot_length = 0.80*mm_per_inch, + mounting_bolt_circle = 1.725*mm_per_inch, + bolt_hole_size = 3.5, + bolt_hole_distance = 1.220*mm_per_inch, + slide_distance = slide_distance, + mochup = mochup, + tolerance=tolerance); + } + if (nema_standard == 23) + { + _stepper_motor_mount( + motor_shaft_diameter = 0.250*mm_per_inch, + motor_shaft_length = 0.81*mm_per_inch, + pilot_diameter = 1.500*mm_per_inch, + pilot_length = 0.062*mm_per_inch, + mounting_bolt_circle = 2.625*mm_per_inch, + bolt_hole_size = 0.195*mm_per_inch, + bolt_hole_distance = 1.856*mm_per_inch, + slide_distance = slide_distance, + mochup = mochup, + tolerance=tolerance); + } + +} + + +//inner mehod for creating a stepper motor mount of any dimensions +module _stepper_motor_mount( + motor_shaft_diameter, + motor_shaft_length, + pilot_diameter, + pilot_length, + mounting_bolt_circle, + bolt_hole_size, + bolt_hole_distance, + slide_distance = 0, + motor_length = 40, //arbitray - not standardized + mochup, + tolerance = 0 +) +{ + union() + { + // == centered mount points == + //mounting circle inset + translate([0,slide_distance/2,0]) circle(r = pilot_diameter/2 + tolerance); + square([pilot_diameter,slide_distance],center=true); + translate([0,-slide_distance/2,0]) circle(r = pilot_diameter/2 + tolerance); + + //todo: motor shaft hole + + //mounting screw holes + for (x = [-1,1]) + { + for (y = [-1,1]) + { + translate([x*bolt_hole_distance/2,y*bolt_hole_distance/2,0]) + { + translate([0,slide_distance/2,0]) circle(bolt_hole_size/2 + tolerance); + translate([0,-slide_distance/2,0]) circle(bolt_hole_size/2 + tolerance); + square([bolt_hole_size+2*tolerance,slide_distance],center=true); + } + } + } + // == motor mock-up == + //motor box + if (mochup == true) + { + %translate([0,0,-5]) cylinder(h = 5, r = pilot_diameter/2); + %translate(v=[0,0,-motor_length/2]) + { + cube(size=[bolt_hole_distance+bolt_hole_size+5,bolt_hole_distance+bolt_hole_size+5,motor_length], center = true); + } + //shaft + %translate(v=[0,0,-(motor_length-motor_shaft_length-2)/2]) + { + %cylinder(r=motor_shaft_diameter/2,h=motor_length+motor_shaft_length--1, center = true); + } + } + } +} diff --git a/string-art-model/libraries/MCAD/multiply.scad b/string-art-model/libraries/MCAD/multiply.scad new file mode 100644 index 0000000..63e54cb --- /dev/null +++ b/string-art-model/libraries/MCAD/multiply.scad @@ -0,0 +1,30 @@ +/* + * Multiplication along certain curves + * + * Copyright by Elmo Mäntynen, 2012. + * Licenced under LGPL2 or later + */ + +include + +use + +// Copy everything $no of times around an $axis, spread over $angle +// If $strict==true or $angle==360, then spacing will leave an empty at $angle, +// otherwise, $no will be distributed so first is at 0deg, last copy at $angle degrees +// NOTE: $axis works (rotates around that axis), but pass parameter as lower case string +// eg: "x", "y", or "z". Alternatively, use units.scad vector definitions: X, Y, Z +module spin(no, angle=360, axis=Z, strict=false){ + divisor = (strict || angle==360) ? no : no-1; + for (i = [0:no-1]) + rotate(normalized_axis(axis)*angle*i/divisor) + children(); +} + +// Make a copy of children by rotating around $axis by 180 degrees +module duplicate(axis=Z) spin(no=2, axis=axis) children(); + +// Make $no copies along the $axis, separated by $separation +module linear_multiply(no, separation, axis=Z) + for (i = [0:no-1]) + translate(i*separation*normalized_axis(axis)) children(); diff --git a/string-art-model/libraries/MCAD/nuts_and_bolts.scad b/string-art-model/libraries/MCAD/nuts_and_bolts.scad new file mode 100644 index 0000000..95c275a --- /dev/null +++ b/string-art-model/libraries/MCAD/nuts_and_bolts.scad @@ -0,0 +1,227 @@ +// Copyright 2010 D1plo1d + +// This library is dual licensed under the GPL 3.0 and the GNU Lesser General Public License as per http://creativecommons.org/licenses/LGPL/2.1/ . + +//testNutsAndBolts(); + +module SKIPtestNutsAndBolts() +{ + $fn = 360; + translate([0,15])nutHole(3, proj=2); + boltHole(3, length= 30, proj=2); +} + +MM = "mm"; +INCH = "inch"; //Not yet supported + +//Based on: http://www.roymech.co.uk/Useful_Tables/Screws/Hex_Screws.htm +METRIC_NUT_AC_WIDTHS = +[ + -1, //0 index is not used but reduces computation + -1, + 4.38,//m2 + 6.40,//m3 + 8.10,//m4 + 9.20,//m5 + 11.50,//m6 + -1, + 15.00,//m8 + -1, + 19.60,//m10 + -1, + 22.10,//m12 + -1, + -1, + -1, + 27.70,//m16 + -1, + -1, + -1, + 34.60,//m20 + -1, + -1, + -1, + 41.60,//m24 + -1, + -1, + -1, + -1, + -1, + 53.1,//m30 + -1, + -1, + -1, + -1, + -1, + 63.5//m36 +]; +METRIC_NUT_THICKNESS = +[ + -1, //0 index is not used but reduces computation + -1, + 1.6,//m2 + 2.40,//m3 + 3.20,//m4 + 4.00,//m5 + 5.00,//m6 + -1, + 6.50,//m8 + -1, + 8.00,//m10 + -1, + 10.00,//m12 + -1, + -1, + -1, + 13.00,//m16 + -1, + -1, + -1, + 16.00//m20 + -1, + -1, + -1, + 19.00,//m24 + -1, + -1, + -1, + -1, + -1, + 24.00,//m30 + -1, + -1, + -1, + -1, + -1, + 29.00//m36 +]; + +COARSE_THREAD_METRIC_BOLT_MAJOR_DIAMETERS = +[//based on max values + -1, //0 index is not used but reduces computation + -1, + 1.6,//m2 + 2.98,//m3 + 3.978,//m4 + 4.976,//m5 + 5.974,//m6 + -1, + 7.972,//m8 + -1, + 9.968,//m10 + -1, + 11.966,//m12 + -1, + -1, + -1, + 15.962,//m16 + -1, + -1, + -1, + 19.958,//m20 + -1, + -1, + -1, + 23.952,//m24 + -1, + -1, + -1, + -1, + -1, + 29.947,//m30 + -1, + -1, + -1, + -1, + -1, + 35.940//m36 +]; + +// Deprecated, but kept around for people who use the wrong spelling. +COURSE_METRIC_BOLT_MAJOR_THREAD_DIAMETERS = COARSE_THREAD_METRIC_BOLT_MAJOR_DIAMETERS; + +//Based on: http://www.roymech.co.uk/Useful_Tables/Screws/cap_screws.htm +METRIC_BOLT_CAP_DIAMETERS = +[ + -1, //0 index is not used but reduces computation + -1, + 3.8, + 5.50,//m3 + 7.00,//m4 + 8.50,//m5 + 10.00,//m6 + -1, + 13.00,//m8 + -1, + 16.00,//m10 + -1, + 18.00,//m12 + -1, + -1, + -1, + 24.00,//m16 + -1, + -1, + -1, + 30.00//m20 + -1, + -1, + -1, + 36.00,//m24 + -1, + -1, + -1, + -1, + -1, + 45.00,//m30 + -1, + -1, + -1, + -1, + -1, + 54.00//m36 +]; + +module nutHole(size, units=MM, tolerance = +0.0001, proj = -1) +{ + //takes a metric screw/nut size and looksup nut dimensions + radius = METRIC_NUT_AC_WIDTHS[size]/2+tolerance; + height = METRIC_NUT_THICKNESS[size]+tolerance; + if (proj == -1) + { + cylinder(r= radius, h=height, $fn = 6, center=[0,0]); + } + if (proj == 1) + { + circle(r= radius, $fn = 6); + } + if (proj == 2) + { + translate([-radius/2, 0]) + square([radius*2, height]); + } +} + +module boltHole(size, units=MM, length, tolerance = +0.0001, proj = -1) +{ + radius = COARSE_THREAD_METRIC_BOLT_MAJOR_DIAMETERS[size]/2+tolerance; + capHeight = size+tolerance; + capRadius = METRIC_BOLT_CAP_DIAMETERS[size]/2+tolerance; + + if (proj == -1) + { + translate([0, 0, -capHeight]) + cylinder(r= capRadius, h=capHeight); + cylinder(r = radius, h = length); + } + if (proj == 1) + { + circle(r = radius); + } + if (proj == 2) + { + translate([-capRadius/2, -capHeight]) + square([capRadius*2, capHeight]); + square([radius*2, length]); + } +} diff --git a/string-art-model/libraries/MCAD/openscad_testing.py b/string-art-model/libraries/MCAD/openscad_testing.py new file mode 100644 index 0000000..05f30e7 --- /dev/null +++ b/string-art-model/libraries/MCAD/openscad_testing.py @@ -0,0 +1,53 @@ +import py +import os.path +from openscad_utils import * + + +temppath = py.test.ensuretemp('MCAD') + +def pytest_generate_tests(metafunc): + if "modpath" in metafunc.funcargnames: + args1 = [] + args2 = [] + for fpath, modnames in collect_test_modules().items(): + basename = os.path.splitext(os.path.split(str(fpath))[1])[0] + if "modname" in metafunc.funcargnames: + for modname in modnames: + args2.append([fpath, modname]) + else: + args1.append(fpath) + + if "modname" in metafunc.funcargnames: + metafunc.parametrize(["modpath", "modname"], args2) + else: + metafunc.parametrize("modpath", args1) + +def test_module_compile(modname, modpath): + tempname = modpath.basename + '-' + modname + '.scad' + fpath = temppath.join(tempname) + stlpath = temppath.join(tempname + ".stl") + f = fpath.open('w') + code = """ +//generated testfile +use <%s> + +%s(); +""" % (modpath, modname) + print(code) + f.write(code) + f.flush() + output = call_openscad(path=fpath, stlpath=stlpath, timeout=60) + print(output) + assert output[0] is 0 + for s in ("warning", "error"): + assert s not in output[2].strip().lower().decode("utf-8") + assert len(stlpath.readlines()) > 2 + +def test_file_compile(modpath): + stlpath = temppath.join(modpath.basename + "-test.stl") + output = call_openscad(path=modpath, stlpath=stlpath) + print(output) + assert output[0] is 0 + for s in ("warning", "error"): + assert s not in output[2].strip().lower().decode("utf-8") + assert len(stlpath.readlines()) == 2 diff --git a/string-art-model/libraries/MCAD/openscad_utils.py b/string-art-model/libraries/MCAD/openscad_utils.py new file mode 100644 index 0000000..c4a0880 --- /dev/null +++ b/string-art-model/libraries/MCAD/openscad_utils.py @@ -0,0 +1,64 @@ +import py, re, os, signal, time, subprocess, sys +from subprocess import Popen, PIPE + +mod_re = (r"\bmodule\s+(", r")\s*\(\s*") +func_re = (r"\bfunction\s+(", r")\s*\(") + +def extract_definitions(fpath, name_re=r"\w+", def_re=""): + regex = name_re.join(def_re) + matcher = re.compile(regex) + return (m.group(1) for m in matcher.finditer(fpath.read())) + +def extract_mod_names(fpath, name_re=r"\w+"): + return extract_definitions(fpath, name_re=name_re, def_re=mod_re) + +def extract_func_names(fpath, name_re=r"\w+"): + return extract_definitions(fpath, name_re=name_re, def_re=func_re) + +def collect_test_modules(dirpath=None): + dirpath = dirpath or py.path.local("./") + print("Collecting openscad test module names") + + test_files = {} + for fpath in dirpath.visit('*.scad'): + #print(fpath) + modules = extract_mod_names(fpath, r"test\w*") + #functions = extract_func_names(fpath, r"test\w*") + test_files[fpath] = modules + return test_files + +class Timeout(Exception): pass + +def call_openscad(path, stlpath, timeout=5): + if sys.platform == 'darwin': exe = 'OpenSCAD.app/Contents/MacOS/OpenSCAD' + else: exe = 'openscad' + command = [exe, '-o', str(stlpath), str(path)] + print(command) + if timeout: + try: + proc = Popen(command, + stdout=PIPE, stderr=PIPE, close_fds=True) + calltime = time.time() + time.sleep(0.05) + #print(calltime) + while True: + if proc.poll() is not None: + break + time.sleep(0.5) + #print(time.time()) + if time.time() > calltime + timeout: + raise Timeout() + finally: + try: + proc.terminate() + proc.kill() + except OSError: + pass + + return (proc.returncode,) + proc.communicate() + else: + output = subprocess.getstatusoutput(" ".join(command)).decode("utf-8") + return output + ('', '') + +def parse_output(text): + pass diff --git a/string-art-model/libraries/MCAD/polyholes.scad b/string-art-model/libraries/MCAD/polyholes.scad new file mode 100644 index 0000000..266b0ce --- /dev/null +++ b/string-art-model/libraries/MCAD/polyholes.scad @@ -0,0 +1,29 @@ +// Copyright 2011 Nophead (of RepRap fame) +// This file is licensed under the terms of Creative Commons Attribution 3.0 Unported. + +// Using this holes should come out approximately right when printed +module polyhole(h, d=0, r=0, center=false) { + _r = (r == 0 ? d / 2 : r); + _d = (d == 0 ? r * 2 : d); + + n = max(round(2 * _d),3); + + rotate([0,0,180]) + cylinder(h = h, r = (_d / 2) / cos (180 / n), $fn = n, center=center); +} + +module test_polyhole(){ +difference() { + cube(size = [100,27,3]); + union() { + for(i = [1:10]) { + translate([(i * i + i)/2 + 3 * i , 8,-1]) + polyhole(h = 5, d = i); + + let(d = i + 0.5) + translate([(d * d + d)/2 + 3 * d, 19,-1]) + polyhole(h = 5, d = d); + } + } +} +} diff --git a/string-art-model/libraries/MCAD/profiles.scad b/string-art-model/libraries/MCAD/profiles.scad new file mode 100644 index 0000000..bd77e1c --- /dev/null +++ b/string-art-model/libraries/MCAD/profiles.scad @@ -0,0 +1,89 @@ +// ============================================== +// Miscellaneous profiles (aluminum etc) +// By Vitaly Mankevich / contraptor.org, (c) 2012 +// LGPL 2.1 +// ============================================== +// +// PROFILES (DIMENSIONLESS UNLESS SPECIFIED) +// ----------------------------------------- +// profile_angle_equal(1, 1/8); +// profile_angle_unequal(1, 1/2, 1/16); +// profile_square_tube(1.5, 1/8); +// profile_rect_tube(1.5, 2, 1/8); +// profile_channel(1.5, 1, 1/8); +// +// profile_8020_fractional_1010(); // inches +// profile_misumi_metric_2020(); // millimeters +// profile_makerbeam(); // millimeters +// +// EXTRUDED PROFILES +// ----------------- +// linear_extrude (height = 3.5) profile_square_tube(1.5, 1/8); +// + +$fn = 24; + +module profile_angle_equal(side, wall) { + difference () { + square (side); + translate([wall, wall, 0]) square (side - wall); + } +} + +module profile_angle_unequal(side_x, side_y, wall) { + difference () { + square ([side_x, side_y]); + translate ([wall, wall, 0]) square ([side_x - wall, side_y - wall]); + } +} + +module profile_square_tube(side, wall) { + difference () { + square (side, center = true); + square (side-wall*2, center = true); + } +} + +module profile_rect_tube(side_x, side_y, wall) { + difference () { + square ([side_x, side_y], center = true); + square ([side_x - wall*2, side_y - wall*2], center = true); + } +} + +module profile_channel(base, side, wall) { + translate ([0, side/2, 0]) difference () { + square ([base, side], center = true); + translate ([0, wall/2, 0]) square ([base - wall*2, side - wall], center = true); + } +} + +module profile_tslot_generic (pitch, slot, lip, web, core, hole) { + // pitch = side width, slot = slot width, lip = thickness of the lip, web = thickness of the web, core = side of the center square, hole = center hole diameter + difference () { + union() { + difference () { + square (pitch, center=true); + square (pitch - lip*2, center=true); + square ([pitch, slot], center=true); + square ([slot, pitch], center=true); + } + rotate ([0, 0, 45]) square ([pitch*1.15, web], center=true); + rotate ([0, 0, -45]) square ([pitch*1.15, web], center=true); + square (core, center=true); + } + circle (hole/2); + } +} + +module profile_8020_fractional_1010 () { + profile_tslot_generic (pitch = 1, slot = 0.26, lip = 0.1, web = 0.13, core = 0.45, hole = 0.28); +} + +module profile_misumi_metric_2020 () { + profile_tslot_generic (pitch = 20, slot = 5.2, lip = 2, web = 2.6, core = 9, hole = 5.6); +} + +module profile_makerbeam () { + profile_tslot_generic (pitch = 10, slot = 2.5, lip = 1, web = 2, core = 1, hole = 0); +} diff --git a/string-art-model/libraries/MCAD/regular_shapes.scad b/string-art-model/libraries/MCAD/regular_shapes.scad new file mode 100644 index 0000000..c3acbcb --- /dev/null +++ b/string-art-model/libraries/MCAD/regular_shapes.scad @@ -0,0 +1,262 @@ +/* + * OpenSCAD Shapes Library (www.openscad.org) + * Copyright (C) 2010-2011 Giles Bathgate, Elmo Mäntynen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, + * LGPL version 2.1, or (at your option) any later version of the GPL. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * +*/ + +// 2D regular shapes + +module triangle(radius) +{ + o=radius/2; //equivalent to radius*sin(30) + a=radius*sqrt(3)/2; //equivalent to radius*cos(30) + polygon(points=[[-a,-o],[0,radius],[a,-o]],paths=[[0,1,2]]); +} + +module reg_polygon(sides, radius) { + echo(" + DEPRECATED: function 'reg_polygon' is now deprecated + please use 'regular_polygon' instead"); + + regular_polygon(sides, radius); +} + +module regular_polygon(sides, radius) +{ + function dia(r) = sqrt(pow(r*2,2)/2); //sqrt((r*2^2)/2) if only we had an exponention op + if(sides<2) square([radius,0]); + if(sides==3) triangle(radius); + if(sides==4) square([dia(radius),dia(radius)],center=true); + if(sides>4) { + angles=[ for (i = [0:sides-1]) i*(360/sides) ]; + coords=[ for (th=angles) [radius*cos(th), radius*sin(th)] ]; + polygon(coords); + } +} + +module pentagon(radius) +{ + regular_polygon(5,radius); +} + +module hexagon(radius, diameter, across_flats) +{ + r = across_flats ? across_flats/2/cos(30) : diameter ? diameter/2 : radius; + regular_polygon(6,r); +} + +module heptagon(radius) +{ + regular_polygon(7,radius); +} + +module octagon(radius) +{ + regular_polygon(8,radius); +} + +module nonagon(radius) +{ + regular_polygon(9,radius); +} + +module decagon(radius) +{ + regular_polygon(10,radius); +} + +module hendecagon(radius) +{ + regular_polygon(11,radius); +} + +module dodecagon(radius) +{ + regular_polygon(12,radius); +} + +module ring(inside_diameter, thickness){ + difference(){ + circle(r=(inside_diameter+thickness*2)/2); + circle(r=inside_diameter/2); + } +} + +module ellipse(width, height) { + scale([1, height/width, 1]) circle(r=width/2); +} + +// The ratio of length and width is about 1.39 for a real egg +module egg_outline(width, length){ + translate([0, width/2, 0]) union(){ + rotate([0, 0, 180]) difference(){ + ellipse(width, 2*length-width); + translate([-length/2, 0, 0]) square(length); + } + circle(r=width/2); + } +} + +//3D regular shapes + +module cone(height, radius, center = false) +{ + cylinder(height, radius, 0, center); +} + +module oval_prism(height, rx, ry, center = false) +{ + scale([1, rx/ry, 1]) cylinder(h=height, r=ry, center=center); +} + +module oval_tube(height, rx, ry, wall, center = false) +{ + difference() { + scale([1, ry/rx, 1]) cylinder(h=height, r=rx, center=center); + translate([0,0,-height/2]) scale([(rx-wall)/rx, (ry-wall)/rx, 2]) cylinder(h=height, r=rx, center=center); + } +} + +module cylinder_tube(height, radius, wall, center = false) +{ + tubify(radius,wall) + cylinder(h=height, r=radius, center=center); +} + +//Tubifies any regular prism +module tubify(radius,wall) +{ + difference() + { + children(0); + translate([0, 0, -0.1]) scale([(radius-wall)/radius, (radius-wall)/radius, 2]) children(0); + } +} + +module triangle_prism(height,radius) +{ + linear_extrude(height=height) triangle(radius); +} + +module triangle_tube(height,radius,wall) +{ + tubify(radius,wall) triangle_prism(height,radius); +} + +module pentagon_prism(height,radius) +{ + linear_extrude(height=height) pentagon(radius); +} + +module pentagon_tube(height,radius,wall) +{ + tubify(radius,wall) pentagon_prism(height,radius); +} + +module hexagon_prism(height, radius, across_flats) +{ + linear_extrude(height=height) + hexagon(radius=radius, across_flats=across_flats); +} + +module hexagon_tube(height,radius,wall) +{ + tubify(radius,wall) hexagon_prism(height,radius); +} + +module heptagon_prism(height,radius) +{ + linear_extrude(height=height) heptagon(radius); +} + +module heptagon_tube(height,radius,wall) +{ + tubify(radius,wall) heptagon_prism(height,radius); +} + +module octagon_prism(height,radius) +{ + linear_extrude(height=height) octagon(radius); +} + +module octagon_tube(height,radius,wall) +{ + tubify(radius,wall) octagon_prism(height,radius); +} + +module nonagon_prism(height,radius) +{ + linear_extrude(height=height) nonagon(radius); +} + +module decagon_prism(height,radius) +{ + linear_extrude(height=height) decagon(radius); +} + +module hendecagon_prism(height,radius) +{ + linear_extrude(height=height) hendecagon(radius); +} + +module dodecagon_prism(height,radius) +{ + linear_extrude(height=height) dodecagon(radius); +} + +module torus(outerRadius, innerRadius) +{ + r=(outerRadius-innerRadius)/2; + rotate_extrude() translate([innerRadius+r,0,0]) circle(r); +} + +module torus2(r1, r2) +{ + rotate_extrude() translate([r1,0,0]) circle(r2); +} + +module oval_torus(inner_radius, thickness=[0, 0]) +{ + rotate_extrude() translate([inner_radius+thickness[0]/2,0,0]) ellipse(width=thickness[0], height=thickness[1]); +} + + +module triangle_pyramid(radius) +{ + o=radius/2; //equivalent to radius*sin(30) + a=radius*sqrt(3)/2; //equivalent to radius*cos(30) + polyhedron(points=[[-a,-o,-o],[a,-o,-o],[0,radius,-o],[0,0,radius]],triangles=[[0,1,2],[1,2,3],[0,1,3],[0,2,3]]); +} + +module square_pyramid(base_x, base_y,height) +{ + w=base_x/2; + h=base_y/2; + polyhedron(points=[[-w,-h,0],[-w,h,0],[w,h,0],[w,-h,0],[0,0,height]],triangles=[[0,3,2,1], [0,1,4], [1,2,4], [2,3,4], [3,0,4]]); +} + +module egg(width, length){ + rotate_extrude() + difference(){ + egg_outline(width, length); + translate([-length, 0, 0]) cube(2*length, center=true); + } +} + +// Tests: + +test_square_pyramid(){square_pyramid(10, 20, 30);} diff --git a/string-art-model/libraries/MCAD/screw.scad b/string-art-model/libraries/MCAD/screw.scad new file mode 100644 index 0000000..2cea0b5 --- /dev/null +++ b/string-art-model/libraries/MCAD/screw.scad @@ -0,0 +1,64 @@ +// Parametric screw-like things (ball screws, augers) +// License: GNU LGPL 2.1 or later. +// © 2010 by Elmo Mäntynen + +include + +/* common screw parameter +length +pitch = length/rotations: the distance between the turns of the thread +outside_diameter +inner_diameter: thickness of the shaft +*/ + +//Uncomment to see examples +//test_auger(); +//test_ball_groove(); +//test_ball_groove2(); +//test_ball_screw(); + +module helix(pitch, length, slices=500){ + rotations = length/pitch; + linear_extrude(height=length, center=false, convexity=10, twist=360*rotations, slices=slices, $fn=100) + children(); +} + +module auger(pitch, length, outside_radius, inner_radius, taper_ratio = 0.25) { + union(){ + helix(pitch, length) + polygon(points=[[0,inner_radius],[outside_radius,(inner_radius * taper_ratio)],[outside_radius,(inner_radius * -1 * taper_ratio)],[0,(-1 * inner_radius)]], paths=[[0,1,2,3]]); + cylinder(h=length, r=inner_radius); + } +} + +module test_auger(){translate([50, 0, 0]) auger(40, 80, 25, 5);} + + +module ball_groove(pitch, length, diameter, ball_radius=10) { + helix(pitch, length, slices=100) + translate([diameter, 0, 0]) + circle(r = ball_radius); +} + +module test_ball_groove(){ translate([0, 300, 0]) ball_groove(100, 300, 10);} + +module ball_groove2(pitch, length, diameter, ball_radius, slices=200){ + rotations = length/pitch; + radius=diameter/2; + offset = length/slices; + union(){ + for (i = [0:slices]) { + let (z = i*offset){ + translate(helix_curve(pitch, radius, z)) sphere(ball_radius, $fa=5, $fs=1); + } + } + } +} + +module test_ball_groove2(){translate([0, 0, 0]) ball_groove2(100, 300, 100, 10);} + +module ball_screw(pitch, length, bearing_radius=2) { + +} + +module test_ball_screw(){} diff --git a/string-art-model/libraries/MCAD/servos.scad b/string-art-model/libraries/MCAD/servos.scad new file mode 100644 index 0000000..4970e76 --- /dev/null +++ b/string-art-model/libraries/MCAD/servos.scad @@ -0,0 +1,200 @@ +/** + * Servo outline library + * + * Authors: + * - Eero 'rambo' af Heurlin 2010- + * + * License: LGPL 2.1 + */ + +use + +/** + * TowerPro SG90 servo + * + * @param vector position The position vector + * @param vector rotation The rotation vector + * @param boolean screws If defined then "screws" will be added and when the module is differenced() from something if will have holes for the screws + * @param boolean cables If defined then "cables" output will be added and when the module is differenced() from something if will have holes for the cables output + * @param number axle_length If defined this will draw a red indicator for the main axle + */ +module towerprosg90(position=undef, rotation=undef, screws = 0, axle_length = 0, cables=0) +{ + translate(position) rotate(rotation) { + difference(){ + union() + { + translate([-5.9,-11.8/2,0]) cube([22.5,11.8,22.7]); + translate([0,0,22.7-0.1]){ + cylinder(d=11.8,h=4+0.1); + hull(){ + translate([8.8-5/2,0,0]) cylinder(d=5,h=4+0.1); + cylinder(d=5,h=4+0.1); + } + translate([0,0,4]) cylinder(d=4.6,h=3.2); + } + translate([-4.7-5.9,-11.8/2,15.9]) cube([22.5+4.7*2, 11.8, 2.5]); + } + //screw holes + translate([-2.3-5.9,0,15.9+1.25]) cylinder(d=2,h=5, center=true); + translate([-2.3-5.9-2,0,15.9+1.25]) cube([3,1.3,5], center=true); + translate([2.3+22.5-5.9,0,15.9+1.25]) cylinder(d=2,h=5, center=true); + translate([2.3+22.5-5.9+2,0,15.9+1.25]) cube([3,1.3,5], center=true); + } + if (axle_length > 0) { + color("red", 0.3) translate([0,0,29.9/2]) cylinder(r=1, h=29.9+axle_length, center=true); + } + if (cables > 0) color("red", 0.3) translate([-12.4,-1.8,4.5]) cube([10,3.6,1.2]); + if(screws > 0) color("red", 0.3) { + translate([-2.3-5.9,0,15.9+1.25]) cylinder(d=2,h=10, center=true); + translate([2.3+22.5-5.9,0,15.9+1.25]) cylinder(d=2,h=10, center=true); + } + } + +} + +/** + * Align DS420 digital servo + * + * @param vector position The position vector + * @param vector rotation The rotation vector + * @param boolean screws If defined then "screws" will be added and when the module is differenced() from something if will have holes for the screws + * @param number axle_lenght If defined this will draw "backgound" indicator for the main axle + */ +module alignds420(position, rotation, screws = 0, axle_lenght = 0) +{ + translate(position) + { + rotate(rotation) + { + union() + { + // Main axle + translate([0,0,17]) + { + cylinder(r=6, h=8, $fn=30); + cylinder(r=2.5, h=10.5, $fn=20); + } + // Box and ears + translate([-6,-6,0]) + { + cube([12, 22.8,19.5], false); + translate([0,-5, 17]) + { + cube([12, 7, 2.5]); + } + translate([0, 20.8, 17]) + { + cube([12, 7, 2.5]); + } + } + if (screws > 0) + { + translate([0,(-10.2 + 1.8),11.5]) + { + # cylinder(r=1.8/2, h=6, $fn=6); + } + translate([0,(21.0 - 1.8),11.5]) + { + # cylinder(r=1.8/2, h=6, $fn=6); + } + + } + // The large slope + translate([-6,0,19]) + { + rotate([90,0,90]) + { + triangle(4, 18, 12); + } + } + + /** + * This seems to get too complex fast + // Small additional axes + translate([0,6,17]) + { + cylinder(r=2.5, h=6, $fn=10); + cylinder(r=1.25, h=8, $fn=10); + } + // Small slope + difference() + { + translate([-6,-6,19.0]) + { + cube([12,6.5,4]); + } + translate([7,-7,24.0]) + { + rotate([-90,0,90]) + { + triangle(3, 8, 14); + } + } + + } + */ + // So we render a cube instead of the small slope on a cube + translate([-6,-6,19.0]) + { + cube([12,6.5,4]); + } + } + if (axle_lenght > 0) + { + % cylinder(r=0.9, h=axle_lenght, center=true, $fn=8); + } + } + } +} + +/** + * Futaba S3003 servo + * + * @param vector position The position vector + * @param vector rotation The rotation vector + */ +module futabas3003(position, rotation) +{ + translate(position) + { + rotate(rotation) + { + union() + { + // Box and ears + translate([0,0,0]) + { + cube([20.1, 39.9, 36.1], false); + translate([1.1, -7.6, 26.6]) + { + difference() { + cube([18, 7.6, 2.5]); + translate([4, 3.5, 0]) cylinder(100, 2); + translate([14, 3.5, 0]) cylinder(100, 2); + } + } + + translate([1.1, 39.9, 26.6]) + { + difference() { + cube([18, 7.6, 2.5]); + translate([4, 4.5, 0]) cylinder(100, 2); + translate([14, 4.5, 0]) cylinder(100, 2); + } + } + } + + // Main axle + translate([10, 30, 36.1]) + { + cylinder(r=6, h=0.4, $fn=30); + cylinder(r=2.5, h=4.9, $fn=20); + } + } + } + } +} + +// Tests: +module test_alignds420(){alignds420(screws=1);} diff --git a/string-art-model/libraries/MCAD/shapes.scad b/string-art-model/libraries/MCAD/shapes.scad new file mode 100644 index 0000000..a769a39 --- /dev/null +++ b/string-art-model/libraries/MCAD/shapes.scad @@ -0,0 +1,182 @@ +/* + * OpenSCAD Shapes Library (www.openscad.org) + * Copyright (C) 2009 Catarina Mota + * Copyright (C) 2010 Elmo Mäntynen + * + * License: LGPL 2.1 or later +*/ + +include + +/* +2D Shapes +ngon(sides, radius, center=false); + +3D Shapes +box(width, height, depth); +roundedBox(width, height, depth, radius); +cone(height, radius); +ellipticalCylinder(width, height, depth); +ellipsoid(width, height); +tube(height, radius, wall, center = false); +tube2(height, ID, OD, center = false); +ovalTube(width, height, depth, wall, center = false); +hexagon(height, depth); +octagon(height, depth); +dodecagon(height, depth); +hexagram(height, depth); + +rightTriangle(adjacent, opposite, depth); +equiTriangle(side, depth); +12ptStar(height, depth); +*/ + +//---------------------- + +echo_deprecated_shapes_library(); + +module echo_deprecated_shapes_library() { + echo(" + DEPRECATED: 'shapes' library is now deprecated + please use 'regular_shapes' instead"); +} + +// size is a vector [w, h, d] +module box(width, height, depth) { + echo_deprecated_shapes_library(); + cube([width, height, depth], true); +} + +// size is a vector [w, h, d] +module roundedBox(width, height, depth, radius) { + echo_deprecated_shapes_library(); + size=[width, height, depth]; + cube(size - [2*radius,0,0], true); + cube(size - [0,2*radius,0], true); + for (x = [radius-size[0]/2, -radius+size[0]/2], + y = [radius-size[1]/2, -radius+size[1]/2]) { + translate([x,y,0]) cylinder(r=radius, h=size[2], center=true); + } +} + +module cone(height, radius, center = false) { + echo_deprecated_shapes_library(); + cylinder(height, radius, 0, center); +} + +module ellipticalCylinder(w,h, height, center = false) { + echo_deprecated_shapes_library(); + scale([1, h/w, 1]) cylinder(h=height, r=w, center=center); +} + +module ellipsoid(w, h, center = false) { + echo_deprecated_shapes_library(); + scale([1, h/w, 1]) sphere(r=w/2, center=center); +} + +// wall is wall thickness +module tube(height, radius, wall, center = false) { + echo_deprecated_shapes_library(); + linear_extrude (height = height, center = center) { + difference() { + circle(r = radius); + circle(r = radius - wall); + } + } + difference() { + cylinder(h=height, r=radius, center=center); + translate([0,0,-epsilon]) + cylinder(h=height+2*epsilon, r=radius-wall, center=center); + } +} + +module tube2(height, ID, OD, center = false) { + tube(height = height, center = center, radius = OD / 2, wall = (OD - ID)/2); +} + +// wall is wall thickness +module ovalTube(height, rx, ry, wall, center = false) { + echo_deprecated_shapes_library(); + difference() { + scale([1, ry/rx, 1]) cylinder(h=height, r=rx, center=center); + scale([(rx-wall)/rx, (ry-wall)/rx, 1]) cylinder(h=height, r=rx, center=center); + } +} + +// size is the XY plane size, height in Z +module hexagon(size, height) { + echo_deprecated_shapes_library(); + boxWidth = size/1.75; + for (r = [-60, 0, 60]) + rotate([0,0,r]) + cube([boxWidth, size, height], true); +} + +// size is the XY plane size, height in Z +module octagon(size, height) { + echo_deprecated_shapes_library(); + intersection() { + cube([size, size, height], true); + rotate([0,0,45]) + cube([size, size, height], true); + } +} + +// size is the XY plane size, height in Z +module dodecagon(size, height) { + echo_deprecated_shapes_library(); + intersection() { + hexagon(size, height); + rotate([0,0,90]) hexagon(size, height); + } +} + +// size is the XY plane size, height in Z +module hexagram(size, height) { + echo_deprecated_shapes_library(); + boxWidth=size/1.75; + for (v = [[0,1],[0,-1],[1,-1]]) { + intersection() { + rotate([0,0,60*v[0]]) cube([size, boxWidth, height], true); + rotate([0,0,60*v[1]]) cube([size, boxWidth, height], true); + } + } +} + +module rightTriangle(adjacent, opposite, height) { + echo_deprecated_shapes_library(); + difference() { + translate([-adjacent/2,opposite/2,0]) + cube([adjacent, opposite, height], true); + translate([-adjacent,0,0]) { + rotate([0,0,atan(opposite/adjacent)]) + dislocateBox(adjacent*2, opposite, height+2); + } + } +} + +module equiTriangle(side, height) { + echo_deprecated_shapes_library(); + difference() { + translate([-side/2,side/2,0]) cube([side, side, height], true); + rotate([0,0,30]) dislocateBox(side*2, side, height); + translate([-side,0,0]) { + rotate([0,0,60]) dislocateBox(side*2, side, height); + } + } +} + +module 12ptStar(size, height) { + echo_deprecated_shapes_library(); + starNum = 3; + starAngle = 90/starNum; + for (s = [1:starNum]) { + rotate([0, 0, s*starAngle]) cube([size, size, height], true); + } +} + +//----------------------- +//MOVES THE ROTATION AXIS OF A BOX FROM ITS CENTER TO THE BOTTOM LEFT CORNER +module dislocateBox(w, h, d) { + translate([0,0,-d/2]) cube([w,h,d]); +} diff --git a/string-art-model/libraries/MCAD/stepper.scad b/string-art-model/libraries/MCAD/stepper.scad new file mode 100644 index 0000000..d1f2c66 --- /dev/null +++ b/string-art-model/libraries/MCAD/stepper.scad @@ -0,0 +1,313 @@ +/* + * A nema standard stepper motor module. + * + * Originally by Hans Häggström, 2010. + * Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + */ + +include +include + + +// Demo, uncomment to show: +//nema_demo(); + +module nema_demo(){ + for (size = [NemaShort, NemaMedium, NemaLong]) { + translate([-100,size*100,0]) motor(Nema34, size, dualAxis=true); + translate([0,size*100,0]) motor(Nema23, size, dualAxis=true); + translate([100,size*100,0]) motor(Nema17, size, dualAxis=true); + translate([200,size*100,0]) motor(Nema14, size, dualAxis=true); + translate([300,size*100,0]) motor(Nema11, size, dualAxis=true); + translate([400,size*100,0]) motor(Nema08, size, dualAxis=true); + } +} + + +// Parameters: +NemaModel = 0; +NemaLengthShort = 1; +NemaLengthMedium = 2; +NemaLengthLong = 3; +NemaSideSize = 4; +NemaDistanceBetweenMountingHoles = 5; +NemaMountingHoleDiameter = 6; +NemaMountingHoleDepth = 7; +NemaMountingHoleLip = 8; +NemaMountingHoleCutoutRadius = 9; +NemaEdgeRoundingRadius = 10; +NemaRoundExtrusionDiameter = 11; +NemaRoundExtrusionHeight = 12; +NemaAxleDiameter = 13; +NemaFrontAxleLength = 14; +NemaBackAxleLength = 15; +NemaAxleFlatDepth = 16; +NemaAxleFlatLengthFront = 17; +NemaAxleFlatLengthBack = 18; + +NemaA = 1; +NemaB = 2; +NemaC = 3; + +NemaShort = NemaA; +NemaMedium = NemaB; +NemaLong = NemaC; + +// TODO: The small motors seem to be a bit too long, I picked the size specs from all over the place, is there some canonical reference? +Nema08 = [ + [NemaModel, 8], + [NemaLengthShort, 33*mm], + [NemaLengthMedium, 43*mm], + [NemaLengthLong, 43*mm], + [NemaSideSize, 20*mm], + [NemaDistanceBetweenMountingHoles, 15.4*mm], + [NemaMountingHoleDiameter, 2*mm], + [NemaMountingHoleDepth, 1.75*mm], + [NemaMountingHoleLip, -1*mm], + [NemaMountingHoleCutoutRadius, 0*mm], + [NemaEdgeRoundingRadius, 2*mm], + [NemaRoundExtrusionDiameter, 16*mm], + [NemaRoundExtrusionHeight, 1.5*mm], + [NemaAxleDiameter, 4*mm], + [NemaFrontAxleLength, 13.5*mm], + [NemaBackAxleLength, 9.9*mm], + [NemaAxleFlatDepth, -1*mm], + [NemaAxleFlatLengthFront, 0*mm], + [NemaAxleFlatLengthBack, 0*mm] + ]; + +Nema11 = [ + [NemaModel, 11], + [NemaLengthShort, 32*mm], + [NemaLengthMedium, 40*mm], + [NemaLengthLong, 52*mm], + [NemaSideSize, 28*mm], + [NemaDistanceBetweenMountingHoles, 23*mm], + [NemaMountingHoleDiameter, 2.5*mm], + [NemaMountingHoleDepth, 2*mm], + [NemaMountingHoleLip, -1*mm], + [NemaMountingHoleCutoutRadius, 0*mm], + [NemaEdgeRoundingRadius, 2.5*mm], + [NemaRoundExtrusionDiameter, 22*mm], + [NemaRoundExtrusionHeight, 1.8*mm], + [NemaAxleDiameter, 5*mm], + [NemaFrontAxleLength, 13.7*mm], + [NemaBackAxleLength, 10*mm], + [NemaAxleFlatDepth, 0.5*mm], + [NemaAxleFlatLengthFront, 10*mm], + [NemaAxleFlatLengthBack, 9*mm] + ]; + +Nema14 = [ + [NemaModel, 14], + [NemaLengthShort, 26*mm], + [NemaLengthMedium, 28*mm], + [NemaLengthLong, 34*mm], + [NemaSideSize, 35.3*mm], + [NemaDistanceBetweenMountingHoles, 26*mm], + [NemaMountingHoleDiameter, 3*mm], + [NemaMountingHoleDepth, 3.5*mm], + [NemaMountingHoleLip, -1*mm], + [NemaMountingHoleCutoutRadius, 0*mm], + [NemaEdgeRoundingRadius, 5*mm], + [NemaRoundExtrusionDiameter, 22*mm], + [NemaRoundExtrusionHeight, 1.9*mm], + [NemaAxleDiameter, 5*mm], + [NemaFrontAxleLength, 18*mm], + [NemaBackAxleLength, 10*mm], + [NemaAxleFlatDepth, 0.5*mm], + [NemaAxleFlatLengthFront, 15*mm], + [NemaAxleFlatLengthBack, 9*mm] + ]; + +Nema17 = [ + [NemaModel, 17], + [NemaLengthShort, 33*mm], + [NemaLengthMedium, 39*mm], + [NemaLengthLong, 47*mm], + [NemaSideSize, 42.20*mm], + [NemaDistanceBetweenMountingHoles, 31.04*mm], + [NemaMountingHoleDiameter, 4*mm], + [NemaMountingHoleDepth, 4.5*mm], + [NemaMountingHoleLip, -1*mm], + [NemaMountingHoleCutoutRadius, 0*mm], + [NemaEdgeRoundingRadius, 7*mm], + [NemaRoundExtrusionDiameter, 22*mm], + [NemaRoundExtrusionHeight, 1.9*mm], + [NemaAxleDiameter, 5*mm], + [NemaFrontAxleLength, 18*mm], + [NemaBackAxleLength, 15*mm], + [NemaAxleFlatDepth, 0.5*mm], + [NemaAxleFlatLengthFront, 15*mm], + [NemaAxleFlatLengthBack, 14*mm] + ]; + +Nema23 = [ + [NemaModel, 23], + [NemaLengthShort, 39*mm], + [NemaLengthMedium, 54*mm], + [NemaLengthLong, 76*mm], + [NemaSideSize, 56.4*mm], + [NemaDistanceBetweenMountingHoles, 47.14*mm], + [NemaMountingHoleDiameter, 4.75*mm], + [NemaMountingHoleDepth, 5*mm], + [NemaMountingHoleLip, 4.95*mm], + [NemaMountingHoleCutoutRadius, 9.5*mm], + [NemaEdgeRoundingRadius, 2.5*mm], + [NemaRoundExtrusionDiameter, 38.10*mm], + [NemaRoundExtrusionHeight, 1.52*mm], + [NemaAxleDiameter, 6.36*mm], + [NemaFrontAxleLength, 18.80*mm], + [NemaBackAxleLength, 15.60*mm], + [NemaAxleFlatDepth, 0.5*mm], + [NemaAxleFlatLengthFront, 16*mm], + [NemaAxleFlatLengthBack, 14*mm] + ]; + +Nema34 = [ + [NemaModel, 34], + [NemaLengthShort, 66*mm], + [NemaLengthMedium, 96*mm], + [NemaLengthLong, 126*mm], + [NemaSideSize, 85*mm], + [NemaDistanceBetweenMountingHoles, 69.58*mm], + [NemaMountingHoleDiameter, 6.5*mm], + [NemaMountingHoleDepth, 5.5*mm], + [NemaMountingHoleLip, 5*mm], + [NemaMountingHoleCutoutRadius, 17*mm], + [NemaEdgeRoundingRadius, 3*mm], + [NemaRoundExtrusionDiameter, 73.03*mm], + [NemaRoundExtrusionHeight, 1.9*mm], + [NemaAxleDiameter, 0.5*inch], + [NemaFrontAxleLength, 37*mm], + [NemaBackAxleLength, 34*mm], + [NemaAxleFlatDepth, 1.20*mm], + [NemaAxleFlatLengthFront, 25*mm], + [NemaAxleFlatLengthBack, 25*mm] + ]; + + + +function motorWidth(model=Nema23) = lookup(NemaSideSize, model); +function motorLength(model=Nema23, size=NemaMedium) = lookup(size, model); + + +module motor(model=Nema23, size=NemaMedium, dualAxis=false, pos=[0,0,0], orientation = [0,0,0]) { + + length = lookup(size, model); + + echo(str(" Motor: Nema",lookup(NemaModel, model),", length= ",length,"mm, dual axis=",dualAxis)); + + stepperBlack = BlackPaint; + stepperAluminum = Aluminum; + + side = lookup(NemaSideSize, model); + + cutR = lookup(NemaMountingHoleCutoutRadius, model); + lip = lookup(NemaMountingHoleLip, model); + holeDepth = lookup(NemaMountingHoleDepth, model); + + axleLengthFront = lookup(NemaFrontAxleLength, model); + axleLengthBack = lookup(NemaBackAxleLength, model); + axleRadius = lookup(NemaAxleDiameter, model) * 0.5; + + extrSize = lookup(NemaRoundExtrusionHeight, model); + extrRad = lookup(NemaRoundExtrusionDiameter, model) * 0.5; + + holeDist = lookup(NemaDistanceBetweenMountingHoles, model) * 0.5; + holeRadius = lookup(NemaMountingHoleDiameter, model) * 0.5; + + mid = side / 2; + + roundR = lookup(NemaEdgeRoundingRadius, model); + + axleFlatDepth = lookup(NemaAxleFlatDepth, model); + axleFlatLengthFront = lookup(NemaAxleFlatLengthFront, model); + axleFlatLengthBack = lookup(NemaAxleFlatLengthBack, model); + + color(stepperBlack){ + translate(pos) rotate(orientation) { + translate([-mid, -mid, 0]) + difference() { + cube(size=[side, side, length + extrSize]); + + // Corner cutouts + if (lip > 0) { + translate([0, 0, lip]) cylinder(h=length, r=cutR); + translate([side, 0, lip]) cylinder(h=length, r=cutR); + translate([0, side, lip]) cylinder(h=length, r=cutR); + translate([side, side, lip]) cylinder(h=length, r=cutR); + + } + + // Rounded edges + if (roundR > 0) { + translate([mid+mid, mid+mid, length/2]) + rotate([0,0,45]) + cube(size=[roundR, roundR*2, 4+length + extrSize+2], center=true); + translate([mid-(mid), mid+(mid), length/2]) + rotate([0,0,45]) + cube(size=[roundR*2, roundR, 4+length + extrSize+2], center=true); + translate([mid+mid, mid-mid, length/2]) + rotate([0,0,45]) + cube(size=[roundR*2, roundR, 4+length + extrSize+2], center=true); + translate([mid-mid, mid-mid, length/2]) + rotate([0,0,45]) + cube(size=[roundR, roundR*2, 4+length + extrSize+2], center=true); + + } + + // Bolt holes + color(stepperAluminum, $fs=holeRadius/8) { + translate([mid+holeDist,mid+holeDist,-1*mm]) cylinder(h=holeDepth+1*mm+extrSize, r=holeRadius); + translate([mid-holeDist,mid+holeDist,-1*mm]) cylinder(h=holeDepth+1*mm+extrSize, r=holeRadius); + translate([mid+holeDist,mid-holeDist,-1*mm]) cylinder(h=holeDepth+1*mm+extrSize, r=holeRadius); + translate([mid-holeDist,mid-holeDist,-1*mm]) cylinder(h=holeDepth+1*mm+extrSize, r=holeRadius); + + } + + // Grinded flat + color(stepperAluminum) { + difference() { + translate([-1*mm, -1*mm, -1*mm]) + cube(size=[side+2*mm, side+2*mm, extrSize + 1*mm]); + translate([side/2, side/2, -1*mm]) + cylinder(h=extrSize + 1*mm, r=extrRad); + } + } + + } + + // Axle + translate([0, 0, extrSize-axleLengthFront]) color(stepperAluminum) + difference() { + + cylinder(h=axleLengthFront + 1*mm , r=axleRadius, $fs=axleRadius/10); + + // Flat + if (axleFlatDepth > 0) + translate([axleRadius - axleFlatDepth,-5*mm,-extrSize*mm -(axleLengthFront-axleFlatLengthFront)] ) cube(size=[5*mm, 10*mm, axleLengthFront]); + } + + if (dualAxis) { + translate([0, 0, length+extrSize]) color(stepperAluminum) + difference() { + + cylinder(h=axleLengthBack + 0*mm, r=axleRadius, $fs=axleRadius/10); + + // Flat + if (axleFlatDepth > 0) + translate([axleRadius - axleFlatDepth,-5*mm,(axleLengthBack-axleFlatLengthBack)]) cube(size=[5*mm, 10*mm, axleLengthBack]); + } + + } + + } + } +} + +module roundedBox(size, edgeRadius) { + cube(size); + +} + diff --git a/string-art-model/libraries/MCAD/teardrop.scad b/string-art-model/libraries/MCAD/teardrop.scad new file mode 100644 index 0000000..16b16cd --- /dev/null +++ b/string-art-model/libraries/MCAD/teardrop.scad @@ -0,0 +1,57 @@ +/* From http://www.thingiverse.com/thing:3457 + © 2010 whosawhatsis + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + + +/* +This script generates a teardrop shape at the appropriate angle to prevent overhangs greater than 45 degrees. The angle is in degrees, and is a rotation around the Y axis. You can then rotate around Z to point it in any direction. Rotation around X or Y will cause the angle to be wrong. +*/ + +module teardrop(radius, length, angle) { + rotate([0, angle, 0]) union() { + linear_extrude(height = length, center = true, convexity = radius, twist = 0) + circle(r = radius, $fn = 30); + linear_extrude(height = length, center = true, convexity = radius, twist = 0) + projection(cut = false) rotate([0, -angle, 0]) translate([0, 0, radius * sin(45) * 1.5]) cylinder(h = radius * sin(45), r1 = radius * sin(45), r2 = 0, center = true, $fn = 30); + } + + //I worked this portion out when a bug was causing the projection above to take FOREVER to calculate. It works as a replacement, and I figured I'd leave it here just in case. + /* + #polygon(points = [[radius * cos(-angle / 2), radius * sin(-angle / 2), 0],[radius * cos(-angle / 2), radius * -sin(-angle / 2), 0],[(sin(-angle - 45) + cos(-angle - 45)) * radius, 0, 0]], paths = [[0, 1, 2]]); + #polygon(points = [[radius * -cos(-angle / 2), radius * sin(-angle / 2), 0],[radius * -cos(-angle / 2), radius * -sin(-angle / 2), 0],[(sin(-angle - 45) + cos(-angle - 45)) * radius, 0, 0]], paths = [[0, 1, 2]]); + #polygon(points = [[radius * sin(-angle / 2), radius * cos(-angle / 2), 0],[radius * sin(-angle / 2), radius * -cos(-angle / 2), 0],[(sin(-angle - 45) + cos(-angle - 45)) * radius, 0, 0]], paths = [[0, 1, 2]]); + */ +} + +/* + * Simple intersection method to implement a flat/truncated teardrop + */ +module flat_teardrop(radius, length, angle) { + intersection() { + rotate([0, angle, 0]) { + cube(size=[radius * 2, radius * 2, length], center=true); + } + teardrop(radius, length, angle); + } +} + +module test_teardrop(){ + translate([0, -15, 0]) teardrop(5, 20, 90); + translate([0, 0, 0]) teardrop(5, 20, 60); + translate([0, 15, 0]) teardrop(5, 20, 45); +} + +//test_teardrop(); diff --git a/string-art-model/libraries/MCAD/test_docs.py b/string-art-model/libraries/MCAD/test_docs.py new file mode 100644 index 0000000..ff5c188 --- /dev/null +++ b/string-art-model/libraries/MCAD/test_docs.py @@ -0,0 +1,20 @@ +import py +import os.path + +dirpath = py.path.local("./") + +def pytest_generate_tests(metafunc): + names = [] + if "filename" in metafunc.funcargnames: + for fpath in dirpath.visit('*.scad'): + names.append(fpath.basename) + for fpath in dirpath.visit('*.py'): + name = fpath.basename + if not (name.startswith('test_') or name.startswith('_')): + names.append(name) + metafunc.parametrize("filename", names) + +def test_README(filename): + README = dirpath.join('README.markdown').read() + + assert filename in README diff --git a/string-art-model/libraries/MCAD/test_mcad.py b/string-art-model/libraries/MCAD/test_mcad.py new file mode 100644 index 0000000..7048842 --- /dev/null +++ b/string-art-model/libraries/MCAD/test_mcad.py @@ -0,0 +1 @@ +from openscad_testing import * diff --git a/string-art-model/libraries/MCAD/transformations.scad b/string-art-model/libraries/MCAD/transformations.scad new file mode 100644 index 0000000..54ca755 --- /dev/null +++ b/string-art-model/libraries/MCAD/transformations.scad @@ -0,0 +1,6 @@ +// License: GNU LGPL 2.1 or later. +// © 2010 by Elmo Mäntynen + +module local_scale(v, reference=[0, 0, 0]) { + translate(-reference) scale(v) translate(reference) children(); +} diff --git a/string-art-model/libraries/MCAD/triangles.scad b/string-art-model/libraries/MCAD/triangles.scad new file mode 100644 index 0000000..f0e14ad --- /dev/null +++ b/string-art-model/libraries/MCAD/triangles.scad @@ -0,0 +1,64 @@ +/** + * Simple triangles library + * + * Authors: + * - Eero 'rambo' af Heurlin 2010- + * + * License: LGPL 2.1 + */ + + +/** + * Standard right-angled triangle + * + * @param number o_len Length of the opposite side + * @param number a_len Length of the adjacent side + * @param number depth How wide/deep the triangle is in the 3rd dimension + * @param boolean center Whether to center the triangle on the origin + * @todo a better way ? + */ +module triangle(o_len, a_len, depth, center=false) +{ + centroid = center ? [-a_len/3, -o_len/3, -depth/2] : [0, 0, 0]; + translate(centroid) linear_extrude(height=depth) + { + polygon(points=[[0,0],[a_len,0],[0,o_len]], paths=[[0,1,2]]); + } +} + +/** + * Standard right-angled triangle (tangent version) + * + * @param number tan_angle Angle of adjacent to hypotenuse (ie tangent) + * @param number a_len Length of the adjacent side + * @param number depth How wide/deep the triangle is in the 3rd dimension + * @param boolean center Whether to center the triangle on the origin + */ +module a_triangle(tan_angle, a_len, depth, center=false) +{ + triangle(tan(tan_angle) * a_len, a_len, depth, center); +} + +// Tests: +module test_triangle() { triangle(5, 5, 5); } +module test_a_triangle() { a_triangle(45, 5, 5); } +module test_triangles() +{ + // Generate a bunch of triangles by sizes + for (i = [1:10]) + { + translate([i*7, -30, i*7]) + { + triangle(i*5, sqrt(i*5+pow(i,2)), 5); + } + } + + // Generate a bunch of triangles by angle + for (i = [1:85/5]) + { + translate([i*7, 22, i*7]) + { + a_triangle(i*5, 10, 5); + } + } +} diff --git a/string-art-model/libraries/MCAD/trochoids.scad b/string-art-model/libraries/MCAD/trochoids.scad new file mode 100644 index 0000000..9908330 --- /dev/null +++ b/string-art-model/libraries/MCAD/trochoids.scad @@ -0,0 +1,290 @@ +//=========================================== +// Public Domain Epi- and Hypo- trochoids in OpenSCAD +// version 1.0 +// by Matt Moses, 2011, mmoses152@gmail.com +// http://www.thingiverse.com/thing:8067 +// +// This file is public domain. Use it for any purpose, including commercial +// applications. Attribution would be nice, but is not required. There is +// no warranty of any kind, including its correctness, usefulness, or safety. +// +// An EPITROCHOID is a curve traced by a point +// fixed at a distance "d" +// to the center of a circle of radius "r" +// as the circle rolls +// outside another circle of radius "R". +// +// An HYPOTROCHOID is a curve traced by a point +// fixed at a distance "d" +// to the center of a circle of radius "r" +// as the circle rolls +// inside another circle of radius "R". +// +// An EPICYCLOID is an epitrochoid with d = r. +// +// An HYPOCYCLOID is an hypotrochoid with d = r. +// +// See http://en.wikipedia.org/wiki/Epitrochoid +// and http://en.wikipedia.org/wiki/Hypotrochoid +// +// Beware the polar forms of the equations on Wikipedia... +// They are correct, but theta is measured to the center of the small disk!! +//=========================================== + +// There are several different methods for extruding. The best are probably +// the ones using linear extrude. + + +//=========================================== +// Demo - draws one of each, plus some little wheels and sticks. +// +// Fun stuff to try: +// Animate, try FPS = 5 and Steps = 200 +// R = 2, r = 1, d = 0.2 +// R = 4, r = 1, d = 1 +// R = 2, r = 1, d = 0.5 +// +// What happens when you make d > r ?? +// What happens when d < 0 ?? +// What happens when r < 0 ?? +// +//=========================================== + +$fn = 30; + +thickness = 2; +R = 4; +r = 1; +d = 1; +n = 60; // number of wedge segments + +alpha = 360*$t; + +color([0, 0, 1]) +translate([0, 0, -0.5]) + cylinder(h = 1, r= R, center = true); + +color([0, 1, 0]) +epitrochoid(R,r,d,n,thickness); + +color([1, 0, 0]) +translate([ (R+r)*cos(alpha) , (R+r)*sin(alpha), -0.5]) { + rotate([0, 0, alpha + R/r*alpha]) { + cylinder(h = 1, r = r, center = true); + translate([-d, 0, 1.5]) { + cylinder(h = 2.2, r = 0.1, center = true); + } + } +} + + +translate([2*(abs(R) + abs(r) + abs(d)), 0, 0]){ +color([0, 0, 1]) +translate([0, 0, -0.5]) + difference() { + cylinder(h = 1, r = 1.1*R, center = true); + cylinder(h = 1.1, r= R, center = true); + } + +color([0, 1, 0]) +hypotrochoid(R,r,d,n,thickness); + +color([1, 0, 0]) +translate([ (R-r)*cos(alpha) , (R-r)*sin(alpha), -0.5]) { + rotate([0, 0, alpha - R/r*alpha]) { + cylinder(h = 1, r = r, center = true); + translate([d, 0, 1.5]) { + cylinder(h = 2.2, r = 0.1, center = true); + } + } +} +} + +// This just makes a twisted hypotrochoid +translate([0,14, 0]) +hypotrochoidLinear(4, 1, 1, 40, 40, 10, 30); + +// End of Demo Section +//=========================================== + + +//=========================================== +// Epitrochoid +// +module epitrochoid(R, r, d, n, thickness) { + dth = 360/n; + for ( i = [0:n-1] ) { + polyhedron(points = [[0,0,0], + [(R+r)*cos(dth*i) - d*cos((R+r)/r*dth*i), (R+r)*sin(dth*i) - d*sin((R+r)/r*dth*i), 0], + [(R+r)*cos(dth*(i+1)) - d*cos((R+r)/r*dth*(i+1)), (R+r)*sin(dth*(i+1)) - d*sin((R+r)/r*dth*(i+1)), 0], + [0,0,thickness], + [(R+r)*cos(dth*i) - d*cos((R+r)/r*dth*i), (R+r)*sin(dth*i) - d*sin((R+r)/r*dth*i), thickness], + [(R+r)*cos(dth*(i+1)) - d*cos((R+r)/r*dth*(i+1)), (R+r)*sin(dth*(i+1)) - d*sin((R+r)/r*dth*(i+1)), thickness]], + triangles = [[0, 2, 1], + [0, 1, 3], + [3, 1, 4], + [3, 4, 5], + [0, 3, 2], + [2, 3, 5], + [1, 2, 4], + [2, 5, 4]]); + } +} +//=========================================== + + +//=========================================== +// Hypotrochoid +// +module hypotrochoid(R, r, d, n, thickness) { + dth = 360/n; + for ( i = [0:n-1] ) { + polyhedron(points = [[0,0,0], + [(R-r)*cos(dth*i) + d*cos((R-r)/r*dth*i), (R-r)*sin(dth*i) - d*sin((R-r)/r*dth*i), 0], + [(R-r)*cos(dth*(i+1)) + d*cos((R-r)/r*dth*(i+1)), (R-r)*sin(dth*(i+1)) - d*sin((R-r)/r*dth*(i+1)), 0], + [0,0,thickness], + [(R-r)*cos(dth*i) + d*cos((R-r)/r*dth*i), (R-r)*sin(dth*i) - d*sin((R-r)/r*dth*i), thickness], + [(R-r)*cos(dth*(i+1)) + d*cos((R-r)/r*dth*(i+1)), (R-r)*sin(dth*(i+1)) - d*sin((R-r)/r*dth*(i+1)), thickness]], + triangles = [[0, 2, 1], + [0, 1, 3], + [3, 1, 4], + [3, 4, 5], + [0, 3, 2], + [2, 3, 5], + [1, 2, 4], + [2, 5, 4]]); + } +} +//=========================================== + + +//=========================================== +// Epitrochoid Wedge with Bore +// +module epitrochoidWBore(R, r, d, n, p, thickness, rb) { + dth = 360/n; + union() { + for ( i = [0:p-1] ) { + polyhedron(points = [[rb*cos(dth*i), rb*sin(dth*i),0], + [(R+r)*cos(dth*i) - d*cos((R+r)/r*dth*i), (R+r)*sin(dth*i) - d*sin((R+r)/r*dth*i), 0], + [(R+r)*cos(dth*(i+1)) - d*cos((R+r)/r*dth*(i+1)), (R+r)*sin(dth*(i+1)) - d*sin((R+r)/r*dth*(i+1)), 0], + [rb*cos(dth*(i+1)), rb*sin(dth*(i+1)), 0], + [rb*cos(dth*i), rb*sin(dth*i), thickness], + [(R+r)*cos(dth*i) - d*cos((R+r)/r*dth*i), (R+r)*sin(dth*i) - d*sin((R+r)/r*dth*i), thickness], + [(R+r)*cos(dth*(i+1)) - d*cos((R+r)/r*dth*(i+1)), (R+r)*sin(dth*(i+1)) - d*sin((R+r)/r*dth*(i+1)), thickness], + [rb*cos(dth*(i+1)), rb*sin(dth*(i+1)), thickness]], + triangles = [[0, 1, 4], [4, 1, 5], + [1, 2, 5], [5, 2, 6], + [2, 3, 7], [7, 6, 2], + [3, 0, 4], [4, 7, 3], + [4, 5, 7], [7, 5, 6], + [0, 3, 1], [1, 3, 2]]); + } + } +} +//=========================================== + + +//=========================================== +// Epitrochoid Wedge with Bore, Linear Extrude +// +module epitrochoidWBoreLinear(R, r, d, n, p, thickness, rb, twist) { + dth = 360/n; + linear_extrude(height = thickness, convexity = 10, twist = twist) { + union() { + for ( i = [0:p-1] ) { + polygon(points = [[rb*cos(dth*i), rb*sin(dth*i)], + [(R+r)*cos(dth*i) - d*cos((R+r)/r*dth*i), (R+r)*sin(dth*i) - d*sin((R+r)/r*dth*i)], + [(R+r)*cos(dth*(i+1)) - d*cos((R+r)/r*dth*(i+1)), (R+r)*sin(dth*(i+1)) - d*sin((R+r)/r*dth*(i+1))], + [rb*cos(dth*(i+1)), rb*sin(dth*(i+1))]], + paths = [[0, 1, 2, 3]], convexity = 10); + } + } + } +} +//=========================================== + + +//=========================================== +// Epitrochoid Wedge, Linear Extrude +// +module epitrochoidLinear(R, r, d, n, p, thickness, twist) { + dth = 360/n; + linear_extrude(height = thickness, convexity = 10, twist = twist) { + union() { + for ( i = [0:p-1] ) { + polygon(points = [[0, 0], + [(R+r)*cos(dth*i) - d*cos((R+r)/r*dth*i), (R+r)*sin(dth*i) - d*sin((R+r)/r*dth*i)], + [(R+r)*cos(dth*(i+1)) - d*cos((R+r)/r*dth*(i+1)), (R+r)*sin(dth*(i+1)) - d*sin((R+r)/r*dth*(i+1))]], + paths = [[0, 1, 2]], convexity = 10); + } + } + } +} +//=========================================== + + +//=========================================== +// Hypotrochoid Wedge with Bore +// +module hypotrochoidWBore(R, r, d, n, p, thickness, rb) { + dth = 360/n; + union() { + for ( i = [0:p-1] ) { + polyhedron(points = [[rb*cos(dth*i), rb*sin(dth*i),0], + [(R-r)*cos(dth*i) + d*cos((R-r)/r*dth*i), (R-r)*sin(dth*i) - d*sin((R-r)/r*dth*i), 0], + [(R-r)*cos(dth*(i+1)) + d*cos((R-r)/r*dth*(i+1)), (R-r)*sin(dth*(i+1)) - d*sin((R-r)/r*dth*(i+1)), 0], + [rb*cos(dth*(i+1)), rb*sin(dth*(i+1)), 0], + [rb*cos(dth*i), rb*sin(dth*i), thickness], + [(R-r)*cos(dth*i) + d*cos((R-r)/r*dth*i), (R-r)*sin(dth*i) - d*sin((R-r)/r*dth*i), thickness], + [(R-r)*cos(dth*(i+1)) + d*cos((R-r)/r*dth*(i+1)), (R-r)*sin(dth*(i+1)) - d*sin((R-r)/r*dth*(i+1)), thickness], + [rb*cos(dth*(i+1)), rb*sin(dth*(i+1)), thickness]], + triangles = [[0, 1, 4], [4, 1, 5], + [1, 2, 5], [5, 2, 6], + [2, 3, 7], [7, 6, 2], + [3, 0, 4], [4, 7, 3], + [4, 5, 7], [7, 5, 6], + [0, 3, 1], [1, 3, 2]]); + } + } +} +//=========================================== + + +//=========================================== +// Hypotrochoid Wedge with Bore, Linear Extrude +// +module hypotrochoidWBoreLinear(R, r, d, n, p, thickness, rb, twist) { + dth = 360/n; + linear_extrude(height = thickness, convexity = 10, twist = twist) { + union() { + for ( i = [0:p-1] ) { + polygon(points = [[rb*cos(dth*i), rb*sin(dth*i)], + [(R-r)*cos(dth*i) + d*cos((R-r)/r*dth*i), (R-r)*sin(dth*i) - d*sin((R-r)/r*dth*i)], + [(R-r)*cos(dth*(i+1)) + d*cos((R-r)/r*dth*(i+1)), (R-r)*sin(dth*(i+1)) - d*sin((R-r)/r*dth*(i+1))], + [rb*cos(dth*(i+1)), rb*sin(dth*(i+1))]], + paths = [[0, 1, 2, 3]], convexity = 10); + } + } + } +} +//=========================================== + + +//=========================================== +// Hypotrochoid Wedge, Linear Extrude +// +module hypotrochoidLinear(R, r, d, n, p, thickness, twist) { + dth = 360/n; + linear_extrude(height = thickness, convexity = 10, twist = twist) { + union() { + for ( i = [0:p-1] ) { + polygon(points = [[0, 0], + [(R-r)*cos(dth*i) + d*cos((R-r)/r*dth*i), (R-r)*sin(dth*i) - d*sin((R-r)/r*dth*i)], + [(R-r)*cos(dth*(i+1)) + d*cos((R-r)/r*dth*(i+1)), (R-r)*sin(dth*(i+1)) - d*sin((R-r)/r*dth*(i+1))]], + paths = [[0, 1, 2]], convexity = 10); + } + } + } +} +//=========================================== diff --git a/string-art-model/libraries/MCAD/units.scad b/string-art-model/libraries/MCAD/units.scad new file mode 100644 index 0000000..61d0d7f --- /dev/null +++ b/string-art-model/libraries/MCAD/units.scad @@ -0,0 +1,29 @@ +/* + * Basic units. + * + * Originally by Hans Häggström, 2010. + * Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + */ + + +mm = 1; +cm = 10 * mm; +dm = 100 * mm; +m = 1000 * mm; + +inch = 25.4 * mm; + +X = [1, 0, 0]; +Y = [0, 1, 0]; +Z = [0, 0, 1]; + +M3 = 3*mm; +M4 = 4*mm; +M5 = 5*mm; +M6 = 6*mm; +M8 = 8*mm; + + +// When a small distance is needed to overlap shapes for boolean cutting, etc. +epsilon = 0.01*mm; + diff --git a/string-art-model/libraries/MCAD/unregular_shapes.scad b/string-art-model/libraries/MCAD/unregular_shapes.scad new file mode 100644 index 0000000..f1d0a64 --- /dev/null +++ b/string-art-model/libraries/MCAD/unregular_shapes.scad @@ -0,0 +1,10 @@ +// Copyright 2011 Elmo Mäntynen +// LGPL 2.1 + +// Give a list of 4+4 points (check order) to form an 8 point polyhedron +module connect_squares(points){ + polyhedron(points=points, + triangles=[[0,1,2], [3,0,2], [7,6,5], [7,5,4], // Given polygons + [0,4,1], [4,5,1], [1,5,2], [2,5,6], // Connecting + [2,6,3], [3,6,7], [3,4,0], [3,7,4]]);// sides +} diff --git a/string-art-model/libraries/MCAD/utilities.scad b/string-art-model/libraries/MCAD/utilities.scad new file mode 100644 index 0000000..b37d155 --- /dev/null +++ b/string-art-model/libraries/MCAD/utilities.scad @@ -0,0 +1,60 @@ +/* + * Utility functions. + * + * Originally by Hans Häggström, 2010. + * Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + */ + +include + +function distance(a, b) = sqrt( (a[0] - b[0])*(a[0] - b[0]) + + (a[1] - b[1])*(a[1] - b[1]) + + (a[2] - b[2])*(a[2] - b[2]) ); + +function length2(a) = sqrt( a[0]*a[0] + a[1]*a[1] ); + +function normalized(a) = a / (max(distance([0,0,0], a), 0.00001)); + +function normalized_axis(a) = a == "x" ? [1, 0, 0]: + a == "y" ? [0, 1, 0]: + a == "z" ? [0, 0, 1]: normalized(a); + +function angleOfNormalizedVector(n) = [0, -atan2(n[2], length2([n[0], n[1]])), atan2(n[1], n[0]) ]; + +function angle(v) = angleOfNormalizedVector(normalized(v)); + +function angleBetweenTwoPoints(a, b) = angle(normalized(b-a)); + + +CENTER = 0; +LEFT = -0.5; +RIGHT = 0.5; +TOP = 0.5; +BOTTOM = -0.5; + +FlatCap =0; +ExtendedCap =0.5; +CutCap =-0.5; + + +module fromTo(from=[0,0,0], to=[1*m,0,0], size=[1*cm, 1*cm], align=[CENTER, CENTER], material=[0.5, 0.5, 0.5], name="", endExtras=[0,0], endCaps=[FlatCap, FlatCap], rotation=[0,0,0], printString=true) { + + angle = angleBetweenTwoPoints(from, to); + length = distance(from, to) + endCaps[0]*size[0] + endCaps[1]*size[0] + endExtras[0] + endExtras[1]; + + if (length > 0) { + if (printString) echo(str(" " ,name, " ", size[0], "mm x ", size[1], "mm, length ",length,"mm")); + + color(material) + translate(from) + rotate(angle) + translate( [ -endCaps[0]*size[0] - endExtras[0], size[0]*(-0.5-align[0]), size[1]*(-0.5+align[1]) ] ) + rotate(rotation) + scale([length, size[0], size[1]]) children(); + } +} + +module part(name) { + echo(""); + echo(str(name, ":")); +} diff --git a/string-art-model/main.json b/string-art-model/main.json new file mode 100644 index 0000000..16ed1a8 --- /dev/null +++ b/string-art-model/main.json @@ -0,0 +1,6 @@ +{ + "parameterSets": { + "nailboard": "" + }, + "fileFormatVersion": "1" +} diff --git a/string-art-model/main.scad b/string-art-model/main.scad new file mode 100644 index 0000000..f951e20 --- /dev/null +++ b/string-art-model/main.scad @@ -0,0 +1,10 @@ + +include +include + +include +include + +translate([motor_mount_axel_offset_x, motor_mount_axel_offset_y, nail_board_thickness/2+2*mm]) + nail_board_with_nails(); +motor_mount(); \ No newline at end of file diff --git a/string-art-model/models/motorMount.scad b/string-art-model/models/motorMount.scad new file mode 100644 index 0000000..0f20549 --- /dev/null +++ b/string-art-model/models/motorMount.scad @@ -0,0 +1,20 @@ +include <../constants/motorMount.scad> + +module motor_mount() { + color(motor_mount_colour) + difference() { + cube([motor_mount_width, motor_mount_height, motor_mount_thickness], center=true); + + // Axle hole + translate([motor_mount_axel_offset_x, motor_mount_axel_offset_y, -motor_mount_thickness]) { + cylinder(h = motor_mount_thickness*2, r = motor_mount_axel_radius, $fn=100); + } + + } + + // Fabric pole + color(motor_mount_colour) + translate([motor_mount_fabric_pole_offset_x, motor_mount_fabric_pole_offset_y, motor_mount_thickness/2]) { + cylinder(h = motor_mount_fabric_pole_height, r = motor_mount_fabric_pole_radius, $fn=100); + } +} \ No newline at end of file diff --git a/string-art-model/models/nailBoard.scad b/string-art-model/models/nailBoard.scad new file mode 100644 index 0000000..9d9d2c1 --- /dev/null +++ b/string-art-model/models/nailBoard.scad @@ -0,0 +1,35 @@ +include <../constants/nailBoard.scad> + +module nail(position = [0,0], angle = 0) { + color(nail_colour) + translate(position) + rotate([0,0,angle]) + union() { + // Nail shaft + translate([0,0,nail_board_thickness]) + cylinder(h = nail_height, r = nail_radius, $fn=50); + // Nail head + translate([0,0,nail_board_thickness + nail_height]) + cylinder(h = nail_head_height, r = nail_head_radius, $fn=50); + } +} + +module nail_board() { + color(nail_board_colour) + difference() { + cylinder(h = nail_board_thickness, r = nail_board_radius, $fn=100); + translate([0,0,-1]) + cylinder(h = nail_board_thickness+2, r = nail_board_axel_radius, $fn=100); + } +} + +module nail_board_with_nails() { + nail_board(); + // Place nails + for (i = [0 : number_of_nails - 1]) { + angle = i * 360 / number_of_nails; + x = (nail_board_radius - nail_board_nail_indent) * cos(angle); + y = (nail_board_radius - nail_board_nail_indent) * sin(angle); + nail(position = [x, y], angle = angle + 90); + } +} \ No newline at end of file diff --git a/string-art-website/src/features/3RenderImage/components/StringArtConfig/StringArtConfigSection.tsx b/string-art-website/src/features/3RenderImage/components/StringArtConfig/StringArtConfigSection.tsx index 45c1958..f354786 100644 --- a/string-art-website/src/features/3RenderImage/components/StringArtConfig/StringArtConfigSection.tsx +++ b/string-art-website/src/features/3RenderImage/components/StringArtConfig/StringArtConfigSection.tsx @@ -15,7 +15,7 @@ const minMaxVals: Record< min_improvement_score: [0, 100, 1], negative_space_penalty: [0, 100, 1], negative_space_threshold: [0, 100, 1], - num_nails: [360, 1440, 360 / 4], + num_nails: [180, 1440, 360 / 4], progress_frequency: [200, 500, 50], }; From 59ecdc183513f4d9acb3aa5a76f98286e5d3fdde Mon Sep 17 00:00:00 2001 From: FireAndIceFrog Date: Fri, 12 Sep 2025 23:31:26 +1200 Subject: [PATCH 2/5] chore: created model sprockets --- .gitmodules | 3 +++ string-art-model/constants/motorMount.scad | 3 +++ string-art-model/constants/units.scad | 2 +- string-art-model/libraries/sprockets | 1 + string-art-model/main.scad | 5 ++++- string-art-model/models/motorMount.scad | 26 ++++++++++++++++++++++ 6 files changed, 38 insertions(+), 2 deletions(-) create mode 160000 string-art-model/libraries/sprockets diff --git a/.gitmodules b/.gitmodules index 471ab1a..c97e363 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "string-art-model/libraries/MCAD"] path = string-art-model/libraries/MCAD url = https://github.com/openscad/MCAD.git +[submodule "string-art-model/libraries/sprockets"] + path = string-art-model/libraries/sprockets + url = https://github.com/dallenwilson/OpenSCAD-Sprockets.git diff --git a/string-art-model/constants/motorMount.scad b/string-art-model/constants/motorMount.scad index bf65454..c75ad8b 100644 --- a/string-art-model/constants/motorMount.scad +++ b/string-art-model/constants/motorMount.scad @@ -16,3 +16,6 @@ motor_mount_fabric_pole_height = 30*mm; motor_mount_fabric_pole_offset_x = -motor_mount_width*0.3; motor_mount_fabric_pole_offset_y = -motor_mount_height*0.3; + +fabric_arm_height = 100*mm; +motor_mount_fabric_arm_width = 20*mm; \ No newline at end of file diff --git a/string-art-model/constants/units.scad b/string-art-model/constants/units.scad index fcf24d2..4b5b808 100644 --- a/string-art-model/constants/units.scad +++ b/string-art-model/constants/units.scad @@ -6,4 +6,4 @@ ft = 12 * inch; yd = 3 * ft; mile = 1760 * yd; deg = 1; -rad = 180 / pi * deg; \ No newline at end of file +rad = 180 / PI * deg; \ No newline at end of file diff --git a/string-art-model/libraries/sprockets b/string-art-model/libraries/sprockets new file mode 160000 index 0000000..6f9fe96 --- /dev/null +++ b/string-art-model/libraries/sprockets @@ -0,0 +1 @@ +Subproject commit 6f9fe967066f3c9aa58237296ac43f489fe1a7f6 diff --git a/string-art-model/main.scad b/string-art-model/main.scad index f951e20..494e614 100644 --- a/string-art-model/main.scad +++ b/string-art-model/main.scad @@ -7,4 +7,7 @@ include translate([motor_mount_axel_offset_x, motor_mount_axel_offset_y, nail_board_thickness/2+2*mm]) nail_board_with_nails(); -motor_mount(); \ No newline at end of file +motor_mount(); + +translate([motor_mount_axel_offset_x, -motor_mount_axel_offset_y, nail_board_thickness/2+2*mm]) + fabric_feeder(); \ No newline at end of file diff --git a/string-art-model/models/motorMount.scad b/string-art-model/models/motorMount.scad index 0f20549..dd5ecc0 100644 --- a/string-art-model/models/motorMount.scad +++ b/string-art-model/models/motorMount.scad @@ -1,4 +1,30 @@ include <../constants/motorMount.scad> +include <../libraries/sprockets/Sprockets.scad> +module fabric_feeder () { + // Fabric feeder pole + + color("silver") + translate([0,0,30]) + rotate([0,90,0]) + sprocket (hub_diameter = 10, size = 1); + + color("silver") + translate([0,0,fabric_arm_height-10]) + rotate([0,90,0]) + sprocket (hub_diameter = 10, size = 1); + + arm_dimensions = [motor_mount_fabric_arm_width, motor_mount_fabric_arm_width, fabric_arm_height]; + arm_translation = 0+motor_mount_fabric_arm_width/2; + + + color("white") + translate([-arm_translation,0,fabric_arm_height/2]) + cube(arm_dimensions, center=true); + + color("white") + translate([arm_translation+3,0,fabric_arm_height/2]) + cube(arm_dimensions, center=true); +} module motor_mount() { color(motor_mount_colour) From 207778328f9dd8d9eb49f352f16e5c18d848cb0c Mon Sep 17 00:00:00 2001 From: FireAndIceFrog Date: Sat, 13 Sep 2025 15:05:47 +1200 Subject: [PATCH 3/5] chore: added model for the string art --- string-art-model/constants/fabricFeeder.scad | 11 +++++ string-art-model/constants/motorMount.scad | 4 -- string-art-model/main.scad | 1 + string-art-model/models/fabricFeeder.scad | 51 ++++++++++++++++++++ string-art-model/models/motorMount.scad | 26 ---------- 5 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 string-art-model/constants/fabricFeeder.scad create mode 100644 string-art-model/models/fabricFeeder.scad diff --git a/string-art-model/constants/fabricFeeder.scad b/string-art-model/constants/fabricFeeder.scad new file mode 100644 index 0000000..659491a --- /dev/null +++ b/string-art-model/constants/fabricFeeder.scad @@ -0,0 +1,11 @@ + + +fabric_arm_height = 100*mm; +fabric_arm_width = 20*mm; + +fabric_arm_color = "white"; +fabric_arm_gear_color = "silver"; +fabric_arm_axel_radius = 5; +fabric_arm_top_height = 30; +arm_dimensions = [fabric_arm_width, fabric_arm_width, fabric_arm_height]; +arm_translation = 0; \ No newline at end of file diff --git a/string-art-model/constants/motorMount.scad b/string-art-model/constants/motorMount.scad index c75ad8b..b357c94 100644 --- a/string-art-model/constants/motorMount.scad +++ b/string-art-model/constants/motorMount.scad @@ -15,7 +15,3 @@ motor_mount_fabric_pole_radius = 4*mm; motor_mount_fabric_pole_height = 30*mm; motor_mount_fabric_pole_offset_x = -motor_mount_width*0.3; motor_mount_fabric_pole_offset_y = -motor_mount_height*0.3; - - -fabric_arm_height = 100*mm; -motor_mount_fabric_arm_width = 20*mm; \ No newline at end of file diff --git a/string-art-model/main.scad b/string-art-model/main.scad index 494e614..016833a 100644 --- a/string-art-model/main.scad +++ b/string-art-model/main.scad @@ -1,6 +1,7 @@ include include +include include include diff --git a/string-art-model/models/fabricFeeder.scad b/string-art-model/models/fabricFeeder.scad new file mode 100644 index 0000000..8cecc31 --- /dev/null +++ b/string-art-model/models/fabricFeeder.scad @@ -0,0 +1,51 @@ +include <../constants/fabricFeeder.scad> +include <../libraries/sprockets/Sprockets.scad> +include <../libraries/MCAD/motors.scad> + +module _fabric_feeder_arm(arm_translation_x = 0) { + //structural arm on the sides + color("white") + difference() { + translate([arm_translation_x+5,0,fabric_arm_height/2]) + cube(arm_dimensions, center=true); + + translate([arm_translation_x-10,0,fabric_arm_top_height]) + rotate([0,90,0]) + cylinder(h = fabric_arm_width+10, r = fabric_arm_axel_radius+1, $fn=100); + + + translate([arm_translation_x-10,0,fabric_arm_height-10]) + rotate([0,90,0]) + cylinder(h = fabric_arm_width+10, r = fabric_arm_axel_radius+1, $fn=100); + } +} + +module _sprocket_gear(translation_z = 0) { + //sprocket gear and axel + color("silver") + translate([0,0,translation_z]) + rotate([0,90,0]) + sprocket (hub_diameter = fabric_arm_axel_radius*2, size = 1); + + axel_tranlation_x = (fabric_arm_width+10); + color("silver") + translate([-axel_tranlation_x,0,translation_z]) + rotate([0,90,0]) + cylinder(h = axel_tranlation_x*2, r = fabric_arm_axel_radius, $fn=100); + +} + +module fabric_feeder () { + _sprocket_gear(translation_z = fabric_arm_top_height); + _sprocket_gear(translation_z = fabric_arm_height-10); + + for (i = [1 : 2]) { + _fabric_feeder_arm(arm_translation_x = i^i*10 - 28); + } + + //stepper motor mount + rotate([0,90,0]) + translate([-fabric_arm_width,0,-fabric_arm_width*2-10]) + stepper_motor_mount(nema_standard = 17); + +} \ No newline at end of file diff --git a/string-art-model/models/motorMount.scad b/string-art-model/models/motorMount.scad index dd5ecc0..0f20549 100644 --- a/string-art-model/models/motorMount.scad +++ b/string-art-model/models/motorMount.scad @@ -1,30 +1,4 @@ include <../constants/motorMount.scad> -include <../libraries/sprockets/Sprockets.scad> -module fabric_feeder () { - // Fabric feeder pole - - color("silver") - translate([0,0,30]) - rotate([0,90,0]) - sprocket (hub_diameter = 10, size = 1); - - color("silver") - translate([0,0,fabric_arm_height-10]) - rotate([0,90,0]) - sprocket (hub_diameter = 10, size = 1); - - arm_dimensions = [motor_mount_fabric_arm_width, motor_mount_fabric_arm_width, fabric_arm_height]; - arm_translation = 0+motor_mount_fabric_arm_width/2; - - - color("white") - translate([-arm_translation,0,fabric_arm_height/2]) - cube(arm_dimensions, center=true); - - color("white") - translate([arm_translation+3,0,fabric_arm_height/2]) - cube(arm_dimensions, center=true); -} module motor_mount() { color(motor_mount_colour) From a7f21d3b161a7a472931dce613e230656665e2d6 Mon Sep 17 00:00:00 2001 From: FireAndIceFrog Date: Thu, 18 Sep 2025 17:58:20 +1200 Subject: [PATCH 4/5] chore: updated main file --- string-art-model/main.stl | Bin 0 -> 2299284 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 string-art-model/main.stl diff --git a/string-art-model/main.stl b/string-art-model/main.stl new file mode 100644 index 0000000000000000000000000000000000000000..2065fe18ce08096f60d07e42fa98da631da0cb0f GIT binary patch literal 2299284 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 Date: Thu, 18 Sep 2025 18:10:06 +1200 Subject: [PATCH 5/5] chore: fixed typo --- string-art-model/models/fabricFeeder.scad | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/string-art-model/models/fabricFeeder.scad b/string-art-model/models/fabricFeeder.scad index 8cecc31..b5c1164 100644 --- a/string-art-model/models/fabricFeeder.scad +++ b/string-art-model/models/fabricFeeder.scad @@ -27,11 +27,11 @@ module _sprocket_gear(translation_z = 0) { rotate([0,90,0]) sprocket (hub_diameter = fabric_arm_axel_radius*2, size = 1); - axel_tranlation_x = (fabric_arm_width+10); + axel_translation_x = (fabric_arm_width+10); color("silver") - translate([-axel_tranlation_x,0,translation_z]) + translate([-axel_translation_x,0,translation_z]) rotate([0,90,0]) - cylinder(h = axel_tranlation_x*2, r = fabric_arm_axel_radius, $fn=100); + cylinder(h = axel_translation_x*2, r = fabric_arm_axel_radius, $fn=100); }

N`$#UUT@{L!Afcf0<$mwbM- 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 }}g-&OIJ1_nibwiW(#oO^)|6j2Sd^ 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