* helper/keystone: rewrite completely * rack-mount/patch-panel: edit to adapt to the new keystone * helper/keystone: fill the lug-side opening * rack-mount/patch-panel: allow combining two types of keystones and plates freely * rack-mount/patch-panel/entry: apply suggestions Co-authored-by: Zhao (Jack) Wang <jazwang@proton.me> * rack-mount/patch-panel: fix animate.scad & regen gif --------- Co-authored-by: Zhao (Jack) Wang <jazwang@proton.me>
59 lines
1.9 KiB
OpenSCAD
59 lines
1.9 KiB
OpenSCAD
include <../config/common.scad>
|
|
|
|
// rj45 slot-to-slot keystone jack model and negative
|
|
keystoneMainBodyWidth = 15.0;
|
|
keystoneMainBodyHeight = 16.90;
|
|
keystoneMainBodyDepth = 32.90;
|
|
|
|
heightWithHookBody = 20.2;
|
|
heightWithHookCatch = 21.30;
|
|
widthWithSideLugs = 15.96;
|
|
sideLugWidth = (widthWithSideLugs - keystoneMainBodyWidth) / 2.0;
|
|
|
|
heightWithBottomLug = 17.5;
|
|
|
|
frontToHookCatch = 8.35;
|
|
frontToBottomLugBack = 8.23;
|
|
frontToSideLugFront = 10.63;
|
|
|
|
module rj45Keystone() {
|
|
// main keystone body (no hooks or lugs)
|
|
cube(size=[keystoneMainBodyWidth + xySlack, keystoneMainBodyDepth + xySlack, keystoneMainBodyHeight]);
|
|
|
|
// slot for top hook
|
|
translate(v=[0,frontToHookCatch,0])
|
|
cube(size=[keystoneMainBodyWidth + xySlack, keystoneMainBodyDepth-frontToHookCatch + xySlack, heightWithHookBody]);
|
|
|
|
cube(size=[keystoneMainBodyWidth + xySlack, frontToHookCatch + xySlack, heightWithHookCatch]);
|
|
|
|
// slots for side lugs
|
|
translate(v=[-sideLugWidth, frontToSideLugFront,0])
|
|
cube(size=[widthWithSideLugs + xySlack, keystoneMainBodyDepth-frontToSideLugFront + xySlack, keystoneMainBodyHeight]);
|
|
|
|
// slots for bottom lugs
|
|
translate(v=[0,0,-(heightWithBottomLug-keystoneMainBodyHeight)])
|
|
cube(size=[keystoneMainBodyWidth + xySlack, frontToBottomLugBack + xySlack, keystoneMainBodyHeight]);
|
|
|
|
}
|
|
|
|
module rj45KeystoneJack_N() {
|
|
translate(v=[0,-4,0.5]) // why?
|
|
intersection() {
|
|
translate(v=[-2.5,4,-4])
|
|
cube(size=[20,6,28]);
|
|
rj45Keystone();
|
|
}
|
|
}
|
|
|
|
module keystone1(outerWidth, outerHeight) {
|
|
rotate([0, 0, 180]) // To keep the same direction with keystone2
|
|
difference() {
|
|
translate([0, 0, 5.9 / 2])
|
|
cube([outerWidth, outerHeight, 5.9], center = true);
|
|
|
|
translate([-(keystoneMainBodyWidth + xySlack) / 2, (heightWithHookCatch + heightWithBottomLug - keystoneMainBodyHeight) / 2, 0])
|
|
rotate([90, 0, 0])
|
|
rj45KeystoneJack_N();
|
|
}
|
|
}
|