refactor
This commit is contained in:
111
rack/stackConnector.scad
Normal file
111
rack/stackConnector.scad
Normal file
@ -0,0 +1,111 @@
|
||||
include <../helper/math.scad>
|
||||
include <../misc/magnet.scad>
|
||||
include <../helper/common.scad>
|
||||
|
||||
connectorTaperStartHeight = 2;
|
||||
connectorRectWidth = 10;
|
||||
connectorRectDepth = 10;
|
||||
|
||||
connectorTotalHeight = 5;
|
||||
|
||||
connectorRectPlugSlack = -0.1;
|
||||
connectorRectSocketSlack = 0.1;
|
||||
|
||||
connectorSocketMagnetExtrudeHeight = 1;
|
||||
|
||||
module stackConnectorBase(rectSlack) {
|
||||
|
||||
_wSlacked = connectorRectWidth + rectSlack;
|
||||
_dSlacked = connectorRectDepth + rectSlack;
|
||||
|
||||
module connRect() {
|
||||
linear_extrude(height=eps)
|
||||
square(size = [_wSlacked, _dSlacked]);
|
||||
}
|
||||
|
||||
module connMagnetMount() {
|
||||
linear_extrude(height=eps)
|
||||
circle(r=magnetRSlacked);
|
||||
}
|
||||
|
||||
hull() {
|
||||
connRect();
|
||||
|
||||
translate(v=[0,0,connectorTaperStartHeight])
|
||||
connRect();
|
||||
}
|
||||
|
||||
hull() {
|
||||
translate(v = [0, 0, connectorTaperStartHeight])
|
||||
connRect();
|
||||
|
||||
translate(v=[_wSlacked/2, _dSlacked/2, connectorTotalHeight])
|
||||
connMagnetMount();
|
||||
}
|
||||
}
|
||||
|
||||
module stackConnectorPlug() {
|
||||
assert(magnetHSlacked > connectorSocketMagnetExtrudeHeight);
|
||||
|
||||
_wSlacked = connectorRectWidth + connectorRectPlugSlack;
|
||||
_dSlacked = connectorRectDepth + connectorRectPlugSlack;
|
||||
|
||||
magnetLevelHeight = connectorTotalHeight - (magnetHSlacked - connectorSocketMagnetExtrudeHeight);
|
||||
|
||||
difference() {
|
||||
|
||||
intersection() {
|
||||
stackConnectorBase(connectorRectPlugSlack);
|
||||
cube(size=[_dSlacked, _wSlacked, magnetLevelHeight]);
|
||||
}
|
||||
|
||||
translate(v = [_wSlacked/2, _dSlacked/2, magnetLevelHeight - magnetHSlacked])
|
||||
cylinder(r = magnetRSlacked, h = magnetHSlacked);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module stackConnectorSocket_N() {
|
||||
|
||||
_wSlacked = connectorRectWidth + connectorRectSocketSlack;
|
||||
_dSlacked = connectorRectDepth + connectorRectSocketSlack;
|
||||
|
||||
_bevelSlack = 0.5;
|
||||
_bevelR = _wSlacked + _bevelSlack;
|
||||
_bevelW = _dSlacked + _bevelSlack;
|
||||
_bevelH = 0.5;
|
||||
|
||||
|
||||
stackConnectorBase(connectorRectSocketSlack);
|
||||
|
||||
translate(v=[_wSlacked/2, _wSlacked/2, connectorTotalHeight - connectorSocketMagnetExtrudeHeight])
|
||||
cylinder(r=magnetRSlacked, h=magnetHSlacked);
|
||||
|
||||
// bevel at the lip of the socket to guide the plug, as well as mitigate elephant foot during 3d printing
|
||||
hull() {
|
||||
translate(v=[0,0,_bevelH])
|
||||
linear_extrude(height=eps)
|
||||
square(size = [_wSlacked, _dSlacked]);
|
||||
|
||||
translate(v=[-_bevelSlack/2, -_bevelSlack/2, 0])
|
||||
linear_extrude(height=eps)
|
||||
square(size = [_bevelR, _bevelW]);
|
||||
}
|
||||
}
|
||||
|
||||
module test() {
|
||||
difference() {
|
||||
union() {
|
||||
translate(v = [-2.5, -2.5, 0])
|
||||
cube(size = [15, 15, 10]);
|
||||
|
||||
translate(v = [0, 0, 10])
|
||||
stackConnectorPlug();
|
||||
}
|
||||
|
||||
stackConnectorSocket_N();
|
||||
}
|
||||
}
|
||||
|
||||
*test();
|
||||
|
||||
Reference in New Issue
Block a user