Add option for fixed side modules. This simplifies assembly and removes some awkward printing topology

This commit is contained in:
zhao
2024-08-30 14:54:16 -04:00
committed by jazwa
parent cab2d1c6c9
commit 520ee9eadf
36 changed files with 221 additions and 104 deletions

View File

@ -1,4 +1,5 @@
include <./common.scad>
use <./slideHexNutsIntoYBar.scad>
$vpt = [21,-15,20];
$vpr = [65,0,40];
@ -10,8 +11,16 @@ addMagnetsToMagnetModules(at=$t);
module addMagnetsToMagnetModules(at=0) {
t = lerp(a=6,b=0,t=at);
if (!plasticMask) {
magnetModule();
if (fixedSideModules) {
multmatrix(yBarToMagnetModuleTrans)
slideHexNutsIntoYBar(at=1);
}
else {
magnetModule();
}
}
function insertMagnetTrans(t=0) =
@ -20,6 +29,9 @@ module addMagnetsToMagnetModules(at=0) {
magnetModuleMagnetMountDz]) *
rotate(a=[0,90,0]);
multmatrix(insertMagnetTrans(t=t))
magnet();
multmatrix(insertMagnetTrans(t=t))
magnet();
}

View File

@ -2,6 +2,11 @@ include <./common.scad>
use <./screwXBarAndYBar.scad>
use <./addMagnetsToMagnetModules.scad>
/*
NOTE You only need to do this step if the `fixedSideModules` option is set to false.
*/
$vpt = [116,90,18];
$vpr = [56,0,42];
$vpd = 550;
@ -10,50 +15,57 @@ $vpf = 22.50;
attachSideConnectorModulesToYBars(at=$t);
module attachSideConnectorModulesToYBars(at=0) {
elevation = lerp(a=8, b=0, t=at);
elevation = lerp(a=8, b=0, t=at);
// side module to front corner ybar
function sideModuleTrans(t=0) =
translate(v=[sideWallConnW,0,t-sideWallConnLugDepression])
* yBarSideModuleConnectorTrans
* mirror(v=[1,0,0]); // mirror for magnetModule
// side module to front corner ybar
function sideModuleTrans(t=0) =
translate(v=[sideWallConnW,0,t-sideWallConnLugDepression])
* yBarSideModuleConnectorTrans
* mirror(v=[1,0,0]); // mirror for magnetModule
screwXBarAndYBar(at=1);
screwXBarAndYBar(at=1);
multmatrix(sideModuleTrans(elevation))
union() {
addMagnetsToMagnetModules(at=1);
if (!fixedSideModules) {
multmatrix(sideModuleTrans(elevation))
union() {
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
addMagnetsToMagnetModules(at=1);
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideModuleTrans(elevation))
union() {
addMagnetsToMagnetModules(at=1);
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
union() {
if (!plasticMask) {
hingeModule();
}
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
union() {
if (!plasticMask) {
hingeModule();
}
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
}
multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideModuleTrans(elevation))
union() {
addMagnetsToMagnetModules(at=1);
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
union() {
if (!plasticMask) {
hingeModule();
}
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
union() {
if (!plasticMask) {
hingeModule();
}
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
caseScrewShort();
}
}
}

View File

@ -1,5 +1,6 @@
include <./common.scad>
use <./slideHexNutsIntoYBar.scad>
use <./addMagnetsToMagnetModules.scad>
$vpt = [116,90,18];
$vpr = [56,0,42];
@ -14,10 +15,22 @@ module attachXBarWithYBar(at=0) {
// assemble x-y bar trays
multmatrix(translate(v = [0, 0, t]))
slideHexNutsIntoYBar(at=1);
if (fixedSideModules) {
multmatrix(inv4x4(yBarToMagnetModuleTrans))
addMagnetsToMagnetModules(at=1); // same as slideHexNutsIntoYBar, but the magnet has already been inserted
} else {
slideHexNutsIntoYBar(at=1);
}
multmatrix(translate(v = [0, 0, t])*xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace)
slideHexNutsIntoYBar(at=1);
if (fixedSideModules) {
multmatrix(inv4x4(yBarToMagnetModuleTrans))
addMagnetsToMagnetModules(at=1);
} else {
slideHexNutsIntoYBar(at=1);
}
if (!plasticMask) {
multmatrix(xBarSpaceToYBarSpace)

View File

@ -33,4 +33,4 @@ module attachXYTrays(at=0,r=0) {
}
propUpBottomXYTraywithSideWalls(at=1,r=r);
}
}

View File

@ -56,6 +56,14 @@ module mirrorAllTrayCornersFromYBarSpace() {
secondStackTrans = upperXYTrayTrans * mirror(v=[0,0,1]);
yBarToMagnetModuleTrans =
translate(v=[13,0,sideWallConnLugDepression]) *
inv4x4(yBarSideModuleConnectorTrans) *
mirror(v=[1,0,0]);
module caseScrewShort() {
if (!screwMask) {
color([1, 1, 1]) {
@ -117,4 +125,4 @@ module arrow(length) {
cylinder(r = 1, h = length-2);
}
}
}

View File

@ -32,8 +32,11 @@ module slideHexNutsIntoYBar(at=0)
rotate(a=[0,90,0]);
module slideHexNutsOneCorner(t=0) {
multmatrix(sideModuleTrans(t = t))
hexNut(rackFrameScrewType);
if (!fixedSideModules) {
multmatrix(sideModuleTrans(t = t))
hexNut(rackFrameScrewType);
}
multmatrix(mainRailTrans(t = t))
hexNut(rackFrameScrewType);
@ -49,4 +52,4 @@ module slideHexNutsIntoYBar(at=0)
slideHexNutsOneCorner(t = t);
}
}
}