Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
/*This file is the master copy of the multiconnect slot back.
All components of this file are required in any file using this backer
*/
totalWidth = 50;
totalHeight = 75;
/*[Slot Customization]*/
//Distance between Multiconnect slots on the back (25mm is standard for MultiBoard)
distanceBetweenSlots = 25;
//QuickRelease removes the small indent in the top of the slots that lock the part into place
slotQuickRelease = false;
//Dimple scale tweaks the size of the dimple in the slot for printers that need a larger dimple to print correctly
dimpleScale = 1; //[0.5:.05:1.5]
//Scale the size of slots in the back (1.015 scale is default for a tight fit. Increase if your finding poor fit. )
slotTolerance = 1.00; //[0.925:0.005:1.075]
//Move the slot in (positive) or out (negative)
slotDepthMicroadjustment = 0; //[-.5:0.05:.5]
//enable a slot on-ramp for easy mounting of tall items
onRampEnabled = true;
//frequency of slots for on-ramp. 1 = every slot; 2 = every 2 slots; etc.
onRampEveryXSlots = 1;
/* [Hidden] */
multiconnectBack(backWidth = totalWidth, backHeight = totalHeight, distanceBetweenSlots = distanceBetweenSlots);
//BEGIN MODULES
//Slotted back Module
module multiconnectBack(backWidth, backHeight, distanceBetweenSlots)
{
//slot count calculates how many slots can fit on the back. Based on internal width for buffer.
//slot width needs to be at least the distance between slot for at least 1 slot to generate
let (backWidth = max(backWidth,distanceBetweenSlots), backHeight = max(backHeight, 25),slotCount = floor(backWidth/distanceBetweenSlots), backThickness = 6.5){
difference() {
translate(v = [0,-backThickness,0]) cube(size = [backWidth,backThickness,backHeight]);
//Loop through slots and center on the item
//Note: I kept doing math until it looked right. It's possible this can be simplified.
for (slotNum = [0:1:slotCount-1]) {
translate(v = [distanceBetweenSlots/2+(backWidth/distanceBetweenSlots-slotCount)*distanceBetweenSlots/2+slotNum*distanceBetweenSlots,-2.35+slotDepthMicroadjustment,backHeight-13]) {
color(c = "red") slotTool(backHeight);
}
}
}
}
//Create Slot Tool
module slotTool(totalHeight) {
scale(v = slotTolerance)
//slot minus optional dimple with optional on-ramp
let (slotProfile = [[0,0],[10.15,0],[10.15,1.2121],[7.65,3.712],[7.65,5],[0,5]])
difference() {
union() {
//round top
rotate(a = [90,0,0,])
rotate_extrude($fn=50)
polygon(points = slotProfile);
//long slot
translate(v = [0,0,0])
rotate(a = [180,0,0])
linear_extrude(height = totalHeight+1)
union(){
polygon(points = slotProfile);
mirror([1,0,0])
polygon(points = slotProfile);
}
//on-ramp
if(onRampEnabled)
for(y = [1:onRampEveryXSlots:totalHeight/distanceBetweenSlots])
translate(v = [0,-5,-y*distanceBetweenSlots])
rotate(a = [-90,0,0])
color(c = "orange") cylinder(h = 5, r1 = 12, r2 = 10.15);
}
//dimple
if (slotQuickRelease == false)
scale(v = dimpleScale)
rotate(a = [90,0,0,])
rotate_extrude($fn=50)
polygon(points = [[0,0],[0,1.5],[1.5,0]]);
}
}
}b8959f8e5This file is pinned to the selected release. Download the original to open it in your design tool.