This commit is contained in:
zhao
2023-02-25 13:19:27 -08:00
parent 97a5783d0d
commit 8d3f205f6d
11 changed files with 174 additions and 75 deletions

View File

@ -2,25 +2,23 @@ include <../helper/math.scad>
include <../helper/common.scad>
include <../misc/magnet.scad>
connectorTaperStartHeight = 2;
connectorRectWidth = 10;
connectorRectDepth = 10;
connectorTotalHeight = 5;
connectorSocketMagnetExtrudeHeight = 1;
connectorTaperStartHeight = 2;
connectorRectPlugSlack = -0.1;
connectorRectSocketSlack = 0.1;
connectorSocketMagnetExtrudeHeight = 1;
module stackConnectorBase(rectSlack) {
_wSlacked = connectorRectWidth + rectSlack;
_dSlacked = connectorRectDepth + rectSlack;
wSlacked = connectorRectWidth + rectSlack;
dSlacked = connectorRectDepth + rectSlack;
module connRect() {
linear_extrude(height=eps)
square(size = [_wSlacked, _dSlacked]);
square(size = [wSlacked, dSlacked]);
}
module connMagnetMount() {
@ -39,7 +37,7 @@ module stackConnectorBase(rectSlack) {
translate(v = [0, 0, connectorTaperStartHeight])
connRect();
translate(v=[_wSlacked/2, _dSlacked/2, connectorTotalHeight])
translate(v=[wSlacked/2, dSlacked/2, connectorTotalHeight])
connMagnetMount();
}
}
@ -47,8 +45,8 @@ module stackConnectorBase(rectSlack) {
module stackConnectorPlug() {
assert(magnetHSlacked > connectorSocketMagnetExtrudeHeight);
_wSlacked = connectorRectWidth + connectorRectPlugSlack;
_dSlacked = connectorRectDepth + connectorRectPlugSlack;
wSlacked = connectorRectWidth + connectorRectPlugSlack;
dSlacked = connectorRectDepth + connectorRectPlugSlack;
magnetLevelHeight = connectorTotalHeight - (magnetHSlacked - connectorSocketMagnetExtrudeHeight);
@ -56,10 +54,10 @@ module stackConnectorPlug() {
intersection() {
stackConnectorBase(connectorRectPlugSlack);
cube(size=[_dSlacked, _wSlacked, magnetLevelHeight]);
cube(size=[dSlacked, wSlacked, magnetLevelHeight]);
}
translate(v = [_wSlacked/2, _dSlacked/2, magnetLevelHeight - magnetHSlacked])
translate(v = [wSlacked/2, dSlacked/2, magnetLevelHeight - magnetHSlacked])
cylinder(r = magnetRSlacked, h = magnetHSlacked);
}
@ -67,45 +65,27 @@ module stackConnectorPlug() {
module stackConnectorSocket_N() {
_wSlacked = connectorRectWidth + connectorRectSocketSlack;
_dSlacked = connectorRectDepth + connectorRectSocketSlack;
_bevelSlack = 0.5;
_bevelR = _wSlacked + _bevelSlack;
_bevelW = _dSlacked + _bevelSlack;
_bevelH = 0.5;
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])
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])
translate(v=[0,0,bevelH])
linear_extrude(height=eps)
square(size = [_wSlacked, _dSlacked]);
square(size = [wSlacked, dSlacked]);
translate(v=[-_bevelSlack/2, -_bevelSlack/2, 0])
translate(v=[-bevelSlack/2, -bevelSlack/2, 0])
linear_extrude(height=eps)
square(size = [_bevelR, _bevelW]);
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();