Skip to content

Instantly share code, notes, and snippets.

@jonathanperret
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonathanperret/96c976835c35ce4a701a to your computer and use it in GitHub Desktop.
Save jonathanperret/96c976835c35ce4a701a to your computer and use it in GitHub Desktop.
Krups axle
var hTotal = 91.5,
// longueur des extrémités
hBout = 12,
// profondeur de l'encoche biseautée dans la poignée
hEncoche = 3,
// gorge pour circlip
hGorge = 1,
// vis
hVis = 18,
hTeteVis = 2,
// dimensions des rainures longitudinales
pRainure = 1.5, // profondeur
lRainure = 2, // largeur
// largeur (mini) de l'encoche biseautée dans la poignée
lEncoche = 7.2,
dVis = 4.3,
dTeteVis = dVis + 0.0,
// diamètre de l'axe au point le plus fin (circlip)
dCirclip = 8,
// diamètre des extrémités (hors partie insérée dans la poignée)
dBout = 10,
// diamètre encoche biseautée (point plus fin) de la poignée
dEncoche = 11,
// diamètre du corps (au centre de la pièce)
dCorps = 12,
dPlatCorps = 11.5,
// diamètre et épaisseur de la collerette d'arrêt
dCollerette = dCorps + 2,
hCollerette = 1.4,
// angle du biseau de l'encoche dans la poignée
angleBiseau = -20,
// angle de rotation des méplats par rapport aux rainures
angleRotation = 8,
// profondeur du marquage
pMarquage = 0.5,
hCorps = hTotal - 2*hBout,
BIG = 200,
// résolution
fn = 64;
function main() {
return difference(
union(
corps(),
union(
boutBas(),
boutHaut()
).rotateZ(angleRotation)
),
rainures(),
vis(),
marquage()
);
}
function unevis() {
return union(
cylinder({h:hVis,r:dVis/2}),
cylinder({h:hTeteVis,r1:dTeteVis/2,r2:dVis/2})
);
}
function vis() {
return union(
unevis(),
unevis()
.mirroredZ()
.translate([0,0,hTotal])
);
}
function rainures() {
return rainure()
.union(rainure().rotateZ(180))
.translate([0,0,hBout]);
}
function corps() {
return cylinder({h:hCorps, r:dCorps/2, center:[true,true,false], fn:fn})
.translate([0,0,hBout]);
}
// bout avec collerette d'arrêt
function boutBas() {
return union(
cylinder({h:hCollerette, r1:dBout/2, r2:dCollerette/2, center:[true,true,false], fn:fn})
.translate([0,0,hBout-hCollerette]),
bout()
);
}
// bout avec gorge pour circlip
function boutHaut() {
return bout()
.subtract(
cube({size:[BIG,BIG,hGorge], center:[true,true,false]})
.translate([0,0,hBout-hGorge])
)
.union(
cylinder({h:hBout/2, r:dCirclip/2, center:[true,true,false], fn:fn})
.translate([0,0,hBout/2])
)
.mirroredZ()
.translate([0,0,hTotal]);
}
function bout() {
return union(
cylinder({h:hBout, r:dBout/2, center:[true,true,false], fn:fn}),
cylinder({h:hEncoche, r1: dEncoche/2, r2:dCorps/2, center:[true,true,false], fn:fn})
.subtract(cube({size:BIG,center:[false,true,true]}))
)
.subtract(biseau())
.subtract(biseau().mirroredY());
}
function biseau() {
return cube({size:BIG,center:[true,false,true]})
.rotateX(angleBiseau)
.translate([0,lEncoche/2,0]);
}
function rainure() {
return union(
cube({size:[lRainure,BIG,BIG],
center:[true,false,false]})
.translate([0,dCorps/2 - pRainure,0]),
cube({size:[BIG,BIG,BIG], center:[true,false,false]})
.translate([0,dPlatCorps/2,0])
);
}
function logo_ut7() {
var slash = polygon([
[-86.273000,-48.490563],[-72.431750,-48.490563],
[-101.394250,39.315687],[-115.235500,39.315687]]);
var u = polygon([[-22.202625,-33.192688],
[-22.202625,16.296062],[-22.321004,17.502117],
[-23.149656,20.155437],[-24.052295,21.572552],
[-25.398855,22.808758],[-27.278121,23.683147],
[-29.778875,24.014812],[-40.282625,24.014812],
[-41.466609,23.894207],[-44.071375,23.049969],
[-45.462557,22.130352],[-46.676141,20.758465],
[-47.534529,18.843853],[-47.860125,16.296062],
[-47.860125,-33.192688],[-63.155125,-33.192688],
[-63.155125,16.296062],[-62.898256,20.348167],
[-62.172322,23.894461],[-61.044333,26.968665],
[-59.581297,29.604500],[-57.850224,31.835687],
[-55.918123,33.695945],[-53.852004,35.218997],
[-51.718875,36.438562],[-47.519627,38.102117],
[-43.856453,38.956375],[-40.282625,39.316062],
[-29.778875,39.316062],[-25.958719,38.914187],
[-22.082293,37.959734],[-17.693875,36.101063],
[-14.481375,39.316062],[-6.902625,39.316062],
[-6.902625,-33.192688]]);
var t = polygon([
[30.811375,-17.897312],[30.811375,16.295187],
[30.932039,17.501242],[31.776688,20.154562],
[32.696751,21.571677],[34.069305,22.807883],
[35.984847,23.682272],[38.533875,24.013937],
[55.293875,24.013937],[55.293875,39.316438],
[38.533875,39.316438],[34.937000,38.956730],
[31.250203,38.102426],[27.023875,36.438781],
[24.876990,35.219150],[22.797547,33.696015],
[20.852986,31.835655],[19.110750,29.604348],
[17.638279,26.968370],[16.503016,23.893999],
[15.772400,20.347512],[15.513875,16.295187],
[15.513875,-17.897312],[6.347625,-17.897312],
[6.347625,-33.411062],[15.498875,-33.411062],
[15.498875,-48.491062],[30.811375,-48.491062],
[30.811375,-33.192312],[47.698875,-33.192312],
[47.698875,-17.897312]]);
var sept = polygon([
[61.913000,-33.192688],[61.913000,-17.897688],
[99.936750,-17.897688],[77.894250,48.491062],
[93.123000,48.491062],[115.235500,-19.353938],
[115.235500,-33.192688]]);
return union(slash,u,t,sept).mirroredX();
}
function marquage() {
return linear_extrude({height:BIG},
logo_ut7().scale(0.1))
.rotateZ(180)
.rotateY(90)
.subtract(cylinder({h:BIG,r:dCorps/2,center:true,fn:fn})
.translate([-pMarquage,0,0]))
.translate([0,0,hTotal/2]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment