refactor - introduce config folder, and other misc changes
This commit is contained in:
@ -67,4 +67,4 @@ For generating a specific part:
|
||||
`python3 rbuild.py -b yBar --nightly -c micro -t custom`
|
||||
|
||||
Generated stls are put into the `stl/` directories. The actual variable values for different profiles can be found in
|
||||
[rack/profiles.scad](rack/profiles.scad).
|
||||
[rack/profiles.scad](config/profiles.scad).
|
||||
7
config/common.scad
Normal file
7
config/common.scad
Normal file
@ -0,0 +1,7 @@
|
||||
// Config aggregator
|
||||
|
||||
include <./dowel.scad>
|
||||
include <./magnet.scad>
|
||||
include <./slack.scad>
|
||||
include <./printing.scad>
|
||||
include <./rackFrame.scad>
|
||||
2
config/printing.scad
Normal file
2
config/printing.scad
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
defaultLayerHeight = 0.3;
|
||||
@ -1,22 +1,54 @@
|
||||
/*
|
||||
case-files v2
|
||||
This file contains parameters used for declaring/generating a customized rack frame.
|
||||
|
||||
- All dimensions are in millimetres (mm) unless stated otherwise.
|
||||
- "_N" appended to a module is meant to denote that this module is a negative volume, and should only be used to
|
||||
substract from other volumes. "_P" is meant to denote a positive value. Modules are positive by default.
|
||||
*/
|
||||
include <./profiles.scad>
|
||||
|
||||
// Manually set this variable to toggle profiles
|
||||
// Manually set this variable to toggle rack profile
|
||||
profileName = "micro";
|
||||
|
||||
profile = getProfile(profileName);
|
||||
|
||||
defaultLayerHeight = 0.3;
|
||||
_profileConfigs = [
|
||||
["default", [
|
||||
["maxUnitWidth", 180],
|
||||
["maxUnitDepth", 180],
|
||||
["numRailScrews", 18],
|
||||
["screwDiff", 10],
|
||||
["mainRailScrewType", "m4"],
|
||||
["mainRailSideMountScrewType", "m4"],
|
||||
["rackFrameScrewType", "m3"],
|
||||
["baseRoundness", 5],
|
||||
]],
|
||||
["nano", [
|
||||
["maxUnitWidth", 105],
|
||||
["maxUnitDepth", 105],
|
||||
["numRailScrews", 10]
|
||||
]],
|
||||
["micro", [
|
||||
["maxUnitWidth", 180],
|
||||
["maxUnitDepth", 180],
|
||||
["numRailScrews", 18]
|
||||
]],
|
||||
["mini", [
|
||||
["maxUnitWidth", 205],
|
||||
["maxUnitDepth", 205],
|
||||
["numRailScrews", 20]
|
||||
]]
|
||||
];
|
||||
|
||||
function _getConfigValueRaw(profile, varName) = profile[search([varName], profile)[0]][1];
|
||||
function _getProfileRaw(profileName) = _profileConfigs[search([profileName], _profileConfigs)[0]][1];
|
||||
|
||||
function _getConfigValueOrThrowError(val) = val == undef? assert(false, "blah") 0: val;
|
||||
function _getConfigValueOrDefault(val, default) = val == undef? default: val;
|
||||
|
||||
function getConfigValue(profile, varName) =
|
||||
_getConfigValueOrDefault(
|
||||
_getConfigValueRaw(profile, varName),
|
||||
_getConfigValueOrThrowError(_getConfigValueRaw(getProfile("default"), varName))
|
||||
);
|
||||
|
||||
function getProfile(profileName) = _getConfigValueOrThrowError(_getProfileRaw(profileName));
|
||||
|
||||
function getConfig(name) = getConfigValue(profile, name);
|
||||
|
||||
profile = getProfile(profileName);
|
||||
|
||||
// Maximum width for rack-mount units. Change this according your max expected enclosure width.
|
||||
// Changing this will directly affect the required build volume.
|
||||
maxUnitWidth = getConfig("maxUnitWidth");
|
||||
@ -23,6 +23,5 @@ overhangSlack = 0.4;
|
||||
|
||||
supportedOverhangSlack = 0.4;
|
||||
|
||||
|
||||
// special slack cases, change if neccessary
|
||||
xBarYBarDovetailSlack = xySlack;
|
||||
35
helper/apply.scad
Normal file
35
helper/apply.scad
Normal file
@ -0,0 +1,35 @@
|
||||
// Modules for apply pattern
|
||||
|
||||
module apply_p() {
|
||||
union() {
|
||||
children(0);
|
||||
children(1);
|
||||
}
|
||||
}
|
||||
|
||||
module apply_n() {
|
||||
difference() {
|
||||
children(1);
|
||||
children(0);
|
||||
}
|
||||
}
|
||||
|
||||
module apply_pn() {
|
||||
difference() {
|
||||
union() {
|
||||
children(0);
|
||||
children(2);
|
||||
}
|
||||
children(1);
|
||||
}
|
||||
}
|
||||
|
||||
module apply_np() {
|
||||
difference() {
|
||||
union() {
|
||||
children(1);
|
||||
children(2);
|
||||
}
|
||||
children(0);
|
||||
}
|
||||
}
|
||||
@ -1,47 +1,10 @@
|
||||
// Helper aggregator
|
||||
|
||||
/* Some commonly used variables plus functions
|
||||
*/
|
||||
|
||||
$fn=64;
|
||||
// TODO move these to math
|
||||
eps=0.0001;
|
||||
|
||||
inf10 = 10;
|
||||
inf50 = 50;
|
||||
inf1000 = 1000;
|
||||
inf = inf1000;
|
||||
|
||||
|
||||
module apply_p() {
|
||||
union() {
|
||||
children(0);
|
||||
children(1);
|
||||
}
|
||||
}
|
||||
|
||||
module apply_n() {
|
||||
difference() {
|
||||
children(1);
|
||||
children(0);
|
||||
}
|
||||
}
|
||||
|
||||
module apply_pn() {
|
||||
difference() {
|
||||
union() {
|
||||
children(0);
|
||||
children(2);
|
||||
}
|
||||
children(1);
|
||||
}
|
||||
}
|
||||
|
||||
module apply_np() {
|
||||
difference() {
|
||||
union() {
|
||||
children(1);
|
||||
children(2);
|
||||
}
|
||||
children(0);
|
||||
}
|
||||
}
|
||||
include <./apply.scad>
|
||||
include <./dovetail.scad>
|
||||
include <./filet.scad>
|
||||
include <./keystone.scad>
|
||||
include <./math.scad>
|
||||
include <./matrix.scad>
|
||||
include <./screws.scad>
|
||||
include <./sine.scad>
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
|
||||
module cylindricalFiletEdge(width, depth, height, roundness) {
|
||||
rd = roundness;
|
||||
|
||||
intersection() {
|
||||
minkowski() {
|
||||
rotate(a = [90, 0, 0])
|
||||
cylinder(r = rd, h = eps);
|
||||
|
||||
translate(v = [rd, 0, rd])
|
||||
cube(size = [width, depth, height]);
|
||||
}
|
||||
|
||||
cube(size = [width, depth, height]);
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
include <./common.scad>
|
||||
include <./math.scad>
|
||||
|
||||
// centered on z axis
|
||||
module dovetail(
|
||||
|
||||
@ -1,12 +1,40 @@
|
||||
include <./halfspace.scad>
|
||||
include <./math.scad>
|
||||
|
||||
// Some modules for simple subtractive filets
|
||||
module sphericalFiletEdge(width, depth, height, roundness) {
|
||||
rd = roundness;
|
||||
|
||||
intersection() {
|
||||
minkowski() {
|
||||
sphere(r = rd);
|
||||
|
||||
translate(v = [rd, rd, rd])
|
||||
cube(size = [width*2, depth - 2*rd, height*2]);
|
||||
}
|
||||
|
||||
cube(size = [width, depth, height]);
|
||||
}
|
||||
}
|
||||
|
||||
module cylindricalFiletEdge(width, depth, height, roundness) {
|
||||
rd = roundness;
|
||||
|
||||
intersection() {
|
||||
minkowski() {
|
||||
rotate(a = [90, 0, 0])
|
||||
cylinder(r = rd, h = eps);
|
||||
|
||||
translate(v = [rd, 0, rd])
|
||||
cube(size = [width, depth, height]);
|
||||
}
|
||||
|
||||
cube(size = [width, depth, height]);
|
||||
}
|
||||
}
|
||||
|
||||
module cylindricalFiletNegative(p0, p1, n, r) {
|
||||
l = norm(p1-p0);
|
||||
|
||||
align_to(p0=p0, p1=p1, p2=p0-n)
|
||||
alignTo(p0=p0, p1=p1, p2=p0-n)
|
||||
rotate(a=[45,0,0])
|
||||
rotate(a=[0,90,0])
|
||||
zFiletNegative(length = l, r = r);
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
include <./common.scad>
|
||||
|
||||
module halfspace(vpos, p) {
|
||||
|
||||
ref = [0,0,-1];
|
||||
|
||||
if (cross(ref, vpos) == [0,0,0]) {
|
||||
translate(p)
|
||||
translate(v=[0,0, (ref*vpos) * -inf/2])
|
||||
cube(size=[inf, inf, inf], center=true);
|
||||
} else {
|
||||
translate(p)
|
||||
alignPlanar(a=ref, b = vpos)
|
||||
translate(v = [0, 0, -inf/2])
|
||||
cube(size = [inf, inf, inf], center = true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module alignPlanar(a,b) {
|
||||
rot_axis = cross(a,b);
|
||||
angle = acos(a*b/(norm(a)*norm(b)));
|
||||
|
||||
rotate(v=rot_axis, a=angle)
|
||||
children(0);
|
||||
}
|
||||
@ -1,11 +1,20 @@
|
||||
// TODO remove/rename this file
|
||||
/* Example usage:
|
||||
for (i=mirror4XY(midpoint=[0,0,0], offsetX=90, offsetY=90)) {
|
||||
translate(v=i)
|
||||
something();
|
||||
}
|
||||
*/
|
||||
// Some misc math-y utils
|
||||
|
||||
$fn=64;
|
||||
eps=0.0001;
|
||||
inf10 = 10;
|
||||
inf50 = 50;
|
||||
inf1000 = 1000;
|
||||
inf = inf1000;
|
||||
|
||||
function unit(v) = v/norm(v);
|
||||
|
||||
function lerp(a, b, t) = (b * t + a * (1 - t));
|
||||
|
||||
/* Example usage:
|
||||
for (i=mirror4XY(midpoint=[0,0,0], offsetX=90, offsetY=90))
|
||||
{ translate(v=i) something(); }
|
||||
*/
|
||||
module mirror4XY(p, dx, dy) {
|
||||
|
||||
px = p[0];
|
||||
@ -24,20 +33,18 @@ module mirror4XY(p, dx, dy) {
|
||||
children(0);
|
||||
}
|
||||
|
||||
// Generate a 4x4 matrix that causes a change of basis
|
||||
// such that the origin is at point p0, the x axis is aligned
|
||||
// from p0 to p1 and point p2 is in the first quadrant.
|
||||
// Copied and pasted from https://trmm.net/Basis/
|
||||
module align_to(p0,p1,p2) {
|
||||
/* Generate a 4x4 matrix that causes a change of basis
|
||||
such that the origin is at point p0, the x axis is aligned
|
||||
from p0 to p1 and point p2 is in the first quadrant.
|
||||
Copied and pasted from https://trmm.net/Basis/
|
||||
*/
|
||||
module alignTo(p0,p1,p2) {
|
||||
|
||||
x = unit(p1-p0);
|
||||
yp = unit(p2-p0);
|
||||
z = unit(cross(x,yp));
|
||||
y = unit(cross(z,x));
|
||||
|
||||
echo(p0,p1,p2);
|
||||
echo(x,y,z);
|
||||
|
||||
multmatrix([
|
||||
[x[0], y[0], z[0], p0[0]],
|
||||
[x[1], y[1], z[1], p0[1]],
|
||||
@ -47,5 +54,27 @@ module align_to(p0,p1,p2) {
|
||||
children();
|
||||
}
|
||||
|
||||
function unit(v) = v/norm(v);
|
||||
function lerp(a, b, t) = (b * t + a * (1 - t));
|
||||
module halfspace(vpos, p) {
|
||||
|
||||
ref = [0,0,-1];
|
||||
|
||||
if (cross(ref, vpos) == [0,0,0]) {
|
||||
translate(p)
|
||||
translate(v=[0,0, (ref*vpos) * -inf/2])
|
||||
cube(size=[inf, inf, inf], center=true);
|
||||
} else {
|
||||
translate(p)
|
||||
alignPlanar(a=ref, b = vpos)
|
||||
translate(v = [0, 0, -inf/2])
|
||||
cube(size = [inf, inf, inf], center = true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module alignPlanar(a,b) {
|
||||
rot_axis = cross(a,b);
|
||||
angle = acos(a*b/(norm(a)*norm(b)));
|
||||
|
||||
rotate(v=rot_axis, a=angle)
|
||||
children(0);
|
||||
}
|
||||
@ -1,7 +1,6 @@
|
||||
/* Some common screw dimensions and helper functions/modules */
|
||||
|
||||
include <./math.scad>
|
||||
include <./common.scad>
|
||||
|
||||
/********************************************************************************/
|
||||
// M3 dimensions
|
||||
|
||||
@ -57,6 +57,3 @@ module sineWaveHull(length, resolution, amplitudeFunction, period, shift, hullDi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//sineWaveHull(length, resolution, amplitudeFunction, period, shift, 10);
|
||||
@ -1,15 +0,0 @@
|
||||
|
||||
module sphericalFiletEdge(width, depth, height, roundness) {
|
||||
rd = roundness;
|
||||
|
||||
intersection() {
|
||||
minkowski() {
|
||||
sphere(r = rd);
|
||||
|
||||
translate(v = [rd, rd, rd])
|
||||
cube(size = [width*2, depth - 2*rd, height*2]);
|
||||
}
|
||||
|
||||
cube(size = [width, depth, height]);
|
||||
}
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
|
||||
// (c)2013 Felipe Sanches <juca@members.fsf.org>
|
||||
// licensed under the terms of the GNU GPL version 3 (or later)
|
||||
|
||||
function normalize(v) = v / (sqrt(v[0] * v[0] + v[1] * v[1]));
|
||||
|
||||
//
|
||||
// The voronoi() function generates a 2D surface, which can be provided to
|
||||
// a) linear_extrude() to produce a 3D object
|
||||
// b) intersection() to restrict it to a a specified shape -- see voronoi_polygon.scad
|
||||
//
|
||||
// Parameters:
|
||||
// points (required) ... nuclei coordinates (array of [x, y] pairs)
|
||||
// L ... the radius of the "world" (the pattern is built within this circle)
|
||||
// thickness ... the thickness of the lines between cells
|
||||
// round ... the radius applied to corners (fillet in CAD terms)
|
||||
// nuclei (bool) ... show nuclei sites
|
||||
//
|
||||
// These parameters need to be kept more or less in proportion to each other, and to the distance
|
||||
// apart of points in the point_set. If one or the other parameter is increased or decreased too
|
||||
// much, you'll get no output.
|
||||
//
|
||||
module voronoi(points, L = 200, thickness = 1, round = 6, nuclei = true) {
|
||||
for (p = points) {
|
||||
difference() {
|
||||
minkowski() {
|
||||
intersection_for(p1 = points){
|
||||
if (p != p1) {
|
||||
angle = 90 + atan2(p[1] - p1[1], p[0] - p1[0]);
|
||||
|
||||
translate((p + p1) / 2 - normalize(p1 - p) * (thickness + round))
|
||||
rotate([0, 0, angle])
|
||||
translate([-L, -L])
|
||||
square([2 * L, L]);
|
||||
}
|
||||
}
|
||||
circle(r = round, $fn = 20);
|
||||
}
|
||||
if (nuclei)
|
||||
translate(p) circle(r = 1, $fn = 20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// The random_voronoi() function is the helper wrapper over the voronoi() core.
|
||||
// It generates random nuclei site coordinates into the square area,
|
||||
// passing other arguments to voronoi() unchanged.
|
||||
//
|
||||
// Parameters:
|
||||
// n ... number of nuclei sites to be generated
|
||||
// nuclei (bool) ... show nuclei sites
|
||||
// L ... the radius of the "world" (the pattern is built within this circle)
|
||||
// thickness ... the thickness of the lines between cells
|
||||
// round ... the radius applied to corners (fillet in CAD terms)
|
||||
// min ... minimum x and y coordinate for nuclei generation
|
||||
// max ... maximum x and y coordinate for nuclei generation
|
||||
// seed ... seed for the random generator (random if undefined)
|
||||
// center (bool) ... move resulting pattern to [0, 0] if true
|
||||
//
|
||||
module random_voronoi(n = 20, nuclei = true, L = 200, thickness = 1, round = 6, min = 0, max = 100, seed = undef, center = false) {
|
||||
seed = seed == undef ? rands(0, 100, 1)[0] : seed;
|
||||
echo("Seed", seed);
|
||||
|
||||
// Generate points.
|
||||
x = rands(min, max, n, seed);
|
||||
y = rands(min, max, n, seed + 1);
|
||||
points = [ for (i = [0 : n - 1]) [x[i], y[i]] ];
|
||||
|
||||
// Center Voronoi.
|
||||
offset_x = center ? -(max(x) - min(x)) / 2 : 0;
|
||||
offset_y = center ? -(max(y) - min(y)) / 2 : 0;
|
||||
translate([offset_x, offset_y])
|
||||
|
||||
voronoi(points, L = L, thickness = thickness, round = round, nuclei = nuclei);
|
||||
}
|
||||
|
||||
// example with an explicit list of points:
|
||||
point_set = [
|
||||
[0, 0], [30, 0], [20, 10], [50, 20], [15, 30], [85, 30], [35, 30], [12, 60],
|
||||
[45, 50], [80, 80], [20, -40], [-20, 20], [-15, 10], [-15, 50]
|
||||
];
|
||||
//voronoi(points = point_set, round = 4, nuclei = true);
|
||||
|
||||
module voronoi3u_N(h) {
|
||||
intersection() {
|
||||
translate(v=[10,5,0])
|
||||
cube(size=[160, 10, h]);
|
||||
translate(v=[20,-52,0])
|
||||
scale(v=[0.40,0.44,10])
|
||||
linear_extrude(height=10)
|
||||
random_voronoi(n = 128, round = 10, min = 0, max = 300, seed = 40, thickness=3.5, nuclei=false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
include <../helper/math.scad>
|
||||
include <./config.scad>
|
||||
include <../helper/common.scad>
|
||||
include <../config/common.scad>
|
||||
include <./mainRail.scad>
|
||||
include <./yBar.scad>
|
||||
include <./xBar.scad>
|
||||
@ -12,6 +12,7 @@ include <./xyPlate.scad>
|
||||
|
||||
include <../rack-mount/side-rail/dualMount.scad>
|
||||
|
||||
// TODO: this is completly broken. fix this and figure out a nice way to run this with cli commands
|
||||
assemblyInstructions();
|
||||
|
||||
module assemblyInstructions () {
|
||||
|
||||
@ -1,14 +1,7 @@
|
||||
include <../../helper/screws.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../helper/matrix.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dovetail.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
|
||||
include <../config.scad>
|
||||
|
||||
_mountX = 12;
|
||||
_mountY = 14;
|
||||
_mountZ = 10;
|
||||
|
||||
@ -1,14 +1,7 @@
|
||||
/*
|
||||
Connector factory
|
||||
*/
|
||||
include <../../helper/screws.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../helper/matrix.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dovetail.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../config.scad>
|
||||
// Connector Aggregator and utils
|
||||
|
||||
include <../../helper/common.scad>
|
||||
include <../../config/common.scad>
|
||||
include <./xBarYBarConnectors.scad>
|
||||
include <./mainRailYBarConnectors.scad>
|
||||
include <./sideModuleYBarConnectors.scad>
|
||||
|
||||
@ -1,15 +1,7 @@
|
||||
include <../../helper/screws.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../helper/matrix.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dovetail.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
|
||||
include <../config.scad>
|
||||
|
||||
mainRailHeatSetOnYBarDx = railSideMountThickness + 5;
|
||||
mainRailHeatSetOnYBarDy = railFrontThickness + 2;
|
||||
|
||||
|
||||
@ -1,12 +1,7 @@
|
||||
include <../../helper/screws.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../helper/matrix.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dovetail.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
include <../side/sideWallVariables.scad>
|
||||
include <../config.scad>
|
||||
|
||||
module onYBarSideModuleNegative() {
|
||||
|
||||
|
||||
@ -1,13 +1,7 @@
|
||||
include <../../helper/screws.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../helper/matrix.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dovetail.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
|
||||
include <../config.scad>
|
||||
|
||||
connectorYEdgeToYBarYEdge = 5;
|
||||
connectorXEdgeToYBarXEdge = 5;
|
||||
|
||||
@ -1,14 +1,7 @@
|
||||
include <../../helper/screws.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../helper/matrix.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dovetail.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
|
||||
include <../config.scad>
|
||||
|
||||
// On xBar
|
||||
module onXBarToYBarNegative() {
|
||||
y = 27;
|
||||
|
||||
@ -1,15 +1,9 @@
|
||||
include <./config.scad>
|
||||
include <../helper/screws.scad>
|
||||
include <../helper/filet.scad>
|
||||
include <../helper/slack.scad>
|
||||
include <../helper/math.scad>
|
||||
include <../helper/halfspace.scad>
|
||||
include <../helper/common.scad>
|
||||
include <../config/common.scad>
|
||||
include <./sharedVariables.scad>
|
||||
include <../helper/matrix.scad>
|
||||
|
||||
include <./connector/connectors.scad>
|
||||
|
||||
*mainRail();
|
||||
mainRail();
|
||||
|
||||
module mainRail() {
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
include <../xBar.scad>
|
||||
include <../yBar.scad>
|
||||
include <../mainRail.scad>
|
||||
include <../sharedVariables.scad>
|
||||
use <../xBar.scad>
|
||||
use <../yBar.scad>
|
||||
use <../mainRail.scad>
|
||||
|
||||
// Evaluation print for slack config, please see slack.scad
|
||||
// to configure tolerances
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../side/hingeModule.scad>
|
||||
use <../side/hingeModule.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required (? need to print to test)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../side/magnetModule.scad>
|
||||
use <../side/magnetModule.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required (? need to print to test)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../side/magnetModule.scad>
|
||||
use <../side/magnetModule.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required (? need to print to test)
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
include <../mainRail.scad>
|
||||
include <../sharedVariables.scad>
|
||||
|
||||
use <../mainRail.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports not required.
|
||||
multmatrix(mainRailPrintOrientation)
|
||||
mainRail();
|
||||
|
||||
|
||||
mainRailPrintOrientation = [
|
||||
[cos(-90), 0, sin(-90), railTotalHeight],
|
||||
[0, 1, 0, 0 ],
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../side/sideWallLeft.scad>
|
||||
use <../side/sideWallLeft.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required (? need to print to test), but a brim is recommended
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../side/sideWallRight.scad>
|
||||
use <../side/sideWallRight.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required (? need to print to test), but a brim is recommended
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../xBar.scad>
|
||||
use <../xBar.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required: depending on roundness.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
include <../xyPlate.scad>
|
||||
use <../xyPlate.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports generally not required.
|
||||
|
||||
@ -1,16 +1,5 @@
|
||||
include <../yBar.scad>
|
||||
|
||||
include <../xBar.scad>
|
||||
use <../yBar.scad>
|
||||
|
||||
// Oriented for 3d printing.
|
||||
// Supports required at XY wall connections, and depending on roundness
|
||||
yBar();
|
||||
|
||||
|
||||
*difference() {
|
||||
translate(v=[2,0,0])
|
||||
cube(size=[16,10,6], center=true);
|
||||
hexNutPocket_N("m3", openSide = false, backSpace = 5, bridgeFront = true);
|
||||
}
|
||||
|
||||
*hexNutPocket_N("m3", openSide = false, backSpace = 5, bridgeBack = true);
|
||||
@ -1,53 +0,0 @@
|
||||
/*
|
||||
case-files v2
|
||||
This file contains
|
||||
Example usage:
|
||||
|
||||
profileName = "mini";
|
||||
varName = "mainRailSideMountScrewType";
|
||||
|
||||
profile = getProfile(profileName);
|
||||
echo("val:", getConfigValue(profile, varName));
|
||||
*/
|
||||
|
||||
_profileConfigs = [
|
||||
["default", [
|
||||
["maxUnitWidth", 180],
|
||||
["maxUnitDepth", 180],
|
||||
["numRailScrews", 18],
|
||||
["screwDiff", 10],
|
||||
["mainRailScrewType", "m4"],
|
||||
["mainRailSideMountScrewType", "m4"],
|
||||
["rackFrameScrewType", "m3"],
|
||||
["baseRoundness", 5],
|
||||
]],
|
||||
["nano", [
|
||||
["maxUnitWidth", 105],
|
||||
["maxUnitDepth", 105],
|
||||
["numRailScrews", 10]
|
||||
]],
|
||||
["micro", [
|
||||
["maxUnitWidth", 180],
|
||||
["maxUnitDepth", 180],
|
||||
["numRailScrews", 18]
|
||||
]],
|
||||
["mini", [
|
||||
["maxUnitWidth", 205],
|
||||
["maxUnitDepth", 205],
|
||||
["numRailScrews", 20]
|
||||
]]
|
||||
];
|
||||
|
||||
function _getConfigValueRaw(profile, varName) = profile[search([varName], profile)[0]][1];
|
||||
function _getProfileRaw(profileName) = _profileConfigs[search([profileName], _profileConfigs)[0]][1];
|
||||
|
||||
function _getConfigValueOrThrowError(val) = val == undef? assert(false, "blah") 0: val;
|
||||
function _getConfigValueOrDefault(val, default) = val == undef? default: val;
|
||||
|
||||
function getConfigValue(profile, varName) =
|
||||
_getConfigValueOrDefault(
|
||||
_getConfigValueRaw(profile, varName),
|
||||
_getConfigValueOrThrowError(_getConfigValueRaw(getProfile("default"), varName))
|
||||
);
|
||||
|
||||
function getProfile(profileName) = _getConfigValueOrThrowError(_getProfileRaw(profileName));
|
||||
@ -1,4 +1,4 @@
|
||||
include <./config.scad>
|
||||
include <../config/common.scad>
|
||||
|
||||
// Main rail variables:
|
||||
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
include <../config.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../../helper/screws.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
|
||||
translate(v=[10,20,-2 - sideWallZHingeTotalClearance])
|
||||
*hingeModule();
|
||||
hingeModule();
|
||||
|
||||
module hingeModule() {
|
||||
|
||||
|
||||
@ -1,13 +1,10 @@
|
||||
|
||||
include <../config.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../../helper/magnet.scad>
|
||||
include <../../helper/screws.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
|
||||
translate(v=[10,-5,-(2+sideWallZHingeTotalClearance)])
|
||||
*magnetModule();
|
||||
magnetModule();
|
||||
|
||||
magnetModuleMagnetMountDy = magnetMountToYBarFront - sideWallSlotToXZ;
|
||||
magnetModuleMagnetMountDz = magnetMountToYBarTop + sideWallConnLugDepression;
|
||||
|
||||
@ -1,19 +1,11 @@
|
||||
include <../../helper/math.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../../helper/magnet.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../config.scad>
|
||||
|
||||
include <../../helper/common.scad>
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
include <./sideWallMagnetMount.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
include <../sharedVariables.scad>
|
||||
|
||||
include <./magnetModule.scad>
|
||||
include <./hingeModule.scad>
|
||||
|
||||
//echo("Side Wall Height", sideWallZ);
|
||||
//echo("Side Wall Depth", sideWallY);
|
||||
|
||||
//translate(v = [hingePoleDx ,hingePoleDy, 10])
|
||||
//rotate(a=[0,0,-120])
|
||||
//translate(v = [-hingePoleDx ,-hingePoleDy, 0])
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
include <./sideWallBase.scad>
|
||||
|
||||
*sideWallLeft();
|
||||
sideWallLeft();
|
||||
|
||||
module sideWallLeft() {
|
||||
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
|
||||
include <../config.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
include <../../helper/common.scad>
|
||||
include <../../config/common.scad>
|
||||
include <../sharedVariables.scad>
|
||||
include <../../helper/halfspace.scad>
|
||||
include <../../helper/magnet.scad>
|
||||
include <./sideWallVariables.scad>
|
||||
|
||||
module sideWallMagnetMount() {
|
||||
// oriented so that the xy face is the side wall's inner face
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
include <./sideWallBase.scad>
|
||||
|
||||
*sideWallRight();
|
||||
sideWallRight();
|
||||
|
||||
module sideWallRight() {
|
||||
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
include <../../helper/common.scad>
|
||||
include <../../config/common.scad>
|
||||
|
||||
include <../config.scad>
|
||||
include <../sharedVariables.scad>
|
||||
include <../../helper/magnet.scad>
|
||||
include <../../helper/slack.scad>
|
||||
include <../../helper/dowel.scad>
|
||||
|
||||
sideWallConnW = 7;
|
||||
sideWallConnD = 20;
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
include <../helper/halfspace.scad>
|
||||
include <../helper/slack.scad>
|
||||
include <../helper/common.scad>
|
||||
include <./sharedVariables.scad>
|
||||
include <./connector/connectors.scad>
|
||||
|
||||
|
||||
@ -1,13 +1,9 @@
|
||||
include <../helper/cylindricalFilet.scad>
|
||||
include <../helper/filet.scad>
|
||||
include <../helper/screws.scad>
|
||||
include <../helper/matrix.scad>
|
||||
|
||||
include <./config.scad>
|
||||
include <../helper/common.scad>
|
||||
include <../config/common.scad>
|
||||
include <./sharedVariables.scad>
|
||||
include <./connector/connectors.scad>
|
||||
|
||||
*xBar();
|
||||
xBar();
|
||||
|
||||
module xBar() {
|
||||
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
include <../helper/slack.scad>
|
||||
include <./yBar.scad>
|
||||
include <./xBar.scad>
|
||||
include <../helper/common.scad>
|
||||
include <./connector/connectors.scad>
|
||||
|
||||
*xyPlate();
|
||||
|
||||
xyPlate();
|
||||
|
||||
xyPlateConnDx = xBarX + 2*_heatSetX; // X distance between connectors
|
||||
xyPlateConnDy = yBarDepth - 2*basePlateScrewMountToYBarXZFace; // Y distance between connectors
|
||||
|
||||
@ -1,16 +1,9 @@
|
||||
include <../helper/math.scad>
|
||||
include <../helper/matrix.scad>
|
||||
include <../helper/sphericalFilet.scad>
|
||||
include <../helper/cylindricalFilet.scad>
|
||||
include <../helper/screws.scad>
|
||||
include <../helper/magnet.scad>
|
||||
include <./config.scad>
|
||||
include <./mainRail.scad>
|
||||
|
||||
include <../helper/common.scad>
|
||||
include <../config/common.scad>
|
||||
include <./connector/connectors.scad>
|
||||
include <./sharedVariables.scad>
|
||||
|
||||
*yBar();
|
||||
yBar();
|
||||
|
||||
module yBar() {
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
include <../common.scad>
|
||||
include <../rack/screws.scad>
|
||||
include <../sinusoid.scad>
|
||||
include <../sine.scad>
|
||||
|
||||
vU = 2;
|
||||
uHeight = 10;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user