Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
7ff4d83feThis 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]*/
// Version of multiconnect (dimple or snap)
multiConnectVersion = "v2"; // [v1, v2]
//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])
union(){
difference() {
// Main half slot
linear_extrude(height = totalHeight+1)
polygon(points = slotProfile);
// Snap cutout
if (slotQuickRelease == false && multiConnectVersion == "v2")
translate(v= [10.15,0,0])
rotate(a= [-90,0,0])
linear_extrude(height = 5) // match slot height (5mm)
polygon(points = [[0,0],[-0.4,0],[0,-8]]); // triangle polygon with multiconnect v2 specs
}
mirror([1,0,0])
difference() {
// Main half slot
linear_extrude(height = totalHeight+1)
polygon(points = slotProfile);
// Snap cutout
if (slotQuickRelease == false && multiConnectVersion == "v2")
translate(v= [10.15,0,0])
rotate(a= [-90,0,0])
linear_extrude(height = 5) // match slot height (5mm)
polygon(points = [[0,0],[-0.4,0],[0,-8]]); // triangle polygon with multiconnect v2 spec
}
}
//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 && multiConnectVersion == "v1")
scale(v = dimpleScale)
rotate(a = [90,0,0,])
rotate_extrude($fn=50)
polygon(points = [[0,0],[0,1.5],[1.5,0]]);
}
}
}