From 8228775bf8e1c1ce0cc9e7a5bba207e66435f26d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulrich=20Sp=C3=B6rlein?= Date: Sun, 20 Mar 2022 11:02:54 +0100 Subject: [PATCH] Fix the models to sit flush on the XY plane. The skin() function will twist the layers, so that the first layer is above/below the XY plane a little from left to right. This means you can't print them easily like this and can be fixed by producing more of the outer shell and snipping it off at the XY plane exactly. --- MX_DES_Standard.scad | 6 ++++-- MX_DES_Thumb.scad | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/MX_DES_Standard.scad b/MX_DES_Standard.scad index 65a59fa..ca13ef4 100644 --- a/MX_DES_Standard.scad +++ b/MX_DES_Standard.scad @@ -319,12 +319,14 @@ module keycap(keyID = 0, cutLen = 0, visualizeDish = false, rossSection = false, difference(){ union(){ difference(){ - skin([for (i=[0:layers-1]) transform(translation(CapTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(CapTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); //outer shell + skin([for (i=[-1:layers-1]) transform(translation(CapTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(CapTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); //outer shell //Cut inner shell if(Stem == true){ - translate([0,0,-.001])skin([for (i=[0:layers-1]) transform(translation(InnerTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(InnerTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); + translate([0,0,-.001])skin([for (i=[-1:layers-1]) transform(translation(InnerTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(InnerTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); } + // Cut off the extra bottom due to starting at layer -1 + translate ([-50,-50,-10]) cube ([100,100,10], center=false); } if(Stem == true){ translate([0,0,StemBrimDep])rotate(stemRot)difference(){ diff --git a/MX_DES_Thumb.scad b/MX_DES_Thumb.scad index 7347c31..8810452 100644 --- a/MX_DES_Thumb.scad +++ b/MX_DES_Thumb.scad @@ -288,12 +288,14 @@ module keycap(keyID = 0, cutLen = 0, visualizeDish = false, rossSection = false, difference(){ union(){ difference(){ - skin([for (i=[0:layers-1]) transform(translation(CapTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(CapTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); //outer shell + skin([for (i=[-1:layers-1]) transform(translation(CapTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(CapTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); //outer shell //Cut inner shell if(Stem == true){ - translate([0,0,-.001])skin([for (i=[0:layers-1]) transform(translation(InnerTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(InnerTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); + translate([0,0,-.001])skin([for (i=[-1:layers-1]) transform(translation(InnerTranslation(i, keyID)) * rotation(CapRotation(i, keyID)), elliptical_rectangle(InnerTransform(i, keyID), b = CapRoundness(i,keyID),fn=fn))]); } + // Cut off the extra bottom due to starting at layer -1 + translate ([-50,-50,-10]) cube ([100,100,10], center=false); } if(Stem == true){ translate([0,0,StemBrimDep])rotate(stemRot)difference(){